mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-22 03:51:23 +01:00
pack & save data separately in .map format
This commit is contained in:
parent
dca6371b4d
commit
a7b4ebae1b
1 changed files with 36 additions and 16 deletions
|
|
@ -135,17 +135,18 @@ function GFontToDataURI(url) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save in .map format
|
function packageMapData() {
|
||||||
function saveMap() {
|
|
||||||
if (customization) {tip("Map cannot be saved when is in edit mode, please exit the mode and re-try", false, "error"); return;}
|
if (customization) {tip("Map cannot be saved when is in edit mode, please exit the mode and re-try", false, "error"); return;}
|
||||||
console.time("saveMap");
|
console.time("saveMap");
|
||||||
const date = new Date();
|
const date = new Date();
|
||||||
const dateString = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
|
const dateString = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
|
||||||
const license = "File can be loaded in azgaar.github.io/Fantasy-Map-Generator";
|
const license = "File can be loaded in azgaar.github.io/Fantasy-Map-Generator";
|
||||||
const params = [version, license, dateString, seed, graphWidth, graphHeight].join("|");
|
const params = [version, license, dateString, seed, graphWidth, graphHeight].join("|");
|
||||||
const options = [distanceUnit.value, distanceScale.value, areaUnit.value, heightUnit.value, heightExponent.value, temperatureScale.value,
|
const options = [
|
||||||
barSize.value, barLabel.value, barBackOpacity.value, barBackColor.value, barPosX.value, barPosY.value, populationRate.value, urbanization.value,
|
distanceUnit.value, distanceScale.value, areaUnit.value, heightUnit.value, heightExponent.value, temperatureScale.value,
|
||||||
equatorOutput.value, equidistanceOutput.value, temperatureEquatorOutput.value, temperaturePoleOutput.value, precOutput.value, JSON.stringify(winds)].join("|");
|
barSize.value, barLabel.value, barBackOpacity.value, barBackColor.value, barPosX.value, barPosY.value, populationRate.value, urbanization.value,
|
||||||
|
equatorOutput.value, equidistanceOutput.value, temperatureEquatorOutput.value, temperaturePoleOutput.value, precOutput.value, JSON.stringify(winds)
|
||||||
|
].join("|");
|
||||||
const coords = JSON.stringify(mapCoordinates);
|
const coords = JSON.stringify(mapCoordinates);
|
||||||
const biomes = [biomesData.color, biomesData.habitability, biomesData.name].join("|");
|
const biomes = [biomesData.color, biomesData.habitability, biomesData.name].join("|");
|
||||||
const notesData = JSON.stringify(notes);
|
const notesData = JSON.stringify(notes);
|
||||||
|
|
@ -162,11 +163,24 @@ function saveMap() {
|
||||||
const states = JSON.stringify(pack.states);
|
const states = JSON.stringify(pack.states);
|
||||||
const burgs = JSON.stringify(pack.burgs);
|
const burgs = JSON.stringify(pack.burgs);
|
||||||
|
|
||||||
const data = [params, options, coords, biomes, notesData, svg_xml,
|
const data = [
|
||||||
|
params, options, coords, biomes, notesData, svg_xml,
|
||||||
gridGeneral, grid.cells.h, grid.cells.prec, grid.cells.f, grid.cells.t, grid.cells.temp,
|
gridGeneral, grid.cells.h, grid.cells.prec, grid.cells.f, grid.cells.t, grid.cells.temp,
|
||||||
features, cultures, states, burgs,
|
features, cultures, states, burgs,
|
||||||
pack.cells.biome, pack.cells.burg, pack.cells.conf, pack.cells.culture, pack.cells.fl,
|
pack.cells.biome, pack.cells.burg, pack.cells.conf, pack.cells.culture, pack.cells.fl,
|
||||||
pack.cells.pop, pack.cells.r, pack.cells.road, pack.cells.s, pack.cells.state].join("\r\n");
|
pack.cells.pop, pack.cells.r, pack.cells.road, pack.cells.s, pack.cells.state
|
||||||
|
].join("\r\n");
|
||||||
|
|
||||||
|
// restore initial values
|
||||||
|
svg.attr("width", svgWidth).attr("height", svgHeight);
|
||||||
|
zoom.transform(svg, transform);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save in .map format
|
||||||
|
function saveMap() {
|
||||||
|
const data = packageMapData();
|
||||||
const dataBlob = new Blob([data], {type: "text/plain"});
|
const dataBlob = new Blob([data], {type: "text/plain"});
|
||||||
const dataURL = window.URL.createObjectURL(dataBlob);
|
const dataURL = window.URL.createObjectURL(dataBlob);
|
||||||
const link = document.createElement("a");
|
const link = document.createElement("a");
|
||||||
|
|
@ -175,23 +189,18 @@ function saveMap() {
|
||||||
document.body.appendChild(link);
|
document.body.appendChild(link);
|
||||||
link.click();
|
link.click();
|
||||||
|
|
||||||
// restore initial values
|
|
||||||
svg.attr("width", svgWidth).attr("height", svgHeight);
|
|
||||||
zoom.transform(svg, transform);
|
|
||||||
|
|
||||||
window.setTimeout(function() {window.URL.revokeObjectURL(dataURL);}, 2000);
|
window.setTimeout(function() {window.URL.revokeObjectURL(dataURL);}, 2000);
|
||||||
console.timeEnd("saveMap");
|
console.timeEnd("saveMap");
|
||||||
}
|
}
|
||||||
|
|
||||||
function uploadFile(file, callback) {
|
function uploadFile(file, callback) {
|
||||||
console.time("loadMap");
|
|
||||||
const fileReader = new FileReader();
|
const fileReader = new FileReader();
|
||||||
fileReader.onload = function(fileLoadedEvent) {
|
fileReader.onload = function(fileLoadedEvent) {
|
||||||
const dataLoaded = fileLoadedEvent.target.result;
|
const dataLoaded = fileLoadedEvent.target.result;
|
||||||
const data = dataLoaded.split("\r\n");
|
const data = dataLoaded.split("\r\n");
|
||||||
|
|
||||||
const mapVersion = data[0].split("|")[0] || data[0];
|
const mapVersion = data[0].split("|")[0] || data[0];
|
||||||
if (mapVersion === version) {parseLoadedData(data); return;}
|
if (mapVersion === version) {displayMapData(data); return;}
|
||||||
|
|
||||||
const archive = "<a href='https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Changelog' target='_blank'>archived version</a>";
|
const archive = "<a href='https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Changelog' target='_blank'>archived version</a>";
|
||||||
const parsed = parseFloat(mapVersion);
|
const parsed = parseFloat(mapVersion);
|
||||||
|
|
@ -209,7 +218,7 @@ function uploadFile(file, callback) {
|
||||||
}
|
}
|
||||||
alertMessage.innerHTML = message;
|
alertMessage.innerHTML = message;
|
||||||
$("#alert").dialog({title: "Version conflict", buttons: {
|
$("#alert").dialog({title: "Version conflict", buttons: {
|
||||||
OK: function() {$(this).dialog("close"); if (load) parseLoadedData(data);}
|
OK: function() {$(this).dialog("close"); if (load) displayMapData(data);}
|
||||||
}});
|
}});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -217,7 +226,8 @@ function uploadFile(file, callback) {
|
||||||
if (callback) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseLoadedData(data) {
|
function displayMapData(data) {
|
||||||
|
console.time("loadMap");
|
||||||
closeDialogs();
|
closeDialogs();
|
||||||
|
|
||||||
void function parseParameters() {
|
void function parseParameters() {
|
||||||
|
|
@ -370,6 +380,16 @@ function parseLoadedData(data) {
|
||||||
if (scaleBar.style("display") !== "none") turnButtonOn("toggleScaleBar"); else turnButtonOff("toggleScaleBar");
|
if (scaleBar.style("display") !== "none") turnButtonOn("toggleScaleBar"); else turnButtonOff("toggleScaleBar");
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
void function establishHistory() {
|
||||||
|
mapHistory.push({
|
||||||
|
created: Date.now(),
|
||||||
|
height: graphHeight,
|
||||||
|
seed,
|
||||||
|
template: templateInput.value,
|
||||||
|
width: graphWidth,
|
||||||
|
});
|
||||||
|
}()
|
||||||
|
|
||||||
changeMapSize();
|
changeMapSize();
|
||||||
restoreDefaultEvents();
|
restoreDefaultEvents();
|
||||||
invokeActiveZooming();
|
invokeActiveZooming();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue