feat: move biomes code to a separate module, reduce deserts amount

This commit is contained in:
Azgaar 2023-08-11 14:31:08 +04:00
parent 71cc739b4d
commit 1bb90251cd
9 changed files with 185 additions and 135 deletions

View file

@ -88,7 +88,9 @@ function editBiomes() {
const rural = b.rural[i] * populationRate;
const urban = b.urban[i] * populationRate * urbanization;
const population = rn(rural + urban);
const populationTip = `Total population: ${si(population)}; Rural population: ${si(rural)}; Urban population: ${si(urban)}`;
const populationTip = `Total population: ${si(population)}; Rural population: ${si(
rural
)}; Urban population: ${si(urban)}`;
totalArea += area;
totalPopulation += population;
@ -104,7 +106,9 @@ function editBiomes() {
data-color=${b.color[i]}
>
<fill-box fill="${b.color[i]}"></fill-box>
<input data-tip="Biome name. Click and type to change" class="biomeName" value="${b.name[i]}" autocorrect="off" spellcheck="false" />
<input data-tip="Biome name. Click and type to change" class="biomeName" value="${
b.name[i]
}" autocorrect="off" spellcheck="false" />
<span data-tip="Biome habitability percent" class="hide">%</span>
<input
data-tip="Biome habitability percent. Click and set new value to change"
@ -121,7 +125,11 @@ function editBiomes() {
<span data-tip="${populationTip}" class="icon-male hide"></span>
<div data-tip="${populationTip}" class="biomePopulation hide">${si(population)}</div>
<span data-tip="Open Wikipedia article about the biome" class="icon-info-circled pointer hide"></span>
${i > 12 && !b.cells[i] ? '<span data-tip="Remove the custom biome" class="icon-trash-empty hide"></span>' : ""}
${
i > 12 && !b.cells[i]
? '<span data-tip="Remove the custom biome" class="icon-trash-empty hide"></span>'
: ""
}
</div>
`;
}
@ -403,7 +411,14 @@ function editBiomes() {
// change of append new element
if (exists.size()) exists.attr("data-biome", biomeNew).attr("fill", color).attr("stroke", color);
else temp.append("polygon").attr("data-cell", i).attr("data-biome", biomeNew).attr("points", getPackPolygon(i)).attr("fill", color).attr("stroke", color);
else
temp
.append("polygon")
.attr("data-cell", i)
.attr("data-biome", biomeNew)
.attr("points", getPackPolygon(i))
.attr("fill", color)
.attr("stroke", color);
});
}
@ -449,8 +464,8 @@ function editBiomes() {
}
function restoreInitialBiomes() {
biomesData = applyDefaultBiomesSystem();
defineBiomes();
biomesData = Biomes.getDefault();
Biomes.define();
drawBiomes();
recalculatePopulation();
refreshBiomesEditor();

View file

@ -239,7 +239,7 @@ function editHeightmap(options) {
drawRivers();
Lakes.defineGroup();
defineBiomes();
Biomes.define();
rankCells();
Cultures.generate();
@ -373,10 +373,6 @@ function editHeightmap(options) {
const g = pack.cells.g[i];
const isLand = pack.cells.h[i] >= 20;
// check biome
pack.cells.biome[i] =
isLand && biome[g] ? biome[g] : getBiomeId(grid.cells.prec[g], grid.cells.temp[g], pack.cells.h[i]);
// rivers data
if (!erosionAllowed) {
pack.cells.r[i] = r[g];
@ -384,6 +380,12 @@ function editHeightmap(options) {
pack.cells.fl[i] = fl[g];
}
// check biome
pack.cells.biome[i] =
isLand && biome[g]
? biome[g]
: Biomes.getId(grid.cells.prec[g], grid.cells.temp[g], pack.cells.h[i], Boolean(pack.cells.r[i]));
if (!isLand) continue;
pack.cells.culture[i] = culture[g];
pack.cells.pop[i] = pop[g];

View file

@ -85,7 +85,7 @@ function editWorld() {
Lakes.defineGroup();
Rivers.specify();
pack.cells.h = new Float32Array(heights);
defineBiomes();
Biomes.define();
if (layerIsOn("toggleTemp")) drawTemp();
if (layerIsOn("togglePrec")) drawPrec();