aether-shards/src/index.js

69 lines
2.1 KiB
JavaScript
Raw Normal View History

import { gameStateManager } from "./core/GameStateManager.js";
const gameViewport = document.querySelector("game-viewport");
const teamBuilder = document.querySelector("team-builder");
const mainMenu = document.getElementById("main-menu");
const btnNewRun = document.getElementById("btn-start");
const btnContinue = document.getElementById("btn-load");
const loadingOverlay = document.getElementById("loading-overlay");
const loadingMessage = document.getElementById("loading-message");
// --- Event Listeners ---
window.addEventListener("gamestate-changed", async (e) => {
const { newState } = e.detail;
console.log("gamestate-changed", newState);
switch (newState) {
case "STATE_MAIN_MENU":
loadingMessage.textContent = "INITIALIZING MAIN MENU...";
break;
case "STATE_TEAM_BUILDER":
loadingMessage.textContent = "INITIALIZING TEAM BUILDER...";
break;
case "STATE_GAME_RUN":
loadingMessage.textContent = "INITIALIZING GAME ENGINE...";
break;
}
loadingOverlay.toggleAttribute("hidden", false);
mainMenu.toggleAttribute("hidden", true);
gameViewport.toggleAttribute("hidden", true);
teamBuilder.toggleAttribute("hidden", true);
switch (newState) {
case "STATE_MAIN_MENU":
mainMenu.toggleAttribute("hidden", false);
break;
case "STATE_TEAM_BUILDER":
await import("./ui/team-builder.js");
teamBuilder.toggleAttribute("hidden", false);
break;
case "STATE_GAME_RUN":
await import("./ui/game-viewport.js");
gameViewport.toggleAttribute("hidden", false);
break;
}
loadingOverlay.toggleAttribute("hidden", true);
});
window.addEventListener("save-check-complete", (e) => {
if (e.detail.hasSave) {
btnContinue.disabled = false;
btnContinue.style.borderColor = "#00ff00";
btnContinue.style.color = "#00ff00";
}
});
btnNewRun.addEventListener("click", async () => {
teamBuilder.addEventListener("embark", async (e) => {
gameStateManager.handleEmbark(e);
});
gameStateManager.startNewGame();
});
btnContinue.addEventListener("click", async () => {
gameStateManager.continueGame();
});
// Boot
gameStateManager.init();