mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 01:41:22 +01:00
Bugfix (#763)
* fix concurency issue at load * Fix async concurrency error. Co-authored-by: GoteGuru <monk@geotronic.hu>
This commit is contained in:
parent
4b10b60c69
commit
1384daf6f9
1 changed files with 22 additions and 15 deletions
35
main.js
35
main.js
|
|
@ -172,7 +172,7 @@ landmass.append("rect").attr("x", 0).attr("y", 0).attr("width", graphWidth).attr
|
||||||
oceanPattern.append("rect").attr("fill", "url(#oceanic)").attr("x", 0).attr("y", 0).attr("width", graphWidth).attr("height", graphHeight);
|
oceanPattern.append("rect").attr("fill", "url(#oceanic)").attr("x", 0).attr("y", 0).attr("width", graphWidth).attr("height", graphHeight);
|
||||||
oceanLayers.append("rect").attr("id", "oceanBase").attr("x", 0).attr("y", 0).attr("width", graphWidth).attr("height", graphHeight);
|
oceanLayers.append("rect").attr("id", "oceanBase").attr("x", 0).attr("y", 0).attr("width", graphWidth).attr("height", graphHeight);
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", async () => {
|
||||||
if (!location.hostname) {
|
if (!location.hostname) {
|
||||||
const wiki = "https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Run-FMG-locally";
|
const wiki = "https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Run-FMG-locally";
|
||||||
alertMessage.innerHTML = `Fantasy Map Generator cannot run serverless.
|
alertMessage.innerHTML = `Fantasy Map Generator cannot run serverless.
|
||||||
|
|
@ -194,7 +194,7 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||||
d3.select("#init-rose").transition().duration(4000).style("opacity", 0);
|
d3.select("#init-rose").transition().duration(4000).style("opacity", 0);
|
||||||
} else {
|
} else {
|
||||||
hideLoading();
|
hideLoading();
|
||||||
checkLoadParameters();
|
await checkLoadParameters();
|
||||||
}
|
}
|
||||||
restoreDefaultEvents(); // apply default viewbox events
|
restoreDefaultEvents(); // apply default viewbox events
|
||||||
});
|
});
|
||||||
|
|
@ -214,7 +214,7 @@ function showLoading() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// decide which map should be loaded or generated on page load
|
// decide which map should be loaded or generated on page load
|
||||||
function checkLoadParameters() {
|
async function checkLoadParameters() {
|
||||||
const url = new URL(window.location.href);
|
const url = new URL(window.location.href);
|
||||||
const params = url.searchParams;
|
const params = url.searchParams;
|
||||||
|
|
||||||
|
|
@ -235,32 +235,39 @@ function checkLoadParameters() {
|
||||||
// if there is a seed (user of MFCG provided), generate map for it
|
// if there is a seed (user of MFCG provided), generate map for it
|
||||||
if (params.get("seed")) {
|
if (params.get("seed")) {
|
||||||
WARN && console.warn("Generate map for seed");
|
WARN && console.warn("Generate map for seed");
|
||||||
generateMapOnLoad();
|
await generateMapOnLoad();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// open latest map if option is active and map is stored
|
// open latest map if option is active and map is stored
|
||||||
if (onloadMap.value === "saved") {
|
const loadLastMap = () => new Promise((resolve, reject) => {
|
||||||
ldb.get("lastMap", blob => {
|
ldb.get("lastMap", blob => {
|
||||||
if (blob) {
|
if (blob) {
|
||||||
WARN && console.warn("Load last saved map");
|
WARN && console.warn("Load last saved map");
|
||||||
try {
|
try {
|
||||||
uploadMap(blob);
|
uploadMap(blob);
|
||||||
|
resolve();
|
||||||
|
} catch (error) {
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
reject("No map stored");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
if (onloadMap.value === "saved") {
|
||||||
|
try {
|
||||||
|
await loadLastMap();
|
||||||
} catch(error) {
|
} catch(error) {
|
||||||
ERROR && console.error(error);
|
ERROR && console.error(error);
|
||||||
WARN && console.warn("Cannot load stored map, random map to be generated");
|
WARN && console.warn("Cannot load stored map, random map to be generated");
|
||||||
generateMapOnLoad();
|
await generateMapOnLoad();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ERROR && console.error("No map stored, random map to be generated");
|
|
||||||
generateMapOnLoad();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
WARN && console.warn("Generate random map");
|
WARN && console.warn("Generate random map");
|
||||||
generateMapOnLoad();
|
await generateMapOnLoad();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function generateMapOnLoad() {
|
async function generateMapOnLoad() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue