Bootstrap & Page Composition

Vom Title-Screen bis zur Spielseite

Jede Seite ist eine eigene HTML-Navigation. Gemeinsame Zustände werden daher vor dem Aufbau jeder Raum- oder App-Oberfläche synchronisiert.

Start-Lifecycle

index.htmlMAIN_TITLE_SCREENScaler, User, Startup, Audio
InteraktionGAME_START_UPSprache, Startbuttons, Name, Lizenz
SpielstandGAME_SAVE_MANAGERNeu, Laden, Reset, Konflikt
SchemaSAVE_SCHEMALocalStorage v1–v3 + IDB-Bedarf
Weiterleitunghome_screen.htmlautoritativen Stand booten

Neues Spiel

startNew(name) validiert 3–20 Zeichen, setzt den Namen, legt einen frischen IDB-State an, markiert den Start und bindet die aktuelle epoch.

Vorhandenes Spiel

loadExisting() migriert LocalStorage, führt IDB-Upgrade aus, hält bei widersprüchlichen Alt-Salden an und synchronisiert danach den Mirror.

Reset

reset() erhöht die Spielstandgeneration, leert benutzerspezifische Belege und Archive und entfernt die zugehörigen LocalStorage-Felder.

Lizenz-Gate

LICENSE_GATE speichert die akzeptierte Lizenzversion. LICENSE_ENTRY_GUARD.js blockiert direkte Seiteneinstiege ohne gültige Annahme.

Seiten und ihre Kompositionswurzeln

SeiteEinstiegZusammengesetzte Systeme
index.htmlMAIN_TITLE_SCREEN.jsStart, Sprache, Save, Lizenz, Audio, Scaler
home_screen.htmlMAIN_HOME_SCREEN.js6 Pflanzen, 6 Lampen, Tür, Materialfenster, Weed-Inventar, Slots
drying_room_screen.htmlMAIN_DRYING_ROOM_SCREEN.jsRaumslots und Navigation; Trocknungsraum derzeit primär Ausbaufläche
office_screen.htmlMAIN_OFFICE_SCREEN.jsOffice-Slots und Mining-Rig
labor_screen.htmlMAIN_LABOR_SCREEN.jsLabor-Slots, Chemietischzugang, Canis-Theme-Synchronisierung
phone_screen.htmlMAIN_PHONE_SCREEN.jsPhone-Shell, App-Icons, Zugriffsmatrix, Inline-Apps
phone_apk_*_screen.htmlHub / Trading / Call / Chemistry UIje nach App eigene UI-Wurzel
setup_screen.htmlMAIN_SETUP_SCREEN.jsAudio, Sprache und Navigation
canis_shop_screen.htmlCANIS_SHOP_UI.jsDemo-Pakete, Perks, Theme, Belegverlauf

Pflichtreihenfolge pro Spielseite

await prepareEconomy(User);
// Erst danach: Räume, Fachobjekte und DOM-Events erzeugen.
const room = new BACKGROUND(mask, scene);
const feature = new Feature(...);
bindMenuNavigation(...);
Warum die Reihenfolge wichtig istprepareEconomy() repariert und migriert Daten, bindet die Seiten-epoch, aktiviert die Billing-Sitzung und schreibt den IDB-Stand in den Legacy-Mirror. Eine vorher erzeugte UI kann sonst veraltete Besitz- oder Saldenwerte cachen.

Gemeinsame Infrastruktur

KlasseStartpunktLebenszyklus
GAME_SCALERGameScaler.start()skaliert 800×400 Viewport bei Resize
BACKGROUNDdraw()wählt Tageszeitbild und Audio-Szene
GAME_CLOCKSubscription beim ersten Systempausiert/resümiert mit Visibility/Page Cache
SOUND_MANAGERBenutzerinteraktion / Unlockverwaltet aktive Effekte und Loop-Fades
LANGUAGE_MANAGERSingleton + seitenlokale InstanzapplyPage() und Subscriber
GAME_ASSISTANTseparates Modul je Seitekontextuelle Tipps über Seitenkennung