33 lines
843 B
TypeScript
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");
|
||
|
|
}
|
||
|
|
}
|