feat: add all grid data to JSON export

This commit is contained in:
Azgaar 2023-09-12 02:19:07 +04:00
parent 8feda7c15d
commit e346c4bd84
4 changed files with 92 additions and 93 deletions

View file

@ -7992,7 +7992,7 @@
<script src="modules/ui/stylePresets.js?v=1.89.11"></script> <script src="modules/ui/stylePresets.js?v=1.89.11"></script>
<script src="modules/ui/general.js?v=1.93.01"></script> <script src="modules/ui/general.js?v=1.93.01"></script>
<script src="modules/ui/options.js?v=1.93.02"></script> <script src="modules/ui/options.js?v=1.93.03"></script>
<script src="main.js?v=1.93.02"></script> <script src="main.js?v=1.93.02"></script>
<script defer src="modules/relief-icons.js"></script> <script defer src="modules/relief-icons.js"></script>

View file

@ -3,11 +3,12 @@ export function exportToJson(type) {
return tip("Data cannot be exported when edit mode is active, please exit the mode and retry", false, "error"); return tip("Data cannot be exported when edit mode is active, please exit the mode and retry", false, "error");
closeDialogs("#alert"); closeDialogs("#alert");
TIME && console.time("exportToJson");
const typeMap = { const typeMap = {
Full: getFullDataJson, Full: getFullDataJson,
Minimal: getMinimalDataJson, Minimal: getMinimalDataJson,
PackCells: getPackCellsDataJson, PackCells: getPackDataJson,
GridCells: getGridCellsDataJson GridCells: getGridDataJson
}; };
const mapData = typeMap[type](); const mapData = typeMap[type]();
@ -19,24 +20,28 @@ export function exportToJson(type) {
link.click(); link.click();
tip(`${link.download} is saved. Open "Downloads" screen (CTRL + J) to check`, true, "success", 7000); tip(`${link.download} is saved. Open "Downloads" screen (CTRL + J) to check`, true, "success", 7000);
window.URL.revokeObjectURL(URL); window.URL.revokeObjectURL(URL);
TIME && console.timeEnd("exportToJson");
} }
function getFullDataJson() { function getFullDataJson() {
TIME && console.time("getFullDataJson");
const info = getMapInfo(); const info = getMapInfo();
const settings = getSettings(); const settings = getSettings();
const cells = getPackCellsData(); const pack = getPackCellsData();
const vertices = getPackVerticesData(); const grid = getGridCellsData();
const exportData = {info, settings, coords: mapCoordinates, cells, vertices, biomes: biomesData, notes, nameBases};
TIME && console.timeEnd("getFullDataJson"); return JSON.stringify({
return JSON.stringify(exportData); info,
settings,
mapCoordinates,
pack,
grid,
biomesData,
notes,
nameBases
});
} }
function getMinimalDataJson() { function getMinimalDataJson() {
TIME && console.time("getMinimalDataJson");
const info = getMapInfo(); const info = getMapInfo();
const settings = getSettings(); const settings = getSettings();
const packData = { const packData = {
@ -49,36 +54,23 @@ function getMinimalDataJson() {
rivers: pack.rivers, rivers: pack.rivers,
markers: pack.markers markers: pack.markers
}; };
const exportData = {info, settings, coords: mapCoordinates, pack: packData, biomes: biomesData, notes, nameBases}; return JSON.stringify({info, settings, mapCoordinates, pack: packData, biomesData, notes, nameBases});
TIME && console.timeEnd("getMinimalDataJson");
return JSON.stringify(exportData);
} }
function getPackCellsDataJson() { function getPackDataJson() {
TIME && console.time("getCellsDataJson");
const info = getMapInfo(); const info = getMapInfo();
const cells = getPackCellsData(); const cells = getPackCellsData();
const exportData = {info, cells}; return JSON.stringify({info, cells});
TIME && console.timeEnd("getCellsDataJson");
return JSON.stringify(exportData);
} }
function getGridCellsDataJson() { function getGridDataJson() {
TIME && console.time("getGridCellsDataJson");
const info = getMapInfo(); const info = getMapInfo();
const gridCells = getGridCellsData(); const cells = getGridCellsData();
const exportData = {info, gridCells}; return JSON.stringify({info, cells});
TIME && console.log("getGridCellsDataJson");
return JSON.stringify(exportData);
} }
function getMapInfo() { function getMapInfo() {
const info = { return {
version, version,
description: "Azgaar's Fantasy Map Generator output: azgaar.github.io/Fantasy-map-generator", description: "Azgaar's Fantasy Map Generator output: azgaar.github.io/Fantasy-map-generator",
exportedAt: new Date().toISOString(), exportedAt: new Date().toISOString(),
@ -86,12 +78,10 @@ function getMapInfo() {
seed, seed,
mapId mapId
}; };
return info;
} }
function getSettings() { function getSettings() {
const settings = { return {
distanceUnit: distanceUnitInput.value, distanceUnit: distanceUnitInput.value,
distanceScale: distanceScaleInput.value, distanceScale: distanceScaleInput.value,
areaUnit: areaUnit.value, areaUnit: areaUnit.value,
@ -116,13 +106,10 @@ function getSettings() {
rescaleLabels: rescaleLabels.checked, rescaleLabels: rescaleLabels.checked,
urbanDensity: urbanDensity urbanDensity: urbanDensity
}; };
return settings;
} }
function getPackCellsData() { function getPackCellsData() {
const cellConverted = { const dataArrays = {
i: Array.from(pack.cells.i),
v: pack.cells.v, v: pack.cells.v,
c: pack.cells.c, c: pack.cells.c,
p: pack.cells.p, p: pack.cells.p,
@ -148,41 +135,39 @@ function getPackCellsData() {
province: Array.from(pack.cells.province) province: Array.from(pack.cells.province)
}; };
const cellObjArr = []; return {
{ cells: Array.from(pack.cells.i).map(cellId => ({
cellConverted.i.forEach(value => { i: cellId,
const cellobj = { v: dataArrays.v[cellId],
i: value, c: dataArrays.c[cellId],
v: cellConverted.v[value], p: dataArrays.p[cellId],
c: cellConverted.c[value], g: dataArrays.g[cellId],
p: cellConverted.p[value], h: dataArrays.h[cellId],
g: cellConverted.g[value], area: dataArrays.area[cellId],
h: cellConverted.h[value], f: dataArrays.f[cellId],
area: cellConverted.area[value], t: dataArrays.t[cellId],
f: cellConverted.f[value], haven: dataArrays.haven[cellId],
t: cellConverted.t[value], harbor: dataArrays.harbor[cellId],
haven: cellConverted.haven[value], fl: dataArrays.fl[cellId],
harbor: cellConverted.harbor[value], r: dataArrays.r[cellId],
fl: cellConverted.fl[value], conf: dataArrays.conf[cellId],
r: cellConverted.r[value], biome: dataArrays.biome[cellId],
conf: cellConverted.conf[value], s: dataArrays.s[cellId],
biome: cellConverted.biome[value], pop: dataArrays.pop[cellId],
s: cellConverted.s[value], culture: dataArrays.culture[cellId],
pop: cellConverted.pop[value], burg: dataArrays.burg[cellId],
culture: cellConverted.culture[value], road: dataArrays.road[cellId],
burg: cellConverted.burg[value], crossroad: dataArrays.crossroad[cellId],
road: cellConverted.road[value], state: dataArrays.state[cellId],
crossroad: cellConverted.crossroad[value], religion: dataArrays.religion[cellId],
state: cellConverted.state[value], province: dataArrays.province[cellId]
religion: cellConverted.religion[value], })),
province: cellConverted.province[value] vertices: pack.vertices.c.map(vertexId => ({
}; i: vertexId,
cellObjArr.push(cellobj); p: pack.vertices.p[vertexId],
}); v: pack.vertices.v[vertexId],
} c: pack.vertices.c[vertexId]
})),
const cellsData = {
cells: cellObjArr,
features: pack.features, features: pack.features,
cultures: pack.cultures, cultures: pack.cultures,
burgs: pack.burgs, burgs: pack.burgs,
@ -192,32 +177,46 @@ function getPackCellsData() {
rivers: pack.rivers, rivers: pack.rivers,
markers: pack.markers markers: pack.markers
}; };
return cellsData;
} }
function getGridCellsData() { function getGridCellsData() {
const dataArrays = {
v: grid.cells.v,
c: grid.cells.c,
b: grid.cells.b,
f: Array.from(grid.cells.f),
t: Array.from(grid.cells.t),
h: Array.from(grid.cells.h),
temp: Array.from(grid.cells.temp),
prec: Array.from(grid.cells.prec)
};
const gridData = { const gridData = {
cells: Array.from(grid.cells.i).map(cellId => ({
i: cellId,
v: dataArrays.v[cellId],
c: dataArrays.c[cellId],
b: dataArrays.b[cellId],
f: dataArrays.f[cellId],
t: dataArrays.t[cellId],
h: dataArrays.h[cellId],
temp: dataArrays.temp[cellId],
prec: dataArrays.prec[cellId]
})),
vertices: grid.vertices.c.map(vertexId => ({
i: vertexId,
p: pack.vertices.p[vertexId],
v: pack.vertices.v[vertexId],
c: pack.vertices.c[vertexId]
})),
cellsDesired: grid.cellsDesired, cellsDesired: grid.cellsDesired,
spacing: grid.spacing, spacing: grid.spacing,
cellsY: grid.cellsY, cellsY: grid.cellsY,
cellsX: grid.cellsX, cellsX: grid.cellsX,
points: grid.points, points: grid.points,
boundary: grid.boundary boundary: grid.boundary,
seed: grid.seed,
features: pack.features
}; };
return gridData; return gridData;
} }
function getPackVerticesData() {
const {vertices} = pack;
const verticesNumber = vertices.p.length;
const verticesArray = new Array(verticesNumber);
for (let i = 0; i < verticesNumber; i++) {
verticesArray[i] = {
p: vertices.p[i],
v: vertices.v[i],
c: vertices.c[i]
};
}
return verticesArray;
}

View file

@ -785,7 +785,7 @@ function showExportPane() {
} }
async function exportToJson(type) { async function exportToJson(type) {
const {exportToJson} = await import("../dynamic/export-json.js"); const {exportToJson} = await import("../dynamic/export-json.js?v=1.93.03");
exportToJson(type); exportToJson(type);
} }

View file

@ -1,7 +1,7 @@
"use strict"; "use strict";
// version and caching control // version and caching control
const version = "1.93.02"; // generator version, update each time const version = "1.93.03"; // generator version, update each time
{ {
document.title += " v" + version; document.title += " v" + version;