2025-12-19 23:07:36 +00:00
|
|
|
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;
|
2025-12-22 05:20:33 +00:00
|
|
|
case "STATE_DEPLOYMENT":
|
|
|
|
|
case "STATE_COMBAT":
|
2025-12-22 05:33:05 +00:00
|
|
|
import("./ui/game-viewport.js");
|
2025-12-19 23:07:36 +00:00
|
|
|
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;
|
2025-12-22 05:20:33 +00:00
|
|
|
case "STATE_DEPLOYMENT":
|
|
|
|
|
case "STATE_COMBAT":
|
2025-12-19 23:07:36 +00:00
|
|
|
await import("./ui/game-viewport.js");
|
|
|
|
|
gameViewport.toggleAttribute("hidden", false);
|
|
|
|
|
break;
|
2025-12-19 16:38:22 +00:00
|
|
|
}
|
2025-12-19 23:07:36 +00:00
|
|
|
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";
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
2025-12-22 05:20:33 +00:00
|
|
|
// Set up embark listener once (not inside button click)
|
|
|
|
|
teamBuilder.addEventListener("embark", async (e) => {
|
|
|
|
|
await gameStateManager.handleEmbark(e);
|
|
|
|
|
gameViewport.squad = teamBuilder.squad;
|
|
|
|
|
});
|
|
|
|
|
|
2025-12-19 23:07:36 +00:00
|
|
|
btnNewRun.addEventListener("click", async () => {
|
2025-12-22 04:40:48 +00:00
|
|
|
gameStateManager.startNewGame();
|
2025-12-19 23:07:36 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
btnContinue.addEventListener("click", async () => {
|
|
|
|
|
gameStateManager.continueGame();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Boot
|
|
|
|
|
gameStateManager.init();
|