From 22dd3d6b44e1e0a4ce9a344fee5c4a5204124678 Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Sat, 13 Nov 2021 16:24:00 -0500 Subject: [PATCH] Add D&D height lines Also fixes the altitudes showing up closer to the ground when the ground was raised up --- macrovision.js | 65 +++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/macrovision.js b/macrovision.js index 9eac7577..6ed3492e 100644 --- a/macrovision.js +++ b/macrovision.js @@ -710,19 +710,7 @@ function updateSizes(dirtyOnly = false) { updateInfo(); if (config.lockYAxis) { - if (config.groundPos === "very-high") { - config.y = -config.height.toNumber("meters") / 12 * 5; - } else if (config.groundPos === "high") { - config.y = -config.height.toNumber("meters") / 12 * 4; - } else if (config.groundPos === "medium") { - config.y = -config.height.toNumber("meters") / 12 * 3; - } else if (config.groundPos === "low") { - config.y = -config.height.toNumber("meters") / 12 * 2; - } else if (config.groundPos === "very-low") { - config.y = -config.height.toNumber("meters") / 12; - } else { - config.y = 0; - } + config.y = -getVerticalOffset(); } drawScales(dirtyOnly); @@ -933,7 +921,8 @@ function drawVerticalScale(ifDirty = false) { function drawAltitudeLine(ctx, height, label) { const pixelScale = (ctx.canvas.clientHeight - 100) / config.height.toNumber("meters"); const y = ctx.canvas.clientHeight - 50 - (height.toNumber("meters") - config.y) * pixelScale; - if (y < ctx.canvas.clientHeight - 100) { + const offsetY = y + getVerticalOffset() * pixelScale; + if (offsetY < ctx.canvas.clientHeight - 100) { drawTick(ctx, 50, y, label, true); } } @@ -1081,6 +1070,18 @@ function drawVerticalScale(ifDirty = false) { drawAltitudeLine(ctx, math.unit(84.80, "meters"), "Hammer Throw"); drawAltitudeLine(ctx, math.unit(90.57, "meters"), "Javelin Throw"); } + + if (config.drawAltitudes == "d&d-sizes" || config.drawAltitudes == "all") { + drawAltitudeLine(ctx, math.unit(0.375, "feet"), "Fine"); + drawAltitudeLine(ctx, math.unit(0.75, "feet"), "Dimnutive"); + drawAltitudeLine(ctx, math.unit(1.5, "feet"), "Tiny"); + drawAltitudeLine(ctx, math.unit(3, "feet"), "Small"); + drawAltitudeLine(ctx, math.unit(6, "feet"), "Medium"); + drawAltitudeLine(ctx, math.unit(12, "feet"), "Large"); + drawAltitudeLine(ctx, math.unit(24, "feet"), "Huge"); + drawAltitudeLine(ctx, math.unit(48, "feet"), "Gargantuan"); + drawAltitudeLine(ctx, math.unit(96, "feet"), "Colossal"); + } } // this is a lot of copypizza... @@ -2641,6 +2642,7 @@ const settingsData = { "airspaces", "races", "olympic-records", + "d&d-sizes" ], get value() { return config.drawAltitudes; @@ -4377,24 +4379,7 @@ function prepareEntities() { let yOffset = 0; if (config.lockYAxis) { - if (config.groundPos === "very-high") { - yOffset = config.height.toNumber("meters") / 12 * 5; - } - else if (config.groundPos === "high") { - yOffset = config.height.toNumber("meters") / 12 * 4; - } - else if (config.groundPos === "medium") { - yOffset = config.height.toNumber("meters") / 12 * 3; - } - else if (config.groundPos === "low") { - yOffset = config.height.toNumber("meters") / 12 * 2; - } - else if (config.groundPos === "very-low") { - yOffset = config.height.toNumber("meters") / 12 * 1; - } - else if (config.groundPos === "bottom") { - yOffset = 0; - } + yOffset = getVerticalOffset(); } else { yOffset = (config.lockYAxis ? 0 : config.height.toNumber("meters")/2); } @@ -5284,3 +5269,19 @@ function panTo(x, y, height, xSpeed, ySpeed, heightSpeed, timestamp, remaining) config.height = math.unit(newHeight, "meters"); updateSizes(); } + +function getVerticalOffset() { + if (config.groundPos === "very-high") { + return config.height.toNumber("meters") / 12 * 5; + } else if (config.groundPos === "high") { + return config.height.toNumber("meters") / 12 * 4; + } else if (config.groundPos === "medium") { + return config.height.toNumber("meters") / 12 * 3; + } else if (config.groundPos === "low") { + return config.height.toNumber("meters") / 12 * 2; + } else if (config.groundPos === "very-low") { + return config.height.toNumber("meters") / 12; + } else { + return 0; + } +} \ No newline at end of file