Tourismustal: Editor-Export Runde 1 fest eingebacken

Thomas' Justier-Werte (2026-07-12) in SPRITE_DEFS + SOLAR_POS uebernommen:
Gasthaus/Rettungsstation/Bushaltestelle-Anker korrigiert, Mega-Hotel/
-Gasthaus/-Schneizentrale/-Spielplatz neu gesetzt, 40+ Solar-Positionen
pro Gebaeude UND Ausbaustufe (inkl. Lift/Gondel/Bus). Lift/Gondel-
Sprite-Werte bewusst ausgelassen (Vektor-Zeichnungen, wirkungslos).
Gilt jetzt fuer ALLE Geraete, nicht nur das Justier-iPad.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 00:25:13 +02:00
parent 6d00a762bc
commit cff7c11853
+56 -14
View File
@@ -25,30 +25,28 @@ const TERRAIN_COLORS = {
// KI-generierte Sprites (Nordic-Flat, transparent). Fehlt eine Datei,
// greift automatisch die Vektor-Zeichnung als Fallback.
// w = Zeichenbreite in px, bottom = Abstand Unterkante Motiv → Kachelmitte
// Werte aus Thomas' Editor-Export 2026-07-12 (erste Justier-Runde) —
// weitere Feinjustagen kommen über editor.html → Export → hier einbacken.
export const SPRITE_DEFS = {
restaurant: { w: 78, bottom: 10 },
restaurant: { w: 69, bottom: 17 },
hotel: { w: 88, bottom: 10 },
hotel2: { w: 104, bottom: 11 },
staffhouse: { w: 64, bottom: 9 },
house: { w: 54, bottom: 8 },
church: { w: 66, bottom: 9 },
access: { w: 52, bottom: 8 },
rescue: { w: 60, bottom: 9 },
access: { w: 38, bottom: 15 },
rescue: { w: 51, bottom: 19 },
snow: { w: 44, bottom: 7 },
bikepark: { w: 58, bottom: 8 }, // Basisstation; Strecke via _drawBikeParks
// 2×2-Areale (Megabauwerke): Mitte des Sprites = Mitte der 4 Kacheln;
// w/bottom so, dass der Fuß bis zur vorderen Kachel-Spitze reicht
// (~40 px unter dem Zentrum: bottom + 0.12·w ≈ 38).
// Megabauwerke: eigene Motive (mehr Elemente statt vergrößerter Fenster)
mega_restaurant: { w: 116, bottom: 24 },
mega_hotel: { w: 118, bottom: 24 },
// Megabauwerke (2×2): eigene Motive, zentriert über den 4 Kacheln
mega_restaurant: { w: 122, bottom: 41 },
mega_hotel: { w: 102, bottom: 30 },
mega_staffhouse: { w: 114, bottom: 24 },
mega_snow: { w: 108, bottom: 24 },
mega_snow: { w: 92, bottom: 30 },
mega_badesee: { w: 122, bottom: 26 },
mega_ropes: { w: 116, bottom: 22 },
mega_playground: { w: 116, bottom: 24 },
mega_playground: { w: 121, bottom: 25 },
mega_bikerental: { w: 110, bottom: 24 },
mega_trail: { w: 112, bottom: 22 },
ropes: { w: 58, bottom: 8 },
bikerental: { w: 50, bottom: 8 },
platform: { w: 62, bottom: 9 },
@@ -62,11 +60,55 @@ export const SPRITE_DEFS = {
broadleaf: { w: 44, bottom: 6 },
};
// Solarpanel-Position (Öko-Umbau) je Sprite-Key; Fallback default/defaultBig.
// dx/dy relativ zum Gebäude-Ankerpunkt, s = Skalierung.
// Solarpanel-Position (Öko-Umbau) je Sprite-Key, optional pro Ausbaustufe
// ("<key>@L<stufe>"). Fallback default/defaultBig. dx/dy relativ zum
// Gebäude-Ankerpunkt, s = Skalierung. Werte: Editor-Export 2026-07-12.
export const SOLAR_POS = {
default: { dx: -3, dy: -27, s: 1 },
defaultBig: { dx: -5, dy: -36, s: 1.6 },
playground: { dx: -3, dy: 7, s: 1.5 },
'mega_playground': { dx: 34, dy: -44, s: 1.15 },
bikepark: { dx: -6, dy: -45, s: 1 },
'lift@L1': { dx: 3, dy: -15, s: 1.2 },
'lift@L2': { dx: 1, dy: -14, s: 1 },
'lift@L3': { dx: 4, dy: -14, s: 1.3 },
'lift@L4': { dx: 3, dy: -13, s: 1.55 },
'gondola@L1': { dx: 4, dy: -14, s: 1 },
'gondola@L2': { dx: 2, dy: -13, s: 1 },
'gondola@L3': { dx: 2, dy: -13, s: 1 },
'gondola@L4': { dx: 0, dy: -14, s: 1.2 },
'mega_hotel@L1': { dx: -13, dy: -42, s: 2.15 },
'mega_hotel@L2': { dx: -14, dy: -41, s: 1.95 },
'mega_hotel@L3': { dx: -14, dy: -41, s: 2 },
'mega_hotel@L4': { dx: -15, dy: -42, s: 2 },
'hotel@L1': { dx: -4, dy: -48, s: 1.3 },
'hotel2@L2': { dx: -8, dy: -53, s: 1.55 },
'hotel2@L3': { dx: -10, dy: -62, s: 1.55 },
'hotel2@L4': { dx: -11, dy: -62, s: 1.55 },
'mega_restaurant@L1': { dx: 22, dy: -22, s: 1.6 },
'mega_restaurant@L2': { dx: 21, dy: -22, s: 1.6 },
'mega_restaurant@L3': { dx: 20, dy: -22, s: 1.6 },
'mega_restaurant@L4': { dx: 21, dy: -25, s: 1.6 },
'restaurant@L1': { dx: -11, dy: -19, s: 1.35 },
'restaurant@L2': { dx: -12, dy: -24, s: 1.45 },
'restaurant@L3': { dx: -14, dy: -28, s: 1.65 },
'restaurant@L4': { dx: -13, dy: -28, s: 1.7 },
'snow@L1': { dx: 8, dy: 4, s: 1 },
'snow@L2': { dx: 8, dy: 5, s: 1 },
'snow@L3': { dx: 9, dy: 4, s: 1 },
'snow@L4': { dx: 8, dy: 4, s: 1 },
'mega_snow@L1': { dx: -1, dy: -32, s: 1.6 },
'mega_snow@L2': { dx: -1, dy: -33, s: 1.6 },
'mega_snow@L3': { dx: 0, dy: -33, s: 1.6 },
'mega_snow@L4': { dx: 0, dy: -32, s: 1.6 },
'rescue@L1': { dx: -3, dy: -14, s: 1 },
'rescue@L2': { dx: -3, dy: -16, s: 1 },
'rescue@L3': { dx: -5, dy: -21, s: 1 },
'rescue@L4': { dx: -4, dy: -21, s: 1 },
'access@L1': { dx: 0, dy: -8, s: 1 },
'access@L2': { dx: -1, dy: -11, s: 1 },
'access@L3': { dx: -2, dy: -13, s: 1 },
'access@L4': { dx: -2, dy: -14, s: 1 },
};
// Feinjustierung aus dem Editor (editor.html): überschreibt SPRITE_DEFS-