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

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();

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;
}
}

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