feat(world): Rasen grün tönen statt roh sandfarben

leafy_grass ist roh sandfarben (Mittel der Diffuse-Kachel R 151, G 131,
B 89). Seit der Park seine echte Fläche als eigene Schicht trägt (102 790
statt 16 798 m² im Parkrechteck), las er sich aus der Vogelperspektive wie
eine Brache, während ihn die Minimap grün zeichnet. PARK_TINT 0xb4dc94
tönt Rot und Blau stärker ab als Grün; die Felder behalten ihren helleren
FIELD_TINT und heben sich weiter ab.

Im Browser abgestimmt (Task 12, Schritt 7) und vom Nutzer so gewählt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
knsoandClaude Opus 5 committed 2026-09-16 13:04:50 +02:00
1 parent a7271d2331
commit 4f68a3f625
1 file changed
+8 -3
+8 -3
View File
@@ -32,8 +32,13 @@ const FALLBACK_COLORS = {
// also wird hier die hellere Straße (und die jetzt identisch texturierte Brücke)
// abgetönt statt die Stadtfläche zu verändern.
const ROAD_TINT = 0x999999;
// Felder heben sich vom Rasen ab. material.color kann nur abdunkeln, also Rot und Blau stärker als Grün;
// abgestimmt wird im Browser.
// leafy_grass ist roh sandfarben (Mittel der Diffuse-Kachel: R 151, G 131, B 89): aus der
// Vogelperspektive las sich der Park wie eine Brache, während ihn die Minimap (overview.py) grün
// zeichnet. material.color kann nur abdunkeln, also Rot und Blau stärker als Grün. Im Browser
// abgestimmt (Task 12, Schritt 7).
const PARK_TINT = 0xb4dc94;
// Felder heben sich vom Rasen ab: dieselbe Textur, aber heller getönt als PARK_TINT — gemähter Platz
// im Rasen. material.color kann nur abdunkeln, also Rot und Blau stärker als Grün.
const FIELD_TINT = 0xc8f0b0;
// Klone statt zweiter Ladevorgang: dieselben Texturen, eigene Tönung und eigener polygonOffset.
const CLONES = { field: { from: "park", tint: FIELD_TINT }, parking: { from: "roads" } };
@@ -138,7 +143,7 @@ export function applyPolygonOffsets(materials) {
export async function createMaterials(maxAnisotropy) {
const loader = new TextureLoader();
const tints = { roads: ROAD_TINT, bridges: ROAD_TINT };
const tints = { roads: ROAD_TINT, bridges: ROAD_TINT, park: PARK_TINT };
const textured = MATERIAL_KEYS.filter((key) => !CLONES[key] && !SURFACE_COLORS[key]);
const entries = await Promise.all(
textured.map(async (key) =>