diff --git a/public/modules/ui/heightmap-editor.js b/public/modules/ui/heightmap-editor.js
index 6e76c4bb..e204055a 100644
--- a/public/modules/ui/heightmap-editor.js
+++ b/public/modules/ui/heightmap-editor.js
@@ -330,15 +330,11 @@ function editHeightmap(options) {
c.y = p[1];
}
- // recalculate zones to grid
- zones.selectAll("g").each(function () {
- const zone = d3.select(this);
- const dataCells = zone.attr("data-cells");
- const cells = dataCells ? dataCells.split(",").map(i => +i) : [];
- const g = cells.map(i => pack.cells.g[i]);
- zone.attr("data-cells", g);
- zone.selectAll("*").remove();
- });
+ const zoneGridCellsMap = new Map();
+ for (const zone of pack.zones) {
+ if (!zone.cells || !zone.cells.length) continue;
+ zoneGridCellsMap.set(zone.i, zone.cells.map(i => pack.cells.g[i]));
+ }
Features.markupGrid();
if (erosionAllowed) addLakesInDeepDepressions();
@@ -448,24 +444,18 @@ function editHeightmap(options) {
Lakes.defineNames();
}
- // restore zones from grid
- zones.selectAll("g").each(function () {
- const zone = d3.select(this);
- const g = zone.attr("data-cells");
- const gCells = g ? g.split(",").map(i => +i) : [];
- const cells = pack.cells.i.filter(i => gCells.includes(pack.cells.g[i]));
+ const gridToPackMap = new Map();
+ for (const i of pack.cells.i) {
+ const g = pack.cells.g[i];
+ if (!gridToPackMap.has(g)) gridToPackMap.set(g, []);
+ gridToPackMap.get(g).push(i);
+ }
- zone.attr("data-cells", cells);
- zone.selectAll("*").remove();
- const base = zone.attr("id") + "_"; // id generic part
- zone
- .selectAll("*")
- .data(cells)
- .enter()
- .append("polygon")
- .attr("points", d => getPackPolygon(d))
- .attr("id", d => base + d);
- });
+ for (const zone of pack.zones) {
+ const gridCells = zoneGridCellsMap.get(zone.i);
+ if (!gridCells || !gridCells.length) continue;
+ zone.cells = gridCells.flatMap(g => gridToPackMap.get(g) || []);
+ }
// recalculate ice
Ice.generate();
diff --git a/public/versioning.js b/public/versioning.js
index fd2a67a2..056b30e2 100644
--- a/public/versioning.js
+++ b/public/versioning.js
@@ -13,7 +13,7 @@
* Example: 1.102.2 -> Major version 1, Minor version 102, Patch version 2
*/
-const VERSION = "1.112.1";
+const VERSION = "1.112.2";
if (parseMapVersion(VERSION) !== VERSION) alert("versioning.js: Invalid format or parsing function");
{
diff --git a/src/index.html b/src/index.html
index 668803de..ca605c87 100644
--- a/src/index.html
+++ b/src/index.html
@@ -8511,7 +8511,7 @@
-
+