mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 01:41:22 +01:00
refactor: load.js formatting
This commit is contained in:
parent
dd35947ecd
commit
4c6c5288a1
4 changed files with 62 additions and 64 deletions
|
|
@ -8129,7 +8129,7 @@
|
||||||
<script defer src="libs/rgbquant.min.js"></script>
|
<script defer src="libs/rgbquant.min.js"></script>
|
||||||
<script defer src="libs/jquery.ui.touch-punch.min.js"></script>
|
<script defer src="libs/jquery.ui.touch-punch.min.js"></script>
|
||||||
<script defer src="modules/io/save.js?v=1.100.00"></script>
|
<script defer src="modules/io/save.js?v=1.100.00"></script>
|
||||||
<script defer src="modules/io/load.js?v=1.103.02"></script>
|
<script defer src="modules/io/load.js?v=1.103.4"></script>
|
||||||
<script defer src="modules/io/cloud.js?v=1.99.00"></script>
|
<script defer src="modules/io/cloud.js?v=1.99.00"></script>
|
||||||
<script defer src="modules/io/export.js?v=1.100.00"></script>
|
<script defer src="modules/io/export.js?v=1.100.00"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
5
main.js
5
main.js
|
|
@ -1493,7 +1493,8 @@ function showStatistics() {
|
||||||
|
|
||||||
const stats = ` Seed: ${seed}
|
const stats = ` Seed: ${seed}
|
||||||
Canvas size: ${graphWidth}x${graphHeight} px
|
Canvas size: ${graphWidth}x${graphHeight} px
|
||||||
Heightmap: ${heightmap} (${isRandomTemplate}${heightmapType})
|
Heightmap: ${heightmap}
|
||||||
|
Template: ${isRandomTemplate}${heightmapType}
|
||||||
Points: ${grid.points.length}
|
Points: ${grid.points.length}
|
||||||
Cells: ${pack.cells.i.length}
|
Cells: ${pack.cells.i.length}
|
||||||
Map size: ${mapSizeOutput.value}%
|
Map size: ${mapSizeOutput.value}%
|
||||||
|
|
@ -1501,7 +1502,7 @@ function showStatistics() {
|
||||||
Provinces: ${pack.provinces.length - 1}
|
Provinces: ${pack.provinces.length - 1}
|
||||||
Burgs: ${pack.burgs.length - 1}
|
Burgs: ${pack.burgs.length - 1}
|
||||||
Religions: ${pack.religions.length - 1}
|
Religions: ${pack.religions.length - 1}
|
||||||
Culture set: ${culturesSet.selectedOptions[0].innerText}
|
Culture set: ${culturesSet.value}
|
||||||
Cultures: ${pack.cultures.length - 1}`;
|
Cultures: ${pack.cultures.length - 1}`;
|
||||||
|
|
||||||
mapId = Date.now(); // unique map id is it's creation date number
|
mapId = Date.now(); // unique map id is it's creation date number
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ function uploadMap(file, callback) {
|
||||||
byId("coas").innerHTML = ""; // remove auto-generated emblems
|
byId("coas").innerHTML = ""; // remove auto-generated emblems
|
||||||
|
|
||||||
const result = fileLoadedEvent.target.result;
|
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];
|
const isInvalid = !mapData || !isValidVersion(mapVersion) || mapData.length < 26 || !mapData[5];
|
||||||
if (isInvalid) return showUploadMessage("invalid", mapData, mapVersion);
|
if (isInvalid) return showUploadMessage("invalid", mapData, mapVersion);
|
||||||
|
|
@ -209,21 +209,19 @@ async function parseLoadedData(data, mapVersion) {
|
||||||
customization = 0;
|
customization = 0;
|
||||||
if (customizationMenu.offsetParent) styleTab.click();
|
if (customizationMenu.offsetParent) styleTab.click();
|
||||||
|
|
||||||
const params = data[0].split("|");
|
{
|
||||||
void (function parseParameters() {
|
const params = data[0].split("|");
|
||||||
if (params[3]) {
|
if (params[3]) {
|
||||||
seed = params[3];
|
seed = params[3];
|
||||||
optionsSeed.value = seed;
|
optionsSeed.value = seed;
|
||||||
}
|
INFO && console.group("Loaded Map " + seed);
|
||||||
|
} else INFO && console.group("Loaded Map");
|
||||||
if (params[4]) graphWidth = +params[4];
|
if (params[4]) graphWidth = +params[4];
|
||||||
if (params[5]) graphHeight = +params[5];
|
if (params[5]) graphHeight = +params[5];
|
||||||
mapId = params[6] ? +params[6] : Date.now();
|
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("|");
|
const settings = data[1].split("|");
|
||||||
if (settings[0]) applyOption(distanceUnitInput, settings[0]);
|
if (settings[0]) applyOption(distanceUnitInput, settings[0]);
|
||||||
if (settings[1]) distanceScale = distanceScaleInput.value = settings[1];
|
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[23]) rescaleLabels.checked = +settings[23];
|
||||||
if (settings[24]) urbanDensity = urbanDensityInput.value = +settings[24];
|
if (settings[24]) urbanDensity = urbanDensityInput.value = +settings[24];
|
||||||
if (settings[25]) longitudeInput.value = longitudeOutput.value = minmax(settings[25] || 50, 0, 100);
|
if (settings[25]) longitudeInput.value = longitudeOutput.value = minmax(settings[25] || 50, 0, 100);
|
||||||
})();
|
}
|
||||||
|
|
||||||
void (function applyOptionsToUI() {
|
{
|
||||||
stateLabelsModeInput.value = options.stateLabelsMode;
|
stateLabelsModeInput.value = options.stateLabelsMode;
|
||||||
yearInput.value = options.year;
|
yearInput.value = options.year;
|
||||||
eraInput.value = options.era;
|
eraInput.value = options.era;
|
||||||
shapeRendering.value = viewbox.attr("shape-rendering") || "geometricPrecision";
|
shapeRendering.value = viewbox.attr("shape-rendering") || "geometricPrecision";
|
||||||
})();
|
}
|
||||||
|
|
||||||
void (function parseConfiguration() {
|
{
|
||||||
if (data[2]) mapCoordinates = JSON.parse(data[2]);
|
if (data[2]) mapCoordinates = JSON.parse(data[2]);
|
||||||
if (data[4]) notes = JSON.parse(data[4]);
|
if (data[4]) notes = JSON.parse(data[4]);
|
||||||
if (data[33]) rulers.fromString(data[33]);
|
if (data[33]) rulers.fromString(data[33]);
|
||||||
|
|
@ -272,13 +270,14 @@ async function parseLoadedData(data, mapVersion) {
|
||||||
declareFont(usedFont);
|
declareFont(usedFont);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
const biomes = data[3].split("|");
|
const biomes = data[3].split("|");
|
||||||
biomesData = Biomes.getDefault();
|
biomesData = Biomes.getDefault();
|
||||||
biomesData.color = biomes[0].split(",");
|
biomesData.color = biomes[0].split(",");
|
||||||
biomesData.habitability = biomes[1].split(",").map(h => +h);
|
biomesData.habitability = biomes[1].split(",").map(h => +h);
|
||||||
biomesData.name = biomes[2].split(",");
|
biomesData.name = biomes[2].split(",");
|
||||||
|
|
||||||
// push custom biomes if any
|
// push custom biomes if any
|
||||||
for (let i = biomesData.i.length; i < biomesData.name.length; i++) {
|
for (let i = biomesData.i.length; i < biomesData.name.length; i++) {
|
||||||
biomesData.i.push(biomesData.i.length);
|
biomesData.i.push(biomesData.i.length);
|
||||||
|
|
@ -286,14 +285,14 @@ async function parseLoadedData(data, mapVersion) {
|
||||||
biomesData.icons.push([]);
|
biomesData.icons.push([]);
|
||||||
biomesData.cost.push(50);
|
biomesData.cost.push(50);
|
||||||
}
|
}
|
||||||
})();
|
}
|
||||||
|
|
||||||
void (function replaceSVG() {
|
{
|
||||||
svg.remove();
|
svg.remove();
|
||||||
document.body.insertAdjacentHTML("afterbegin", data[5]);
|
document.body.insertAdjacentHTML("afterbegin", data[5]);
|
||||||
})();
|
}
|
||||||
|
|
||||||
void (function redefineElements() {
|
{
|
||||||
svg = d3.select("#map");
|
svg = d3.select("#map");
|
||||||
defs = svg.select("#deftemp");
|
defs = svg.select("#deftemp");
|
||||||
viewbox = svg.select("#viewbox");
|
viewbox = svg.select("#viewbox");
|
||||||
|
|
@ -343,36 +342,31 @@ async function parseLoadedData(data, mapVersion) {
|
||||||
fogging = viewbox.select("#fogging");
|
fogging = viewbox.select("#fogging");
|
||||||
debug = viewbox.select("#debug");
|
debug = viewbox.select("#debug");
|
||||||
burgLabels = labels.select("#burgLabels");
|
burgLabels = labels.select("#burgLabels");
|
||||||
})();
|
|
||||||
|
|
||||||
void (function addMissingElements() {
|
|
||||||
if (!texture.size()) {
|
if (!texture.size()) {
|
||||||
texture = viewbox
|
texture = viewbox
|
||||||
.insert("g", "#landmass")
|
.insert("g", "#landmass")
|
||||||
.attr("id", "texture")
|
.attr("id", "texture")
|
||||||
.attr("data-href", "./images/textures/plaster.jpg");
|
.attr("data-href", "./images/textures/plaster.jpg");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!emblems.size()) {
|
if (!emblems.size()) {
|
||||||
emblems = viewbox.insert("g", "#labels").attr("id", "emblems").style("display", "none");
|
emblems = viewbox.insert("g", "#labels").attr("id", "emblems").style("display", "none");
|
||||||
}
|
}
|
||||||
})();
|
}
|
||||||
|
|
||||||
void (function parseGridData() {
|
{
|
||||||
grid = JSON.parse(data[6]);
|
grid = JSON.parse(data[6]);
|
||||||
|
|
||||||
const {cells, vertices} = calculateVoronoi(grid.points, grid.boundary);
|
const {cells, vertices} = calculateVoronoi(grid.points, grid.boundary);
|
||||||
grid.cells = cells;
|
grid.cells = cells;
|
||||||
grid.vertices = vertices;
|
grid.vertices = vertices;
|
||||||
|
|
||||||
grid.cells.h = Uint8Array.from(data[7].split(","));
|
grid.cells.h = Uint8Array.from(data[7].split(","));
|
||||||
grid.cells.prec = Uint8Array.from(data[8].split(","));
|
grid.cells.prec = Uint8Array.from(data[8].split(","));
|
||||||
grid.cells.f = Uint16Array.from(data[9].split(","));
|
grid.cells.f = Uint16Array.from(data[9].split(","));
|
||||||
grid.cells.t = Int8Array.from(data[10].split(","));
|
grid.cells.t = Int8Array.from(data[10].split(","));
|
||||||
grid.cells.temp = Int8Array.from(data[11].split(","));
|
grid.cells.temp = Int8Array.from(data[11].split(","));
|
||||||
})();
|
}
|
||||||
|
|
||||||
void (function parsePackData() {
|
{
|
||||||
reGraph();
|
reGraph();
|
||||||
reMarkFeatures();
|
reMarkFeatures();
|
||||||
pack.features = JSON.parse(data[12]);
|
pack.features = JSON.parse(data[12]);
|
||||||
|
|
@ -385,22 +379,20 @@ async function parseLoadedData(data, mapVersion) {
|
||||||
pack.markers = data[35] ? JSON.parse(data[35]) : [];
|
pack.markers = data[35] ? JSON.parse(data[35]) : [];
|
||||||
pack.routes = data[37] ? JSON.parse(data[37]) : [];
|
pack.routes = data[37] ? JSON.parse(data[37]) : [];
|
||||||
pack.zones = data[38] ? JSON.parse(data[38]) : [];
|
pack.zones = data[38] ? JSON.parse(data[38]) : [];
|
||||||
|
pack.cells.biome = Uint8Array.from(data[16].split(","));
|
||||||
const cells = pack.cells;
|
pack.cells.burg = Uint16Array.from(data[17].split(","));
|
||||||
cells.biome = Uint8Array.from(data[16].split(","));
|
pack.cells.conf = Uint8Array.from(data[18].split(","));
|
||||||
cells.burg = Uint16Array.from(data[17].split(","));
|
pack.cells.culture = Uint16Array.from(data[19].split(","));
|
||||||
cells.conf = Uint8Array.from(data[18].split(","));
|
pack.cells.fl = Uint16Array.from(data[20].split(","));
|
||||||
cells.culture = Uint16Array.from(data[19].split(","));
|
pack.cells.pop = Float32Array.from(data[21].split(","));
|
||||||
cells.fl = Uint16Array.from(data[20].split(","));
|
pack.cells.r = Uint16Array.from(data[22].split(","));
|
||||||
cells.pop = Float32Array.from(data[21].split(","));
|
// data[23] had deprecated cells.road
|
||||||
cells.r = Uint16Array.from(data[22].split(","));
|
pack.cells.s = Uint16Array.from(data[24].split(","));
|
||||||
// data[23] for deprecated cells.road
|
pack.cells.state = Uint16Array.from(data[25].split(","));
|
||||||
cells.s = Uint16Array.from(data[24].split(","));
|
pack.cells.religion = data[26] ? Uint16Array.from(data[26].split(",")) : new Uint16Array(pack.cells.i.length);
|
||||||
cells.state = Uint16Array.from(data[25].split(","));
|
pack.cells.province = data[27] ? Uint16Array.from(data[27].split(",")) : new Uint16Array(pack.cells.i.length);
|
||||||
cells.religion = data[26] ? Uint16Array.from(data[26].split(",")) : new Uint16Array(cells.i.length);
|
// data[28] had deprecated cells.crossroad
|
||||||
cells.province = data[27] ? Uint16Array.from(data[27].split(",")) : new Uint16Array(cells.i.length);
|
pack.cells.routes = data[36] ? JSON.parse(data[36]) : {};
|
||||||
// data[28] for deprecated cells.crossroad
|
|
||||||
cells.routes = data[36] ? JSON.parse(data[36]) : {};
|
|
||||||
|
|
||||||
if (data[31]) {
|
if (data[31]) {
|
||||||
const namesDL = data[31].split("/");
|
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};
|
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 isVisible = selection => selection.node() && selection.style("display") !== "none";
|
||||||
const isVisibleNode = node => node && node.style.display !== "none";
|
const isVisibleNode = node => node && node.style.display !== "none";
|
||||||
const hasChildren = selection => selection.node()?.hasChildNodes();
|
const hasChildren = selection => selection.node()?.hasChildNodes();
|
||||||
|
|
@ -456,14 +448,14 @@ async function parseLoadedData(data, mapVersion) {
|
||||||
if (isVisibleNode(byId("vignette"))) turnOn("toggleVignette");
|
if (isVisibleNode(byId("vignette"))) turnOn("toggleVignette");
|
||||||
|
|
||||||
getCurrentPreset();
|
getCurrentPreset();
|
||||||
})();
|
}
|
||||||
|
|
||||||
void (function restoreEvents() {
|
{
|
||||||
scaleBar.on("mousemove", () => tip("Click to open Units Editor")).on("click", () => editUnits());
|
scaleBar.on("mousemove", () => tip("Click to open Units Editor")).on("click", () => editUnits());
|
||||||
legend
|
legend
|
||||||
.on("mousemove", () => tip("Drag to change the position. Click to hide the legend"))
|
.on("mousemove", () => tip("Drag to change the position. Click to hide the legend"))
|
||||||
.on("click", () => clearLegend());
|
.on("click", () => clearLegend());
|
||||||
})();
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
// dynamically import and run auto-update script
|
// dynamically import and run auto-update script
|
||||||
|
|
@ -485,7 +477,7 @@ async function parseLoadedData(data, mapVersion) {
|
||||||
if (textureHref) updateTextureSelectValue(textureHref);
|
if (textureHref) updateTextureSelectValue(textureHref);
|
||||||
}
|
}
|
||||||
|
|
||||||
void (function checkDataIntegrity() {
|
{
|
||||||
const cells = pack.cells;
|
const cells = pack.cells;
|
||||||
|
|
||||||
if (pack.cells.i.length !== pack.cells.state.length) {
|
if (pack.cells.i.length !== pack.cells.state.length) {
|
||||||
|
|
@ -690,20 +682,25 @@ async function parseLoadedData(data, mapVersion) {
|
||||||
// sort markers by index
|
// sort markers by index
|
||||||
pack.markers.sort((a, b) => a.i - b.i);
|
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 (window.restoreDefaultEvents) restoreDefaultEvents();
|
||||||
if (layerIsOn("toggleGrid")) drawGrid();
|
focusOn(); // based on searchParams focus on point, cell or burg
|
||||||
|
invokeActiveZooming();
|
||||||
if (window.restoreDefaultEvents) restoreDefaultEvents();
|
fitMapToScreen();
|
||||||
focusOn(); // based on searchParams focus on point, cell or burg
|
}
|
||||||
invokeActiveZooming();
|
|
||||||
|
|
||||||
WARN && console.warn(`TOTAL: ${rn((performance.now() - uploadMap.timeStart) / 1000, 2)}s`);
|
WARN && console.warn(`TOTAL: ${rn((performance.now() - uploadMap.timeStart) / 1000, 2)}s`);
|
||||||
showStatistics();
|
showStatistics();
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
*
|
*
|
||||||
* Example: 1.102.2 -> Major version 1, Minor version 102, Patch version 2
|
* 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");
|
if (parseMapVersion(VERSION) !== VERSION) alert("versioning.js: Invalid format or parsing function");
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue