1
0
Fork 0
mirror of https://github.com/Acamaeda/The-Modding-Tree.git synced 2024-11-22 16:35:43 +00:00
The-Modding-Tree/js/technical/layerSupport.js

216 lines
7.4 KiB
JavaScript
Raw Normal View History

2020-10-03 19:45:47 +00:00
var layers = {}
2020-10-27 21:41:35 +00:00
const decimalZero = new Decimal(0)
const decimalOne = new Decimal(1)
const decimalNaN = new Decimal(NaN)
2020-10-03 19:45:47 +00:00
function layerShown(layer){
return layers[layer].layerShown();
}
var LAYERS = Object.keys(layers);
var hotkeys = {};
2020-10-21 17:03:39 +00:00
var maxRow = 0;
2020-10-03 19:45:47 +00:00
function updateHotkeys()
{
hotkeys = {};
for (layer in layers){
hk = layers[layer].hotkeys
if (hk){
for (id in hk){
hotkeys[hk[id].key] = hk[id]
hotkeys[hk[id].key].layer = layer
}
}
}
}
var ROW_LAYERS = {}
2020-10-11 03:26:26 +00:00
var TREE_LAYERS = {}
2020-10-14 23:34:15 +00:00
var OTHER_LAYERS = {}
2020-10-03 19:45:47 +00:00
function updateLayers(){
LAYERS = Object.keys(layers);
ROW_LAYERS = {}
2020-10-11 03:26:26 +00:00
TREE_LAYERS = {}
OTHER_LAYERS = {}
2020-10-03 19:45:47 +00:00
for (layer in layers){
layers[layer].layer = layer
if (layers[layer].upgrades){
for (thing in layers[layer].upgrades){
if (!isNaN(thing)){
layers[layer].upgrades[thing].id = thing
layers[layer].upgrades[thing].layer = layer
if (layers[layer].upgrades[thing].unlocked === undefined)
layers[layer].upgrades[thing].unlocked = true
2020-10-03 19:45:47 +00:00
}
}
}
if (layers[layer].milestones){
for (thing in layers[layer].milestones){
if (!isNaN(thing)){
layers[layer].milestones[thing].id = thing
layers[layer].milestones[thing].layer = layer
if (layers[layer].milestones[thing].unlocked === undefined)
layers[layer].milestones[thing].unlocked = true
2020-10-03 19:45:47 +00:00
}
}
}
2020-10-15 01:43:16 +00:00
if (layers[layer].achievements){
for (thing in layers[layer].achievements){
if (!isNaN(thing)){
layers[layer].achievements[thing].id = thing
layers[layer].achievements[thing].layer = layer
if (layers[layer].achievements[thing].unlocked === undefined)
layers[layer].achievements[thing].unlocked = true
}
}
}
if (layers[layer].challenges){
for (thing in layers[layer].challenges){
2020-10-03 19:45:47 +00:00
if (!isNaN(thing)){
layers[layer].challenges[thing].id = thing
layers[layer].challenges[thing].layer = layer
if (layers[layer].challenges[thing].unlocked === undefined)
layers[layer].challenges[thing].unlocked = true
if (layers[layer].challenges[thing].completionLimit === undefined)
layers[layer].challenges[thing].completionLimit = 1
2020-10-11 20:42:32 +00:00
2020-10-03 19:45:47 +00:00
}
}
}
if (layers[layer].buyables){
layers[layer].buyables.layer = layer
for (thing in layers[layer].buyables){
if (!isNaN(thing)){
layers[layer].buyables[thing].id = thing
layers[layer].buyables[thing].layer = layer
if (layers[layer].buyables[thing].unlocked === undefined)
layers[layer].buyables[thing].unlocked = true
2020-10-03 19:45:47 +00:00
}
}
}
2020-10-11 20:16:36 +00:00
if (layers[layer].clickables){
layers[layer].clickables.layer = layer
for (thing in layers[layer].clickables){
if (!isNaN(thing)){
layers[layer].clickables[thing].id = thing
layers[layer].clickables[thing].layer = layer
if (layers[layer].clickables[thing].unlocked === undefined)
layers[layer].clickables[thing].unlocked = true
2020-10-11 20:16:36 +00:00
}
}
}
2020-10-12 22:28:12 +00:00
if (layers[layer].bars){
layers[layer].bars.layer = layer
for (thing in layers[layer].bars){
layers[layer].bars[thing].id = thing
layers[layer].bars[thing].layer = layer
if (layers[layer].bars[thing].unlocked === undefined)
layers[layer].bars[thing].unlocked = true
2020-10-25 22:21:02 +00:00
}
}
if (layers[layer].infoboxes){
for (thing in layers[layer].infoboxes){
layers[layer].infoboxes[thing].id = thing
layers[layer].infoboxes[thing].layer = layer
if (layers[layer].infoboxes[thing].unlocked === undefined)
layers[layer].infoboxes[thing].unlocked = true
2020-10-12 22:28:12 +00:00
}
}
if (layers[layer].startData) {
data = layers[layer].startData()
if (data.best !== undefined && data.showBest === undefined) layers[layer].showBest = true
if (data.total !== undefined && data.showTotal === undefined) layers[layer].showTotal = true
}
2020-10-12 22:28:12 +00:00
2020-10-07 20:41:45 +00:00
if(!layers[layer].componentStyles) layers[layer].componentStyles = {}
2020-10-11 03:26:26 +00:00
if(layers[layer].symbol === undefined) layers[layer].symbol = layer.charAt(0).toUpperCase() + layer.slice(1)
2020-10-21 20:14:42 +00:00
if(layers[layer].unlockOrder === undefined) layers[layer].unlockOrder = []
if(layers[layer].gainMult === undefined) layers[layer].gainMult = new Decimal(1)
if(layers[layer].gainExp === undefined) layers[layer].gainExp = new Decimal(1)
if(layers[layer].type === undefined) layers[layer].type = "none"
2020-10-26 03:00:32 +00:00
if(layers[layer].base === undefined || layers[layer].base <= 1) layers[layer].base = 2
2020-10-07 20:41:45 +00:00
2020-10-21 17:03:39 +00:00
let row = layers[layer].row
2020-10-03 19:45:47 +00:00
if(!ROW_LAYERS[row]) ROW_LAYERS[row] = {}
2020-10-14 23:34:15 +00:00
if(!TREE_LAYERS[row] && !isNaN(row)) TREE_LAYERS[row] = []
if(!OTHER_LAYERS[row] && isNaN(row)) OTHER_LAYERS[row] = []
2020-10-03 19:45:47 +00:00
ROW_LAYERS[row][layer]=layer;
2020-10-11 03:26:26 +00:00
let position = (layers[layer].position !== undefined ? layers[layer].position : layer)
2020-10-14 23:34:15 +00:00
if (!isNaN(row)) TREE_LAYERS[row].push({layer: layer, position: position})
else OTHER_LAYERS[row].push({layer: layer, position: position})
2020-10-21 17:03:39 +00:00
if (maxRow < layers[layer].row) maxRow = layers[layer].row
2020-10-11 03:26:26 +00:00
}
for (row in OTHER_LAYERS) {
OTHER_LAYERS[row].sort((a, b) => (a.position > b.position) ? 1 : -1)
2020-10-28 02:04:16 +00:00
for (layer in OTHER_LAYERS[row])
OTHER_LAYERS[row][layer] = OTHER_LAYERS[row][layer].layer
}
2020-10-11 03:26:26 +00:00
for (row in TREE_LAYERS) {
TREE_LAYERS[row].sort((a, b) => (a.position > b.position) ? 1 : -1)
2020-10-28 02:04:16 +00:00
for (layer in TREE_LAYERS[row])
TREE_LAYERS[row][layer] = TREE_LAYERS[row][layer].layer
2020-10-03 19:45:47 +00:00
}
2020-10-28 02:04:16 +00:00
let treeLayers2 = []
for (x = 0; x < maxRow + 1; x++) {
if (TREE_LAYERS[x]) treeLayers2.push(TREE_LAYERS[x])
}
TREE_LAYERS = treeLayers2
2020-10-03 19:45:47 +00:00
updateHotkeys()
}
function addLayer(layerName, layerData){ // Call this to add layers from a different file!
layers[layerName] = layerData
2020-10-28 02:04:16 +00:00
layers[layerName].isLayer = true
2020-10-03 19:45:47 +00:00
}
2020-10-28 02:04:16 +00:00
function addNode(layerName, layerData){ // Does the same thing
layers[layerName] = layerData
layers[layerName].isLayer = false
}
2020-10-03 19:45:47 +00:00
// If data is a function, return the result of calling it. Otherwise, return the data.
function readData(data, args=null){
if (!!(data && data.constructor && data.call && data.apply))
return data(args);
else
return data;
2020-10-09 03:13:15 +00:00
}
2020-10-11 03:26:26 +00:00
function someLayerUnlocked(row){
for (layer in ROW_LAYERS[row])
if (player[layer].unlocked)
2020-10-11 03:26:26 +00:00
return true
return false
}
2020-10-12 22:28:12 +00:00
2020-10-09 03:13:15 +00:00
// This isn't worth making a .ts file over
2020-10-12 22:28:12 +00:00
const UP = 0
const DOWN = 1
const LEFT = 2
const RIGHT = 3
2020-10-30 23:40:48 +00:00
addLayer("info-tab", {
tabFormat: ["info-tab"],
row: "otherside"
})
addLayer("options-tab", {
tabFormat: ["options-tab"],
row: "otherside"
})