From 791e6f2ec897c2f6491a8bc91b1b2ebd6adba0af Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Tue, 25 Feb 2020 11:02:12 -0500 Subject: [PATCH] Add coins. Allow views to override names. Fix weights not working for objects --- macrovision.js | 8 ++++++- media/attribution.js | 1 + media/objects/circle.svg | 10 ++++++++ presets/objects.js | 49 ++++++++++++++++++++++++++++++++++++++-- 4 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 media/objects/circle.svg diff --git a/macrovision.js b/macrovision.js index f17e9e3b..e627f775 100644 --- a/macrovision.js +++ b/macrovision.js @@ -98,6 +98,9 @@ function updateEntityElement(entity, element, zIndex) { const bonus = (entity.views[view].image.extra ? entity.views[view].image.extra : 1); element.style.setProperty("--height", pixels * bonus + "px"); + if (entity.views[view].rename) + element.querySelector(".entity-name").innerText = entity.name == "" ? "" : entity.views[view].name; + else element.querySelector(".entity-name").innerText = entity.name; const bottomName = document.querySelector("#bottom-name-" + element.dataset.key); @@ -570,6 +573,7 @@ function updateViewOptions(entity, view, changed) { if (key != changed) { const input = document.querySelector("#options-view-" + key + "-input"); const select = document.querySelector("#options-view-" + key + "-select"); + const currentUnit = select.value; const convertedAmount = entity.views[view][key].toNumber(currentUnit); input.value = math.round(convertedAmount, 5); @@ -946,7 +950,9 @@ document.addEventListener("DOMContentLoaded", () => { }); document.querySelector("#entity-view").addEventListener("input", e => { - entities[selected.dataset.key].view = e.target.value; + const entity = entities[selected.dataset.key]; + entity.view = e.target.value; + const image = entities[selected.dataset.key].views[e.target.value].image; selected.querySelector(".entity-image").src = image.source; diff --git a/media/attribution.js b/media/attribution.js index c7b83248..3ecf3345 100644 --- a/media/attribution.js +++ b/media/attribution.js @@ -565,6 +565,7 @@ const attributionData = { { name: "nail-polish.svg", source: null }, { name: "shot-glass.svg", source: null }, { name: "beer-bottle.svg", source: null }, + { name: "circle.svg", source: null } ], authors: [ "chemicalcrux" diff --git a/media/objects/circle.svg b/media/objects/circle.svg new file mode 100644 index 00000000..c6afac5a --- /dev/null +++ b/media/objects/circle.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/presets/objects.js b/presets/objects.js index 937f3f88..36bbe8b6 100644 --- a/presets/objects.js +++ b/presets/objects.js @@ -12,11 +12,12 @@ function makeObject(name, viewInfo) { } }, image: value.image, - name: value.name + name: value.name, + rename: value.rename } if (value.mass) { - views[key].attributes[key] = { + views[key].attributes.mass = { name: "Mass", power: 3, type: "mass", @@ -145,6 +146,50 @@ function makeObjects() { } ) }); + + results.push({ + name: "Coin", + constructor: () => makeObject( + "Coin", + { + penny: { + height: math.unit(0.75, "inches"), + mass: math.unit(2.5, "g"), + image: { source: "./media/objects/circle.svg" }, + name: "Penny", + rename: true + }, + nickel: { + height: math.unit(0.835, "inches"), + mass: math.unit(5, "g"), + image: { source: "./media/objects/circle.svg" }, + name: "Nickel", + rename: true + }, + dime: { + height: math.unit(0.705, "inches"), + mass: math.unit(2.268, "g"), + image: { source: "./media/objects/circle.svg" }, + name: "Dime", + rename: true + }, + quarter: { + height: math.unit(0.955, "inches"), + mass: math.unit(5.67, "g"), + image: { source: "./media/objects/circle.svg" }, + name: "Quarter", + rename: true + }, + dollar: { + height: math.unit(1.043, "inches"), + mass: math.unit(8.1, "g"), + image: { source: "./media/objects/circle.svg" }, + name: "Dollar Coin", + rename: true + }, + } + ) + }); results.sort((b1, b2) => { e1 = b1.constructor();