From cfa4e6cf33db55e04628d1227d9a6245cb702117 Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Tue, 11 Feb 2020 16:02:32 -0500 Subject: [PATCH] Default to showing all characters under 1km in height --- macrovision.js | 21 +++++++++++++++++++-- presets/characters.js | 17 +++++++++++------ 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/macrovision.js b/macrovision.js index e09fd93e..6fb36141 100644 --- a/macrovision.js +++ b/macrovision.js @@ -640,8 +640,12 @@ function displayEntity(entity, view, x, y) { } document.addEventListener("DOMContentLoaded", () => { - const stuff = [makeFen].concat(makeBuildings().map(x => x.constructor)) + prepareEntities(); + const stuff = availableEntities.characters.map(x => x.constructor).filter(x => { + const result = x(); + return result.views[result.defaultView].height.toNumber("meters") < 1000; + }) let x = 0.2; stuff.forEach(entity => { @@ -649,6 +653,20 @@ document.addEventListener("DOMContentLoaded", () => { x += 0.7 / stuff.length; }) + + + const order = Object.keys(entities).sort((a, b) => { + const entA = entities[a]; + const entB = entities[b]; + const viewA = document.querySelector("#entity-" + a).dataset.view; + const viewB = document.querySelector("#entity-" + b).dataset.view; + const heightA = entA.views[viewA].height.to("meter").value; + const heightB = entB.views[viewB].height.to("meter").value; + return heightA - heightB; + }); + + arrangeEntities(order); + fitWorld(); window.addEventListener("wheel", e => { const dir = e.deltaY < 0 ? 0.9 : 1.1; @@ -735,7 +753,6 @@ document.addEventListener("DOMContentLoaded", () => { } } }) - prepareEntities(); }); function prepareEntities() { diff --git a/presets/characters.js b/presets/characters.js index 311ef2fc..ca574854 100644 --- a/presets/characters.js +++ b/presets/characters.js @@ -1,3 +1,5 @@ +const characterMakers = []; + function makeCharacter(name, author, viewInfo, defaultSizes) { views = {}; console.log(viewInfo) @@ -36,7 +38,7 @@ function makeCharacter(name, author, viewInfo, defaultSizes) { return entity; } -function makeFen() { +characterMakers["Fen"] = () => { return makeCharacter( "Fen", "chemicalcrux", @@ -69,7 +71,7 @@ function makeFen() { } ] ) -} +}; function makeSofia() { const views = { @@ -1067,10 +1069,6 @@ function makeMan() { function makeCharacters() { const results = []; - results.push({ - name: "Fen", - constructor: makeFen - }); results.push({ name: "Sofia", constructor: makeSofia @@ -1147,5 +1145,12 @@ function makeCharacters() { name: "Normal man", constructor: makeMan }); + + Object.entries(characterMakers).forEach(([key, value]) => { + results.push({ + name: key, + constructor: value + }); + }); return results; } \ No newline at end of file