import { PacketGame } from "./game/engine.ts";
import type { GameSnapshot, Lane } from "./game/types.ts";
import { markNativeReady, required } from "./shared/shell.ts";

markNativeReady();
const canvas = required<HTMLCanvasElement>("#packet-game");
const button = required<HTMLButtonElement>("[data-game-toggle]");
function updateHud(snapshot: GameSnapshot): void { required<HTMLElement>("[data-score]").textContent = snapshot.score.toString().padStart(4, "0"); required<HTMLElement>("[data-chain]").textContent = `x${snapshot.chain}`; required<HTMLElement>("[data-integrity]").style.width = `${snapshot.integrity}%`; button.textContent = snapshot.running ? "Stop" : snapshot.integrity <= 0 ? "Restart" : "Start"; }
const game = new PacketGame(canvas, { onSnapshot: updateHud, onEnd: () => {} });
updateHud(game.snapshot());
button.addEventListener("click", () => game.snapshot().running ? game.stop() : game.start());
window.addEventListener("keydown", (event) => { if (["ArrowLeft", "a", "A"].includes(event.key)) { event.preventDefault(); game.move(-1); } if (["ArrowRight", "d", "D"].includes(event.key)) { event.preventDefault(); game.move(1); } });
canvas.addEventListener("pointerdown", (event) => { const rect = canvas.getBoundingClientRect(); const lane = Math.min(2, Math.floor(((event.clientX - rect.left) / rect.width) * 3)) as Lane; game.moveTo(lane); });
