caa-game/src/index.js

80 lines
2.0 KiB
JavaScript

const { ipcRenderer, remote } = require("electron");
var asdf = require("asdf-games");
// eslint-disable-next-line no-unused-vars
const { Game, KeyControls } = asdf;
const
Logo = require(__dirname + "/../src/screens/logo.js"),
Title = require(__dirname + "/../src/screens/title.js"),
Tutorial = require(__dirname + "/../src/screens/tutorial.js"),
GameScreen = require(__dirname + "/../src/screens/game.js"),
Gameover = require(__dirname + "/../src/screens/gameover.js"),
Credits = require(__dirname + "/../src/screens/credits.js")
;
const window = { w: 640, h: 320 };
var game = new Game(window.w, window.h, true);
ipcRenderer.send("resize", window);
const keys = new KeyControls();
function titleScreen() {
game.scene = new Title(game, keys, newGame, tutorial, remote.app.quit);
}
function tutorial() {
game.scene = new Tutorial(game, keys, titleScreen);
}
function gameOver() {
game.scene = new Gameover(game, keys, titleScreen);
}
function newGame() {
game.scene = new GameScreen(game, window, keys, gameOver, credits);
}
function credits() {
game.scene = new Credits(game, keys, titleScreen);
}
game.scene = new Logo(game, titleScreen);
game.run(() => {
if (keys.escape) {
toggleMenu();
keys.reset();
}
});
/* *********************************************************
Settings behavior
********************************************************* */
// Opening and closing of menu.
function toggleMenu() {
const menuRef = document.getElementById("menu");
menuRef.style.display = menuRef.style.display === "block" ? "none" : "block";
game.paused = game.paused ? false : true;
}
const elements = [...document.querySelectorAll("#settings, #resume")];
elements.forEach(element => {
element.addEventListener("click", () => {
toggleMenu();
});
});
// Return to main menu button
document.getElementById("mainmenu").addEventListener("click", () => {
titleScreen();
toggleMenu();
});
// Quit Game handling.
document.getElementById("close").addEventListener("click", () => {
remote.app.quit();
});