Fantasy-Map-Generator/modules/export-json.js
Efruz Yıldırır 80a290a370 Added Seperated json export selections
- all JSON : exports all json data.
- minimal JSON : exports json data without cells data.
- cells JSON : exports json data only with pack.cells data.
2022-01-26 14:26:30 +03:00

265 lines
8.6 KiB
JavaScript

/**
* Downloads created data of getMapDataAPIJson()
* Download all data generated
*
* @see getMapDataAPIJson
*/
function downloadMapDataAPIJson() {
if (customization) return tip("Map cannot be saved when edit mode is active, please exit the mode and retry", false, "error");
closeDialogs("#alert");
const mapData = getMapDataAPIJson();
const blob = new Blob([mapData], {type: "application/json"});
const URL = window.URL.createObjectURL(blob);
const link = document.createElement("a");
link.download = getFileName() + "All.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);
}
/**
* Downloads created data of getMinimalMapJSONData()
* Downloads data without cells
*
* @see getMinimalMapJSONData
*/
function downloadMapDataMinimalAPIJson() {
if (customization) return tip("Map cannot be saved when edit mode is active, please exit the mode and retry", false, "error");
closeDialogs("#alert");
const mapData = getMinimalMapJSONData();
const blob = new Blob([mapData], {type: "application/json"});
const URL = window.URL.createObjectURL(blob);
const link = document.createElement("a");
link.download = getFileName() + "MinimalDataAPI.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);
}
/**
* Downloads created data of getCellJSONData()
*
* @see getCellJSONData
*/
function downloadCellsDataJSON() {
if (customization) return tip("Map cannot be saved when edit mode is active, please exit the mode and retry", false, "error");
closeDialogs("#alert");
const mapData = getCellJSONData();
const blob = new Blob([mapData], {type: "application/json"});
const URL = window.URL.createObjectURL(blob);
const link = document.createElement("a");
link.download = getFileName() + "CellsData.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);
}
/**
* Gets current loaded map data as a JSON string.
* The file contains data looks like:
* - info
* - settings (because population and other things are related to this)
* - coords
* - notes
* - pack
*
* @returns {string} JSONString of loaded and constructed data object
*/
function getMapDataAPIJson() {
TIME && console.time("createMapDataJson");
const date = new Date();
const dateString = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
const info = {
"version": version,
"description": "Api-Like Output File Gathered From: azgaar.github.io/Fantasy-map-generator",
"creation-date":dateString,
"seed" : seed,
"mapId":mapId,
"mapName" : mapName.value
}
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
};
const coords = mapCoordinates;
const packs = {
"cells":{
"h": pack.cells.h,
"f": pack.cells.f,
"t": pack.cells.t,
"s": pack.cells.s,
"biome": pack.cells.biome,
"burg": pack.cells.burg,
"culture": pack.cells.culture,
"state": pack.cells.state,
"province" : pack.cells.province,
"religion" : pack.cells.religion,
"area": pack.cells.area,
"pop" : pack.cells.pop,
"r" : pack.cells.r,
"fl" : pack.cells.fl,
"conf" : pack.cells.conf,
"harbor":pack.cells.harbor,
"haven" : pack.cells.haven,
"road":pack.cells.road,
"crossroad":pack.cells.crossroad
},
"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 biomes = biomesData;
const ExportData = {info,settings,coords,packs,biomes,notes,nameBases}
TIME && console.timeEnd("createMapDataJson");
return JSON.stringify(ExportData);
}
/**
* For exporting as JSON without pack.cells
* This can become handy if user don't want a huge data.
* For assigning data to cells user must download cells data with downloadCellsData().
*
* @returns {string} JSONString data of the created object
*/
function getMinimalMapJSONData(){
TIME && console.time("createMapDataMinimalJson");
const date = new Date();
const dateString = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
const info = {
"version": version,
"description": "Api-Like Output File Gathered From: azgaar.github.io/Fantasy-map-generator",
"creation-date":dateString,
"seed" : seed,
"mapId":mapId,
"mapName" : mapName.value
}
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
};
const coords = mapCoordinates;
const packs = {
"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 biomes = biomesData;
const ExportData = {info,settings,coords,packs,biomes,notes,nameBases}
TIME && console.timeEnd("createMapDataMinimalJson");
return JSON.stringify(ExportData);
}
/**
* Gets data that created with info and pack.cell
* This function is created for primarly pack.cell data is too big.
* for speeding up the proccess the main data and cell data is seperated as two files.
*
* exported data look like:
* - info
* - cells
*
* @see pack
* @see getMinimalMapJSONData
* @returns {string} The JSONString of pack.cell
*/
function getCellJSONData() {
TIME && console.time("createMapDataMinimalJson");
const date = new Date();
const dateString = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
const info = {
"version": version,
"description": "Api-Like Output File Gathered From: azgaar.github.io/Fantasy-map-generator",
"creation-date":dateString,
"seed" : seed,
"mapId":mapId,
"mapName" : mapName.value
}
const cells = pack.cells
const ExportData = {info, cells}
TIME && console.timeEnd("createMapDataMinimalJson");
return JSON.stringify(ExportData);
}