mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 09:41:24 +01:00
fix: don't redraw removed scaleBar
This commit is contained in:
parent
433152db06
commit
5ec59da7b7
6 changed files with 37 additions and 18 deletions
|
|
@ -7942,7 +7942,7 @@
|
||||||
<script src="libs/alea.min.js"></script>
|
<script src="libs/alea.min.js"></script>
|
||||||
<script src="modules/fonts.js?v=1.89.18"></script>
|
<script src="modules/fonts.js?v=1.89.18"></script>
|
||||||
<script src="modules/ui/layers.js?v=1.94.00"></script>
|
<script src="modules/ui/layers.js?v=1.94.00"></script>
|
||||||
<script src="modules/ui/measurers.js?v=1.94.02"></script>
|
<script src="modules/ui/measurers.js?v=1.94.03"></script>
|
||||||
<script src="modules/ui/stylePresets.js?v=1.94.00"></script>
|
<script src="modules/ui/stylePresets.js?v=1.94.00"></script>
|
||||||
|
|
||||||
<script src="modules/ui/general.js?v=1.94.01"></script>
|
<script src="modules/ui/general.js?v=1.94.01"></script>
|
||||||
|
|
@ -7982,8 +7982,8 @@
|
||||||
<script defer src="modules/ui/battle-screen.js"></script>
|
<script defer src="modules/ui/battle-screen.js"></script>
|
||||||
<script defer src="modules/ui/emblems-editor.js?v=1.91.00"></script>
|
<script defer src="modules/ui/emblems-editor.js?v=1.91.00"></script>
|
||||||
<script defer src="modules/ui/markers-editor.js"></script>
|
<script defer src="modules/ui/markers-editor.js"></script>
|
||||||
<script defer src="modules/ui/3d.js?v=1.93.11"></script>
|
<script defer src="modules/ui/3d.js?v=1.94.03"></script>
|
||||||
<script defer src="modules/ui/submap.js?v=1.94.02"></script>
|
<script defer src="modules/ui/submap.js?v=1.94.03"></script>
|
||||||
<script defer src="modules/ui/hotkeys.js?v=1.93.00"></script>
|
<script defer src="modules/ui/hotkeys.js?v=1.93.00"></script>
|
||||||
<script defer src="modules/coa-renderer.js?v=1.94.00"></script>
|
<script defer src="modules/coa-renderer.js?v=1.94.00"></script>
|
||||||
<script defer src="libs/rgbquant.min.js"></script>
|
<script defer src="libs/rgbquant.min.js"></script>
|
||||||
|
|
@ -7991,7 +7991,7 @@
|
||||||
<script defer src="modules/io/save.js?v=1.93.02"></script>
|
<script defer src="modules/io/save.js?v=1.93.02"></script>
|
||||||
<script defer src="modules/io/load.js?v=1.94.01"></script>
|
<script defer src="modules/io/load.js?v=1.94.01"></script>
|
||||||
<script defer src="modules/io/cloud.js"></script>
|
<script defer src="modules/io/cloud.js"></script>
|
||||||
<script defer src="modules/io/export.js?v=1.94.02"></script>
|
<script defer src="modules/io/export.js?v=1.94.03"></script>
|
||||||
<script defer src="modules/io/formats.js"></script>
|
<script defer src="modules/io/formats.js"></script>
|
||||||
|
|
||||||
<!-- Web Components -->
|
<!-- Web Components -->
|
||||||
|
|
|
||||||
|
|
@ -138,16 +138,15 @@ async function exportToPngTiles() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse map svg to object url
|
// parse map svg to object url
|
||||||
async function getMapURL(type, options = {}) {
|
async function getMapURL(type, options) {
|
||||||
const {
|
const {
|
||||||
debug = false,
|
debug = false,
|
||||||
globe = false,
|
|
||||||
noLabels = false,
|
noLabels = false,
|
||||||
noWater = false,
|
noWater = false,
|
||||||
noScaleBar = false,
|
noScaleBar = false,
|
||||||
noIce = false,
|
noIce = false,
|
||||||
fullMap = false
|
fullMap = false
|
||||||
} = options;
|
} = options || {};
|
||||||
|
|
||||||
const cloneEl = document.getElementById("map").cloneNode(true); // clone svg
|
const cloneEl = document.getElementById("map").cloneNode(true); // clone svg
|
||||||
cloneEl.id = "fantasyMap";
|
cloneEl.id = "fantasyMap";
|
||||||
|
|
@ -160,7 +159,6 @@ async function getMapURL(type, options = {}) {
|
||||||
|
|
||||||
const isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") > -1;
|
const isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") > -1;
|
||||||
if (isFirefox && type === "mesh") clone.select("#oceanPattern")?.remove();
|
if (isFirefox && type === "mesh") clone.select("#oceanPattern")?.remove();
|
||||||
if (globe) clone.select("#scaleBar")?.remove();
|
|
||||||
if (noLabels) {
|
if (noLabels) {
|
||||||
clone.select("#labels #states")?.remove();
|
clone.select("#labels #states")?.remove();
|
||||||
clone.select("#labels #burgLabels")?.remove();
|
clone.select("#labels #burgLabels")?.remove();
|
||||||
|
|
@ -171,14 +169,17 @@ async function getMapURL(type, options = {}) {
|
||||||
clone.select("#oceanPattern").attr("opacity", 0);
|
clone.select("#oceanPattern").attr("opacity", 0);
|
||||||
}
|
}
|
||||||
if (noIce) clone.select("#ice")?.remove();
|
if (noIce) clone.select("#ice")?.remove();
|
||||||
if (noScaleBar) clone.select("#scaleBar")?.remove();
|
|
||||||
if (fullMap) {
|
if (fullMap) {
|
||||||
// reset transform to show the whole map
|
// reset transform to show the whole map
|
||||||
clone.attr("width", graphWidth).attr("height", graphHeight);
|
clone.attr("width", graphWidth).attr("height", graphHeight);
|
||||||
clone.select("#viewbox").attr("transform", null);
|
clone.select("#viewbox").attr("transform", null);
|
||||||
|
|
||||||
|
if (!noScaleBar) {
|
||||||
drawScaleBar(clone.select("#scaleBar"), 1);
|
drawScaleBar(clone.select("#scaleBar"), 1);
|
||||||
fitScaleBar(clone.select("#scaleBar"), graphWidth, graphHeight);
|
fitScaleBar(clone.select("#scaleBar"), graphWidth, graphHeight);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (noScaleBar) clone.select("#scaleBar")?.remove();
|
||||||
|
|
||||||
if (type === "svg") removeUnusedElements(clone);
|
if (type === "svg") removeUnusedElements(clone);
|
||||||
if (customization && type === "mesh") updateMeshCells(clone);
|
if (customization && type === "mesh") updateMeshCells(clone);
|
||||||
|
|
|
||||||
|
|
@ -623,7 +623,7 @@ window.ThreeD = (function () {
|
||||||
material.map = texture;
|
material.map = texture;
|
||||||
if (addMesh) addGlobe3dMesh();
|
if (addMesh) addGlobe3dMesh();
|
||||||
};
|
};
|
||||||
img2.src = await getMapURL("mesh", {globe: true, fullMap: true});
|
img2.src = await getMapURL("mesh", {noScaleBar: true, fullMap: true});
|
||||||
}
|
}
|
||||||
|
|
||||||
function addGlobe3dMesh() {
|
function addGlobe3dMesh() {
|
||||||
|
|
|
||||||
|
|
@ -535,7 +535,7 @@ class Planimeter extends Measurer {
|
||||||
|
|
||||||
// Scale bar
|
// Scale bar
|
||||||
function drawScaleBar(scaleBar, scaleLevel) {
|
function drawScaleBar(scaleBar, scaleLevel) {
|
||||||
if (scaleBar.style("display") === "none") return; // no need to re-draw hidden element
|
if (!scaleBar.size() || scaleBar.style("display") === "none") return;
|
||||||
scaleBar.selectAll("*").remove(); // fully redraw every time
|
scaleBar.selectAll("*").remove(); // fully redraw every time
|
||||||
|
|
||||||
const distanceScale = +distanceScaleInput.value;
|
const distanceScale = +distanceScaleInput.value;
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,14 @@ window.UISubmap = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadPreview($container, w, h) {
|
async function loadPreview($container, w, h) {
|
||||||
const url = await getMapURL("png", {globe: false, noWater: true, fullMap: true, noLabels: true, noScaleBar: true, noIce: true});
|
const url = await getMapURL("png", {
|
||||||
|
globe: false,
|
||||||
|
noWater: true,
|
||||||
|
fullMap: true,
|
||||||
|
noLabels: true,
|
||||||
|
noScaleBar: true,
|
||||||
|
noIce: true
|
||||||
|
});
|
||||||
|
|
||||||
const canvas = document.createElement("canvas");
|
const canvas = document.createElement("canvas");
|
||||||
const ctx = canvas.getContext("2d");
|
const ctx = canvas.getContext("2d");
|
||||||
|
|
@ -173,7 +180,11 @@ window.UISubmap = (function () {
|
||||||
const {angle, shiftX, shiftY, ratio, mirrorH, mirrorV} = getTransformInput();
|
const {angle, shiftX, shiftY, ratio, mirrorH, mirrorV} = getTransformInput();
|
||||||
|
|
||||||
const [cx, cy] = [graphWidth / 2, graphHeight / 2];
|
const [cx, cy] = [graphWidth / 2, graphHeight / 2];
|
||||||
const rot = alfa => (x, y) => [(x - cx) * Math.cos(alfa) - (y - cy) * Math.sin(alfa) + cx, (y - cy) * Math.cos(alfa) + (x - cx) * Math.sin(alfa) + cy];
|
const rot = alfa => (x, y) =>
|
||||||
|
[
|
||||||
|
(x - cx) * Math.cos(alfa) - (y - cy) * Math.sin(alfa) + cx,
|
||||||
|
(y - cy) * Math.cos(alfa) + (x - cx) * Math.sin(alfa) + cy
|
||||||
|
];
|
||||||
const shift = (dx, dy) => (x, y) => [x + dx, y + dy];
|
const shift = (dx, dy) => (x, y) => [x + dx, y + dy];
|
||||||
const scale = r => (x, y) => [(x - cx) * r + cx, (y - cy) * r + cy];
|
const scale = r => (x, y) => [(x - cx) * r + cx, (y - cy) * r + cy];
|
||||||
const flipH = (x, y) => [-x + 2 * cx, y];
|
const flipH = (x, y) => [-x + 2 * cx, y];
|
||||||
|
|
@ -185,7 +196,11 @@ window.UISubmap = (function () {
|
||||||
let inverse = id;
|
let inverse = id;
|
||||||
|
|
||||||
if (angle) [projection, inverse] = [rot(angle), rot(-angle)];
|
if (angle) [projection, inverse] = [rot(angle), rot(-angle)];
|
||||||
if (ratio) [projection, inverse] = [app(scale(Math.pow(1.1, ratio)), projection), app(inverse, scale(Math.pow(1.1, -ratio)))];
|
if (ratio)
|
||||||
|
[projection, inverse] = [
|
||||||
|
app(scale(Math.pow(1.1, ratio)), projection),
|
||||||
|
app(inverse, scale(Math.pow(1.1, -ratio)))
|
||||||
|
];
|
||||||
if (mirrorH) [projection, inverse] = [app(flipH, projection), app(inverse, flipH)];
|
if (mirrorH) [projection, inverse] = [app(flipH, projection), app(inverse, flipH)];
|
||||||
if (mirrorV) [projection, inverse] = [app(flipV, projection), app(inverse, flipV)];
|
if (mirrorV) [projection, inverse] = [app(flipV, projection), app(inverse, flipV)];
|
||||||
if (shiftX || shiftY) {
|
if (shiftX || shiftY) {
|
||||||
|
|
@ -244,7 +259,10 @@ window.UISubmap = (function () {
|
||||||
|
|
||||||
// fix scale
|
// fix scale
|
||||||
distanceScaleInput.value = distanceScaleOutput.value = rn((distanceScale = distanceScaleOutput.value / scale), 2);
|
distanceScaleInput.value = distanceScaleOutput.value = rn((distanceScale = distanceScaleOutput.value / scale), 2);
|
||||||
populationRateInput.value = populationRateOutput.value = rn((populationRate = populationRateOutput.value / scale), 2);
|
populationRateInput.value = populationRateOutput.value = rn(
|
||||||
|
(populationRate = populationRateOutput.value / scale),
|
||||||
|
2
|
||||||
|
);
|
||||||
customization = 0;
|
customization = 0;
|
||||||
startResample(options);
|
startResample(options);
|
||||||
}, 1000);
|
}, 1000);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
// version and caching control
|
// version and caching control
|
||||||
const version = "1.94.02"; // generator version, update each time
|
const version = "1.94.03"; // generator version, update each time
|
||||||
|
|
||||||
{
|
{
|
||||||
document.title += " v" + version;
|
document.title += " v" + version;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue