Просмотр исходного кода

Add D&D height lines

Also fixes the altitudes showing up closer to the ground
when the ground was raised up
master
Fen Dweller 4 лет назад
Родитель
Сommit
22dd3d6b44
1 измененных файлов: 33 добавлений и 32 удалений
  1. +33
    -32
      macrovision.js

+ 33
- 32
macrovision.js Просмотреть файл

@@ -710,19 +710,7 @@ function updateSizes(dirtyOnly = false) {
updateInfo(); updateInfo();


if (config.lockYAxis) { 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); drawScales(dirtyOnly);
@@ -933,7 +921,8 @@ function drawVerticalScale(ifDirty = false) {
function drawAltitudeLine(ctx, height, label) { function drawAltitudeLine(ctx, height, label) {
const pixelScale = (ctx.canvas.clientHeight - 100) / config.height.toNumber("meters"); const pixelScale = (ctx.canvas.clientHeight - 100) / config.height.toNumber("meters");
const y = ctx.canvas.clientHeight - 50 - (height.toNumber("meters") - config.y) * pixelScale; 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); 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(84.80, "meters"), "Hammer Throw");
drawAltitudeLine(ctx, math.unit(90.57, "meters"), "Javelin 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... // this is a lot of copypizza...
@@ -2641,6 +2642,7 @@ const settingsData = {
"airspaces", "airspaces",
"races", "races",
"olympic-records", "olympic-records",
"d&d-sizes"
], ],
get value() { get value() {
return config.drawAltitudes; return config.drawAltitudes;
@@ -4377,24 +4379,7 @@ function prepareEntities() {
let yOffset = 0; let yOffset = 0;


if (config.lockYAxis) { 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 { } else {
yOffset = (config.lockYAxis ? 0 : config.height.toNumber("meters")/2); 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"); config.height = math.unit(newHeight, "meters");
updateSizes(); 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;
}
}

Загрузка…
Отмена
Сохранить