Files
Zauberwald/src/app.ts
T
gurixandClaude Opus 4.6 4b5502f5fa feat(01-02): screen management and companion definitions
- Create companion/characters.ts with 4 companion definitions (fee, einhorn, fuchs, eule)
- Create app.ts with showScreen, getDB, initApp (routes to welcome or forest)
- Update main.ts to call initApp on DOMContentLoaded
- Add stub ui/screens.ts for initWelcomeScreen

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 11:05:59 +02:00

33 lines
843 B
TypeScript

import type { ScreenName } from "./types";
import { openDB, getProgress } from "./storage/db";
import { initWelcomeScreen } from "./ui/screens";
let db: IDBDatabase;
export function showScreen(name: ScreenName): void {
document.querySelectorAll(".screen").forEach((el) => {
el.classList.remove("screen--active");
});
const target = document.getElementById(`screen-${name}`);
if (target) {
target.classList.add("screen--active");
}
}
export function getDB(): IDBDatabase {
return db;
}
export async function initApp(): Promise<void> {
db = await openDB();
const progress = await getProgress(db);
if (progress && progress.selectedCharacter) {
// Returning user — skip welcome, go to forest
showScreen("forest");
} else {
// First time — show welcome
initWelcomeScreen(db, showScreen);
showScreen("welcome");
}
}