From 520b5747f76a5e6161f57758f669b365b98f7164 Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Tue, 11 Feb 2020 16:40:21 -0500 Subject: [PATCH] Set z-orders so that larger entities are behind smaller entities --- macrovision.js | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/macrovision.js b/macrovision.js index 6fb36141..03625493 100644 --- a/macrovision.js +++ b/macrovision.js @@ -75,7 +75,7 @@ function abs2rel(coords) { return { x: (coords.x - 50) / canvasWidth, y: coords.y / canvasHeight }; } -function updateEntityElement(entity, element) { +function updateEntityElement(entity, element, zIndex) { const position = rel2abs({ x: element.dataset.x, y: element.dataset.y }); const view = element.dataset.view; @@ -93,14 +93,30 @@ function updateEntityElement(entity, element) { bottomName.style.left = position.x + entX + "px"; bottomName.style.top = "95vh"; bottomName.innerText = entity.name; + + if (zIndex) { + element.style.zIndex = zIndex; + } } function updateSizes() { drawScale(); - Object.entries(entities).forEach(([key, entity]) => { - const element = document.querySelector("#entity-" + key); - updateEntityElement(entity, element); + + let ordered = Object.entries(entities); + + ordered.sort((e1, e2) => { + return e1[1].views[e1[1].view].height.toNumber("meters") - e2[1].views[e2[1].view].height.toNumber("meters") }); + + let zIndex = ordered.length; + + ordered.forEach(entity => { + const element = document.querySelector("#entity-" + entity[0]); + updateEntityElement(entity[1], element, zIndex); + zIndex -= 1; + }); + + } function drawScale() { @@ -615,6 +631,7 @@ function displayEntity(entity, view, x, y) { box.id = "entity-" + entityIndex; box.dataset.key = entityIndex; box.dataset.view = view; + entity.view = view; entities[entityIndex] = entity; entity.index = entityIndex; @@ -700,7 +717,8 @@ document.addEventListener("DOMContentLoaded", () => { }); document.querySelector("#entity-view").addEventListener("input", e => { - selected.dataset.view = e.target.value + selected.dataset.view = e.target.value; + entities[selected.dataset.view].view = e.target.value; const image = entities[selected.dataset.key].views[e.target.value].image selected.querySelector(".entity-image").src = image.source; @@ -745,7 +763,6 @@ document.addEventListener("DOMContentLoaded", () => { }); document.addEventListener("keydown", e => { - console.log(e) if (e.key == "Delete") { if (selected) { removeEntity(selected);