From 4c6c5288a123e02e00154e291609d99f48d309de Mon Sep 17 00:00:00 2001 From: Azgaar Date: Fri, 6 Sep 2024 01:11:25 +0200 Subject: [PATCH] refactor: load.js formatting --- index.html | 2 +- main.js | 5 +- modules/io/load.js | 117 ++++++++++++++++++++++----------------------- versioning.js | 2 +- 4 files changed, 62 insertions(+), 64 deletions(-) diff --git a/index.html b/index.html index b3bdc0aa..faadb438 100644 --- a/index.html +++ b/index.html @@ -8129,7 +8129,7 @@ - + diff --git a/main.js b/main.js index 4263318e..561f963b 100644 --- a/main.js +++ b/main.js @@ -1493,7 +1493,8 @@ function showStatistics() { const stats = ` Seed: ${seed} Canvas size: ${graphWidth}x${graphHeight} px - Heightmap: ${heightmap} (${isRandomTemplate}${heightmapType}) + Heightmap: ${heightmap} + Template: ${isRandomTemplate}${heightmapType} Points: ${grid.points.length} Cells: ${pack.cells.i.length} Map size: ${mapSizeOutput.value}% @@ -1501,7 +1502,7 @@ function showStatistics() { Provinces: ${pack.provinces.length - 1} Burgs: ${pack.burgs.length - 1} Religions: ${pack.religions.length - 1} - Culture set: ${culturesSet.selectedOptions[0].innerText} + Culture set: ${culturesSet.value} Cultures: ${pack.cultures.length - 1}`; mapId = Date.now(); // unique map id is it's creation date number diff --git a/modules/io/load.js b/modules/io/load.js index 94ef783d..c98a3cb5 100644 --- a/modules/io/load.js +++ b/modules/io/load.js @@ -112,7 +112,7 @@ function uploadMap(file, callback) { byId("coas").innerHTML = ""; // remove auto-generated emblems const result = fileLoadedEvent.target.result; - const [mapData, mapVersion] = await parseLoadedResult(result); + const {mapData, mapVersion} = await parseLoadedResult(result); const isInvalid = !mapData || !isValidVersion(mapVersion) || mapData.length < 26 || !mapData[5]; if (isInvalid) return showUploadMessage("invalid", mapData, mapVersion); @@ -209,21 +209,19 @@ async function parseLoadedData(data, mapVersion) { customization = 0; if (customizationMenu.offsetParent) styleTab.click(); - const params = data[0].split("|"); - void (function parseParameters() { + { + const params = data[0].split("|"); if (params[3]) { seed = params[3]; optionsSeed.value = seed; - } + INFO && console.group("Loaded Map " + seed); + } else INFO && console.group("Loaded Map"); if (params[4]) graphWidth = +params[4]; if (params[5]) graphHeight = +params[5]; mapId = params[6] ? +params[6] : Date.now(); - })(); + } - INFO && console.group("Loaded Map " + seed); - - // TODO: move all to options object - void (function parseSettings() { + { const settings = data[1].split("|"); if (settings[0]) applyOption(distanceUnitInput, settings[0]); if (settings[1]) distanceScale = distanceScaleInput.value = settings[1]; @@ -247,16 +245,16 @@ async function parseLoadedData(data, mapVersion) { if (settings[23]) rescaleLabels.checked = +settings[23]; if (settings[24]) urbanDensity = urbanDensityInput.value = +settings[24]; if (settings[25]) longitudeInput.value = longitudeOutput.value = minmax(settings[25] || 50, 0, 100); - })(); + } - void (function applyOptionsToUI() { + { stateLabelsModeInput.value = options.stateLabelsMode; yearInput.value = options.year; eraInput.value = options.era; shapeRendering.value = viewbox.attr("shape-rendering") || "geometricPrecision"; - })(); + } - void (function parseConfiguration() { + { if (data[2]) mapCoordinates = JSON.parse(data[2]); if (data[4]) notes = JSON.parse(data[4]); if (data[33]) rulers.fromString(data[33]); @@ -272,13 +270,14 @@ async function parseLoadedData(data, mapVersion) { declareFont(usedFont); }); } + } + { const biomes = data[3].split("|"); biomesData = Biomes.getDefault(); biomesData.color = biomes[0].split(","); biomesData.habitability = biomes[1].split(",").map(h => +h); biomesData.name = biomes[2].split(","); - // push custom biomes if any for (let i = biomesData.i.length; i < biomesData.name.length; i++) { biomesData.i.push(biomesData.i.length); @@ -286,14 +285,14 @@ async function parseLoadedData(data, mapVersion) { biomesData.icons.push([]); biomesData.cost.push(50); } - })(); + } - void (function replaceSVG() { + { svg.remove(); document.body.insertAdjacentHTML("afterbegin", data[5]); - })(); + } - void (function redefineElements() { + { svg = d3.select("#map"); defs = svg.select("#deftemp"); viewbox = svg.select("#viewbox"); @@ -343,36 +342,31 @@ async function parseLoadedData(data, mapVersion) { fogging = viewbox.select("#fogging"); debug = viewbox.select("#debug"); burgLabels = labels.select("#burgLabels"); - })(); - void (function addMissingElements() { if (!texture.size()) { texture = viewbox .insert("g", "#landmass") .attr("id", "texture") .attr("data-href", "./images/textures/plaster.jpg"); } - if (!emblems.size()) { emblems = viewbox.insert("g", "#labels").attr("id", "emblems").style("display", "none"); } - })(); + } - void (function parseGridData() { + { grid = JSON.parse(data[6]); - const {cells, vertices} = calculateVoronoi(grid.points, grid.boundary); grid.cells = cells; grid.vertices = vertices; - grid.cells.h = Uint8Array.from(data[7].split(",")); grid.cells.prec = Uint8Array.from(data[8].split(",")); grid.cells.f = Uint16Array.from(data[9].split(",")); grid.cells.t = Int8Array.from(data[10].split(",")); grid.cells.temp = Int8Array.from(data[11].split(",")); - })(); + } - void (function parsePackData() { + { reGraph(); reMarkFeatures(); pack.features = JSON.parse(data[12]); @@ -385,22 +379,20 @@ async function parseLoadedData(data, mapVersion) { pack.markers = data[35] ? JSON.parse(data[35]) : []; pack.routes = data[37] ? JSON.parse(data[37]) : []; pack.zones = data[38] ? JSON.parse(data[38]) : []; - - const cells = pack.cells; - cells.biome = Uint8Array.from(data[16].split(",")); - cells.burg = Uint16Array.from(data[17].split(",")); - cells.conf = Uint8Array.from(data[18].split(",")); - cells.culture = Uint16Array.from(data[19].split(",")); - cells.fl = Uint16Array.from(data[20].split(",")); - cells.pop = Float32Array.from(data[21].split(",")); - cells.r = Uint16Array.from(data[22].split(",")); - // data[23] for deprecated cells.road - cells.s = Uint16Array.from(data[24].split(",")); - cells.state = Uint16Array.from(data[25].split(",")); - cells.religion = data[26] ? Uint16Array.from(data[26].split(",")) : new Uint16Array(cells.i.length); - cells.province = data[27] ? Uint16Array.from(data[27].split(",")) : new Uint16Array(cells.i.length); - // data[28] for deprecated cells.crossroad - cells.routes = data[36] ? JSON.parse(data[36]) : {}; + pack.cells.biome = Uint8Array.from(data[16].split(",")); + pack.cells.burg = Uint16Array.from(data[17].split(",")); + pack.cells.conf = Uint8Array.from(data[18].split(",")); + pack.cells.culture = Uint16Array.from(data[19].split(",")); + pack.cells.fl = Uint16Array.from(data[20].split(",")); + pack.cells.pop = Float32Array.from(data[21].split(",")); + pack.cells.r = Uint16Array.from(data[22].split(",")); + // data[23] had deprecated cells.road + pack.cells.s = Uint16Array.from(data[24].split(",")); + pack.cells.state = Uint16Array.from(data[25].split(",")); + pack.cells.religion = data[26] ? Uint16Array.from(data[26].split(",")) : new Uint16Array(pack.cells.i.length); + pack.cells.province = data[27] ? Uint16Array.from(data[27].split(",")) : new Uint16Array(pack.cells.i.length); + // data[28] had deprecated cells.crossroad + pack.cells.routes = data[36] ? JSON.parse(data[36]) : {}; if (data[31]) { const namesDL = data[31].split("/"); @@ -411,9 +403,9 @@ async function parseLoadedData(data, mapVersion) { nameBases[i] = {name: e[0], min: e[1], max: e[2], d: e[3], m: e[4], b}; }); } - })(); + } - void (function restoreLayersState() { + { const isVisible = selection => selection.node() && selection.style("display") !== "none"; const isVisibleNode = node => node && node.style.display !== "none"; const hasChildren = selection => selection.node()?.hasChildNodes(); @@ -456,14 +448,14 @@ async function parseLoadedData(data, mapVersion) { if (isVisibleNode(byId("vignette"))) turnOn("toggleVignette"); getCurrentPreset(); - })(); + } - void (function restoreEvents() { + { scaleBar.on("mousemove", () => tip("Click to open Units Editor")).on("click", () => editUnits()); legend .on("mousemove", () => tip("Drag to change the position. Click to hide the legend")) .on("click", () => clearLegend()); - })(); + } { // dynamically import and run auto-update script @@ -485,7 +477,7 @@ async function parseLoadedData(data, mapVersion) { if (textureHref) updateTextureSelectValue(textureHref); } - void (function checkDataIntegrity() { + { const cells = pack.cells; if (pack.cells.i.length !== pack.cells.state.length) { @@ -690,20 +682,25 @@ async function parseLoadedData(data, mapVersion) { // sort markers by index pack.markers.sort((a, b) => a.i - b.i); } - })(); + } - fitMapToScreen(); + { + // remove href from emblems, to trigger rendering on load + emblems.selectAll("use").attr("href", null); + } - // remove href from emblems, to trigger rendering on load - emblems.selectAll("use").attr("href", null); + { + // draw data layers (not kept in svg) + if (rulers && layerIsOn("toggleRulers")) rulers.draw(); + if (layerIsOn("toggleGrid")) drawGrid(); + } - // draw data layers (no kept in svg) - if (rulers && layerIsOn("toggleRulers")) rulers.draw(); - if (layerIsOn("toggleGrid")) drawGrid(); - - if (window.restoreDefaultEvents) restoreDefaultEvents(); - focusOn(); // based on searchParams focus on point, cell or burg - invokeActiveZooming(); + { + if (window.restoreDefaultEvents) restoreDefaultEvents(); + focusOn(); // based on searchParams focus on point, cell or burg + invokeActiveZooming(); + fitMapToScreen(); + } WARN && console.warn(`TOTAL: ${rn((performance.now() - uploadMap.timeStart) / 1000, 2)}s`); showStatistics(); diff --git a/versioning.js b/versioning.js index 75e2d64d..43abf4b5 100644 --- a/versioning.js +++ b/versioning.js @@ -12,7 +12,7 @@ * * Example: 1.102.2 -> Major version 1, Minor version 102, Patch version 2 */ -const VERSION = "1.103.3"; +const VERSION = "1.103.4"; if (parseMapVersion(VERSION) !== VERSION) alert("versioning.js: Invalid format or parsing function"); {