fix: support migration of v0.9 maps

This commit is contained in:
Azgaar 2024-07-30 17:54:17 +02:00
parent 00abd5213b
commit b267e832b5
5 changed files with 19 additions and 9 deletions

View file

@ -8095,7 +8095,7 @@
<script src="modules/heightmap-generator.js?v=1.88.00"></script> <script src="modules/heightmap-generator.js?v=1.88.00"></script>
<script src="modules/ocean-layers.js?v=1.98.04"></script> <script src="modules/ocean-layers.js?v=1.98.04"></script>
<script src="modules/river-generator.js?v=1.89.13"></script> <script src="modules/river-generator.js?v=1.89.13"></script>
<script src="modules/lakes.js"></script> <script src="modules/lakes.js?v=1.98.06"></script>
<script src="modules/biomes.js"></script> <script src="modules/biomes.js"></script>
<script src="modules/names-generator.js?v=1.87.14"></script> <script src="modules/names-generator.js?v=1.87.14"></script>
<script src="modules/cultures-generator.js?v=1.96.05"></script> <script src="modules/cultures-generator.js?v=1.96.05"></script>
@ -8159,7 +8159,7 @@
<script defer src="libs/rgbquant.min.js"></script> <script defer src="libs/rgbquant.min.js"></script>
<script defer src="libs/jquery.ui.touch-punch.min.js"></script> <script defer src="libs/jquery.ui.touch-punch.min.js"></script>
<script defer src="modules/io/save.js?v=1.98.01"></script> <script defer src="modules/io/save.js?v=1.98.01"></script>
<script defer src="modules/io/load.js?v=1.98.01"></script> <script defer src="modules/io/load.js?v=1.98.06"></script>
<script defer src="modules/io/cloud.js?v=1.96.00"></script> <script defer src="modules/io/cloud.js?v=1.96.00"></script>
<script defer src="modules/io/export.js?v=1.98.05"></script> <script defer src="modules/io/export.js?v=1.98.05"></script>

View file

@ -243,10 +243,12 @@ export function resolveVersionConflicts(version) {
rivers.selectAll("path").each(function () { rivers.selectAll("path").each(function () {
const i = +this.id.slice(5); const i = +this.id.slice(5);
const length = this.getTotalLength() / 2; const length = this.getTotalLength() / 2;
const s = this.getPointAtLength(length), if (!length) return;
e = this.getPointAtLength(0);
const source = findCell(s.x, s.y), const s = this.getPointAtLength(length);
mouth = findCell(e.x, e.y); const e = this.getPointAtLength(0);
const source = findCell(s.x, s.y);
const mouth = findCell(e.x, e.y);
const name = Rivers.getName(mouth); const name = Rivers.getName(mouth);
const type = length < 25 ? rw({Creek: 9, River: 3, Brook: 3, Stream: 1}) : "River"; const type = length < 25 ? rw({Creek: 9, River: 3, Brook: 3, Stream: 1}) : "River";
pack.rivers.push({i, parent: 0, length, source, mouth, basin: i, name, type}); pack.rivers.push({i, parent: 0, length, source, mouth, basin: i, name, type});

View file

@ -348,6 +348,10 @@ async function parseLoadedData(data, mapVersion) {
.attr("id", "texture") .attr("id", "texture")
.attr("data-href", "./images/textures/plaster.jpg"); .attr("data-href", "./images/textures/plaster.jpg");
} }
if (!emblems.size()) {
emblems = viewbox.insert("g", "#labels").attr("id", "emblems").style("display", "none");
}
})(); })();
void (function parseGridData() { void (function parseGridData() {
@ -457,7 +461,7 @@ async function parseLoadedData(data, mapVersion) {
{ {
// dynamically import and run auto-update script // dynamically import and run auto-update script
const versionNumber = parseFloat(params[0]); const versionNumber = parseFloat(params[0]);
const {resolveVersionConflicts} = await import("../dynamic/auto-update.js?v=1.98.00"); const {resolveVersionConflicts} = await import("../dynamic/auto-update.js?v=1.98.06");
resolveVersionConflicts(versionNumber); resolveVersionConflicts(versionNumber);
} }

View file

@ -12,7 +12,10 @@ window.Lakes = (function () {
f.flux = f.shoreline.reduce((acc, c) => acc + grid.cells.prec[cells.g[c]], 0); f.flux = f.shoreline.reduce((acc, c) => acc + grid.cells.prec[cells.g[c]], 0);
// temperature and evaporation to detect closed lakes // temperature and evaporation to detect closed lakes
f.temp = f.cells < 6 ? grid.cells.temp[cells.g[f.firstCell]] : rn(d3.mean(f.shoreline.map(c => grid.cells.temp[cells.g[c]])), 1); f.temp =
f.cells < 6
? grid.cells.temp[cells.g[f.firstCell]]
: rn(d3.mean(f.shoreline.map(c => grid.cells.temp[cells.g[c]])), 1);
const height = (f.height - 18) ** heightExponentInput.value; // height in meters const height = (f.height - 18) ** heightExponentInput.value; // height in meters
const evaporation = ((700 * (f.temp + 0.006 * height)) / 50 + 75) / (80 - f.temp); // based on Penman formula, [1-11] const evaporation = ((700 * (f.temp + 0.006 * height)) / 50 + 75) / (80 - f.temp); // based on Penman formula, [1-11]
f.evaporation = rn(evaporation * f.cells); f.evaporation = rn(evaporation * f.cells);
@ -31,6 +34,7 @@ window.Lakes = (function () {
// get array of land cells aroound lake // get array of land cells aroound lake
const getShoreline = function (lake) { const getShoreline = function (lake) {
const uniqueCells = new Set(); const uniqueCells = new Set();
if (!lake.vertices) lake.vertices = [];
lake.vertices.forEach(v => pack.vertices.c[v].forEach(c => pack.cells.h[c] >= 20 && uniqueCells.add(c))); lake.vertices.forEach(v => pack.vertices.c[v].forEach(c => pack.cells.h[c] >= 20 && uniqueCells.add(c)));
lake.shoreline = [...uniqueCells]; lake.shoreline = [...uniqueCells];
}; };

View file

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