2020-08-18 22:50:24 -04:00
|
|
|
var canvas;
|
2020-08-25 18:42:43 -04:00
|
|
|
var ctx;
|
2020-08-18 22:50:24 -04:00
|
|
|
|
|
|
|
window.addEventListener("resize", (_=>resizeCanvas()));
|
|
|
|
|
|
|
|
function retrieveCanvasData() {
|
|
|
|
let treeCanv = document.getElementById("treeCanvas")
|
2020-08-25 18:42:43 -04:00
|
|
|
let treeTab = document.getElementById("treeTab")
|
2020-08-18 22:50:24 -04:00
|
|
|
if (treeCanv===undefined||treeCanv===null) return false;
|
|
|
|
canvas = treeCanv;
|
|
|
|
ctx = canvas.getContext("2d");
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
function resizeCanvas() {
|
|
|
|
if (!retrieveCanvasData()) return
|
|
|
|
canvas.width = 0;
|
|
|
|
canvas.height = 0;
|
2020-10-27 22:04:16 -04:00
|
|
|
canvas.width = window.innerWidth;
|
|
|
|
canvas.height = window.innerHeight;
|
|
|
|
drawTree();
|
2020-08-18 22:50:24 -04:00
|
|
|
}
|
|
|
|
|
2021-06-06 23:45:32 -04:00
|
|
|
|
2020-09-14 15:26:10 -04:00
|
|
|
var colors_theme
|
2020-09-07 10:16:04 -04:00
|
|
|
|
2020-08-18 22:50:24 -04:00
|
|
|
function drawTree() {
|
|
|
|
if (!retrieveCanvasData()) return;
|
|
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
2020-09-24 11:54:41 -04:00
|
|
|
for (layer in layers){
|
2020-11-07 15:29:39 -05:00
|
|
|
if (tmp[layer].layerShown == true && tmp[layer].branches){
|
2020-10-15 21:02:05 -04:00
|
|
|
for (branch in tmp[layer].branches)
|
2020-09-24 11:54:41 -04:00
|
|
|
{
|
2020-10-15 21:02:05 -04:00
|
|
|
drawTreeBranch(layer, tmp[layer].branches[branch])
|
2020-09-24 11:54:41 -04:00
|
|
|
}
|
|
|
|
}
|
2021-06-03 13:02:47 -04:00
|
|
|
for(id in layers[layer].upgrades) {
|
|
|
|
if (tmp[layer].upgrades[id].branches) {
|
|
|
|
for (branch in tmp[layer].upgrades[id].branches)
|
|
|
|
{
|
|
|
|
drawTreeBranch(id, tmp[layer].upgrades[id].branches[branch], "upgrade-" + layer + "-")
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
2020-08-18 22:50:24 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-06-03 13:02:47 -04:00
|
|
|
function drawTreeBranch(num1, data, prefix) { // taken from Antimatter Dimensions & adjusted slightly
|
2020-10-08 20:35:08 -04:00
|
|
|
let num2 = data
|
|
|
|
let color_id = 1
|
2021-06-07 00:13:18 -04:00
|
|
|
let width = 15
|
2020-10-08 20:35:08 -04:00
|
|
|
if (Array.isArray(data)){
|
|
|
|
num2 = data[0]
|
|
|
|
color_id = data[1]
|
2021-06-07 00:13:18 -04:00
|
|
|
width = data[2] || width
|
2020-10-08 20:35:08 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
if(typeof(color_id) == "number")
|
|
|
|
color_id = colors_theme[color_id]
|
2021-06-03 13:02:47 -04:00
|
|
|
if (prefix) {
|
|
|
|
num1 = prefix + num1
|
|
|
|
num2 = prefix + num2
|
|
|
|
}
|
2020-09-24 11:54:41 -04:00
|
|
|
if (document.getElementById(num1) == null || document.getElementById(num2) == null)
|
|
|
|
return
|
|
|
|
|
|
|
|
let start = document.getElementById(num1).getBoundingClientRect();
|
2020-08-18 22:50:24 -04:00
|
|
|
let end = document.getElementById(num2).getBoundingClientRect();
|
2020-11-08 17:53:40 -05:00
|
|
|
let x1 = start.left + (start.width / 2) + document.body.scrollLeft;
|
|
|
|
let y1 = start.top + (start.height / 2) + document.body.scrollTop;
|
|
|
|
let x2 = end.left + (end.width / 2) + document.body.scrollLeft;
|
|
|
|
let y2 = end.top + (end.height / 2) + document.body.scrollTop;
|
2021-06-07 00:13:18 -04:00
|
|
|
ctx.lineWidth = width;
|
2020-08-18 22:50:24 -04:00
|
|
|
ctx.beginPath();
|
2020-10-08 20:35:08 -04:00
|
|
|
ctx.strokeStyle = color_id
|
2020-08-18 22:50:24 -04:00
|
|
|
ctx.moveTo(x1, y1);
|
|
|
|
ctx.lineTo(x2, y2);
|
|
|
|
ctx.stroke();
|
2021-06-06 23:45:32 -04:00
|
|
|
}
|