mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 17:51:24 +01:00
225 lines
6.3 KiB
JavaScript
225 lines
6.3 KiB
JavaScript
export function exportToJson(type) {
|
|
if (customization)
|
|
return tip("Data cannot be exported when edit mode is active, please exit the mode and retry", false, "error");
|
|
closeDialogs("#alert");
|
|
|
|
const typeMap = {
|
|
Full: getFullDataJson,
|
|
Minimal: getMinimalDataJson,
|
|
PackCells: getPackCellsDataJson,
|
|
GridCells: getGridCellsDataJson
|
|
};
|
|
|
|
const mapData = typeMap[type]();
|
|
const blob = new Blob([mapData], {type: "application/json"});
|
|
const URL = window.URL.createObjectURL(blob);
|
|
const link = document.createElement("a");
|
|
link.download = getFileName(type) + ".json";
|
|
link.href = URL;
|
|
link.click();
|
|
tip(`${link.download} is saved. Open "Downloads" screen (CTRL + J) to check`, true, "success", 7000);
|
|
window.URL.revokeObjectURL(URL);
|
|
}
|
|
|
|
function getFullDataJson() {
|
|
TIME && console.time("getFullDataJson");
|
|
|
|
const info = getMapInfo();
|
|
const settings = getSettings();
|
|
const cells = getPackCellsData();
|
|
const vertices = getPackVerticesData();
|
|
const exportData = {info, settings, coords: mapCoordinates, cells, vertices, biomes: biomesData, notes, nameBases};
|
|
|
|
TIME && console.timeEnd("getFullDataJson");
|
|
return JSON.stringify(exportData);
|
|
}
|
|
|
|
function getMinimalDataJson() {
|
|
TIME && console.time("getMinimalDataJson");
|
|
|
|
const info = getMapInfo();
|
|
const settings = getSettings();
|
|
const packData = {
|
|
features: pack.features,
|
|
cultures: pack.cultures,
|
|
burgs: pack.burgs,
|
|
states: pack.states,
|
|
provinces: pack.provinces,
|
|
religions: pack.religions,
|
|
rivers: pack.rivers,
|
|
markers: pack.markers
|
|
};
|
|
const exportData = {info, settings, coords: mapCoordinates, pack: packData, biomes: biomesData, notes, nameBases};
|
|
|
|
TIME && console.timeEnd("getMinimalDataJson");
|
|
return JSON.stringify(exportData);
|
|
}
|
|
|
|
function getPackCellsDataJson() {
|
|
TIME && console.time("getCellsDataJson");
|
|
|
|
const info = getMapInfo();
|
|
const cells = getPackCellsData();
|
|
const exportData = {info, cells};
|
|
|
|
TIME && console.timeEnd("getCellsDataJson");
|
|
return JSON.stringify(exportData);
|
|
}
|
|
|
|
function getGridCellsDataJson() {
|
|
TIME && console.time("getGridCellsDataJson");
|
|
|
|
const info = getMapInfo();
|
|
const gridCells = getGridCellsData();
|
|
const exportData = {info, gridCells};
|
|
|
|
TIME && console.log("getGridCellsDataJson");
|
|
return JSON.stringify(exportData);
|
|
}
|
|
|
|
function getMapInfo() {
|
|
const info = {
|
|
version,
|
|
description: "Azgaar's Fantasy Map Generator output: azgaar.github.io/Fantasy-map-generator",
|
|
exportedAt: new Date().toISOString(),
|
|
mapName: mapName.value,
|
|
seed,
|
|
mapId
|
|
};
|
|
|
|
return info;
|
|
}
|
|
|
|
function getSettings() {
|
|
const settings = {
|
|
distanceUnit: distanceUnitInput.value,
|
|
distanceScale: distanceScaleInput.value,
|
|
areaUnit: areaUnit.value,
|
|
heightUnit: heightUnit.value,
|
|
heightExponent: heightExponentInput.value,
|
|
temperatureScale: temperatureScale.value,
|
|
barSize: barSizeInput.value,
|
|
barLabel: barLabel.value,
|
|
barBackOpacity: barBackOpacity.value,
|
|
barBackColor: barBackColor.value,
|
|
barPosX: barPosX.value,
|
|
barPosY: barPosY.value,
|
|
populationRate: populationRate,
|
|
urbanization: urbanization,
|
|
mapSize: mapSizeOutput.value,
|
|
latitudeO: latitudeOutput.value,
|
|
temperatureEquator: temperatureEquatorOutput.value,
|
|
temperaturePole: temperaturePoleOutput.value,
|
|
prec: precOutput.value,
|
|
options: options,
|
|
mapName: mapName.value,
|
|
hideLabels: hideLabels.checked,
|
|
stylePreset: stylePreset.value,
|
|
rescaleLabels: rescaleLabels.checked,
|
|
urbanDensity: urbanDensity
|
|
};
|
|
|
|
return settings;
|
|
}
|
|
|
|
function getPackCellsData() {
|
|
const cellConverted = {
|
|
i: Array.from(pack.cells.i),
|
|
v: pack.cells.v,
|
|
c: pack.cells.c,
|
|
p: pack.cells.p,
|
|
g: Array.from(pack.cells.g),
|
|
h: Array.from(pack.cells.h),
|
|
area: Array.from(pack.cells.area),
|
|
f: Array.from(pack.cells.f),
|
|
t: Array.from(pack.cells.t),
|
|
haven: Array.from(pack.cells.haven),
|
|
harbor: Array.from(pack.cells.harbor),
|
|
fl: Array.from(pack.cells.fl),
|
|
r: Array.from(pack.cells.r),
|
|
conf: Array.from(pack.cells.conf),
|
|
biome: Array.from(pack.cells.biome),
|
|
s: Array.from(pack.cells.s),
|
|
pop: Array.from(pack.cells.pop),
|
|
culture: Array.from(pack.cells.culture),
|
|
burg: Array.from(pack.cells.burg),
|
|
road: Array.from(pack.cells.road),
|
|
crossroad: Array.from(pack.cells.crossroad),
|
|
state: Array.from(pack.cells.state),
|
|
religion: Array.from(pack.cells.religion),
|
|
province: Array.from(pack.cells.province)
|
|
};
|
|
|
|
const cellObjArr = [];
|
|
{
|
|
cellConverted.i.forEach(value => {
|
|
const cellobj = {
|
|
i: value,
|
|
v: cellConverted.v[value],
|
|
c: cellConverted.c[value],
|
|
p: cellConverted.p[value],
|
|
g: cellConverted.g[value],
|
|
h: cellConverted.h[value],
|
|
area: cellConverted.area[value],
|
|
f: cellConverted.f[value],
|
|
t: cellConverted.t[value],
|
|
haven: cellConverted.haven[value],
|
|
harbor: cellConverted.harbor[value],
|
|
fl: cellConverted.fl[value],
|
|
r: cellConverted.r[value],
|
|
conf: cellConverted.conf[value],
|
|
biome: cellConverted.biome[value],
|
|
s: cellConverted.s[value],
|
|
pop: cellConverted.pop[value],
|
|
culture: cellConverted.culture[value],
|
|
burg: cellConverted.burg[value],
|
|
road: cellConverted.road[value],
|
|
crossroad: cellConverted.crossroad[value],
|
|
state: cellConverted.state[value],
|
|
religion: cellConverted.religion[value],
|
|
province: cellConverted.province[value]
|
|
};
|
|
cellObjArr.push(cellobj);
|
|
});
|
|
}
|
|
|
|
const cellsData = {
|
|
cells: cellObjArr,
|
|
features: pack.features,
|
|
cultures: pack.cultures,
|
|
burgs: pack.burgs,
|
|
states: pack.states,
|
|
provinces: pack.provinces,
|
|
religions: pack.religions,
|
|
rivers: pack.rivers,
|
|
markers: pack.markers
|
|
};
|
|
|
|
return cellsData;
|
|
}
|
|
|
|
function getGridCellsData() {
|
|
const gridData = {
|
|
cellsDesired: grid.cellsDesired,
|
|
spacing: grid.spacing,
|
|
cellsY: grid.cellsY,
|
|
cellsX: grid.cellsX,
|
|
points: grid.points,
|
|
boundary: grid.boundary
|
|
};
|
|
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;
|
|
}
|