fix: city preview - sea orientation

This commit is contained in:
Azgaar 2025-03-31 02:11:59 +02:00
parent c16d292304
commit a5939be6e2

View file

@ -299,14 +299,13 @@ window.Burgs = (() => {
order: 2, order: 2,
min: 0.1, min: 0.1,
max: 2, max: 2,
features: {walls: false},
preview: "watabou-village" preview: "watabou-village"
}, },
{ {
name: "hamlet", name: "hamlet",
active: true, active: true,
order: 1, order: 1,
features: {walls: false, plaza: false}, features: {plaza: false},
max: 0.1, max: 0.1,
preview: "watabou-village" preview: "watabou-village"
}, },
@ -384,12 +383,13 @@ window.Burgs = (() => {
const sea = (() => { const sea = (() => {
if (!coast || !cells.haven[cell]) return null; if (!coast || !cells.haven[cell]) return null;
// calculate see direction: 0 = south, 0.5 = west, 1 = north, 1.5 = east // calculate see direction: 0 = east, 0.5 = north, 1 = west, 1.5 = south
const p1 = cells.p[cell]; const [x1, y1] = cells.p[cell];
const p2 = cells.p[cells.haven[cell]]; const [x2, y2] = cells.p[cells.haven[cell]];
let deg = (Math.atan2(p2[1] - p1[1], p2[0] - p1[0]) * 180) / Math.PI - 90; const deg = (Math.atan2(y2 - y1, x2 - x1) * 180) / Math.PI;
if (deg < 0) deg += 360;
return rn(normalize(deg, 0, 360) * 2, 2); if (deg <= 0) return normalize(Math.abs(deg), 0, 180);
return 2 - normalize(deg, 0, 180);
})(); })();
const arableBiomes = river ? [1, 2, 3, 4, 5, 6, 7, 8] : [5, 6, 7, 8]; const arableBiomes = river ? [1, 2, 3, 4, 5, 6, 7, 8] : [5, 6, 7, 8];
@ -404,6 +404,8 @@ window.Burgs = (() => {
const temple = +burg.temple; const temple = +burg.temple;
const shantytown = +burg.shanty; const shantytown = +burg.shanty;
const style = "bw";
const url = new URL("https://watabou.github.io/city-generator/"); const url = new URL("https://watabou.github.io/city-generator/");
url.search = new URLSearchParams({ url.search = new URLSearchParams({
name, name,
@ -420,7 +422,8 @@ window.Burgs = (() => {
temple, temple,
walls, walls,
shantytown, shantytown,
gates: -1 gates: -1,
style
}); });
if (sea) url.searchParams.append("sea", sea); if (sea) url.searchParams.append("sea", sea);
@ -455,6 +458,7 @@ window.Burgs = (() => {
if (temp <= 0 || temp > 28 || (temp > 25 && each(3)(cell))) tags.push("no orchards"); if (temp <= 0 || temp > 28 || (temp > 25 && each(3)(cell))) tags.push("no orchards");
if (!burg.plaza) tags.push("no square"); if (!burg.plaza) tags.push("no square");
if (burg.walls) tags.push("palisade");
if (pop < 100) tags.push("sparse"); if (pop < 100) tags.push("sparse");
else if (pop > 300) tags.push("dense"); else if (pop > 300) tags.push("dense");
@ -469,8 +473,14 @@ window.Burgs = (() => {
})(); })();
const height = rn(width / 2.05); const height = rn(width / 2.05);
const style = (() => {
if ([1, 2].includes(biome)) return "sand";
if (temp <= 5 || [9, 10, 11].includes(biome)) return "snow";
return "minimal";
})();
const url = new URL("https://watabou.github.io/village-generator/"); const url = new URL("https://watabou.github.io/village-generator/");
url.search = new URLSearchParams({pop, name: "", seed: burgSeed, width, height, tags}); url.search = new URLSearchParams({pop, name: burg.name, seed: burgSeed, width, height, style, tags});
const link = url.toString(); const link = url.toString();
return {link, preview: link + "&preview=1"}; return {link, preview: link + "&preview=1"};