const { ipcRenderer, remote } = require("electron"); var asdf = require("asdf-games"); // eslint-disable-next-line no-unused-vars const { Game, KeyControls, MouseControls, Camera } = asdf; const window = { w: 640, h: 320 }; const game = new Game(window.w, window.h, true); ipcRenderer.send("resize", window); const { scene } = game; const mouseAim = new MouseControls(document.getElementById("board")); const keys = new KeyControls(); const Stats = require("./src/helpers/stats.js"); var Player = require("./src/entities/player.js"); var Level = require("./src/helpers/level.js"); // Initialise first level 1-1.js at startPosition 0 var player = new Player(keys, window); var level = new Level(require("./src/levels/1-1.js"), keys, player); player.pos.x = level.startPos[0].x / 1; player.pos.y = level.startPos[0].y / 1; player.level = level; const camera = new Camera(player, window, { w: level.w * 2, h: level.h * 2 }); var stats = new Stats(player); scene.add(camera); camera.add(level); camera.add(player); scene.add(stats); function switchLevel(module, pos = 0) { scene.remove(stats); console.log(scene); camera.map(function(e) { camera.remove(e); if (e instanceof Level) { var lives = player.lives; var items = player.items; var p = new Player(keys, window); player = p; e = new Level(module, keys, player); level = e; player.pos.x = level.startPos[pos].x / 1; player.pos.y = level.startPos[pos].y / 1; player.lives = lives; player.items = items; player.level = e; stats = new Stats(player); camera.add(e); camera.add(player); camera.setSubject(player); scene.add(stats); } }); } game.run(() => { // Debugging tools if (mouseAim.isDown) { console.log("cliccccccccccc"); console.log(player); console.log(level); } // Switch to another level if (level.switch) { console.log("Switching level!", level); switchLevel(require(level.switch.module), level.switch.pos); level.switch = undefined; } // Refocus camera to player when player is moved by a portal if (player.refocus) { camera.setSubject(player); player.refocus = false; } }); /* ********************************************************* Settings behavior ********************************************************* */ // Opening and closing of menu. document.getElementById("settings").addEventListener("click", () => { const menuRef = document.getElementById("menu"); menuRef.style.display = menuRef.style.display === "block" ? "none" : "block"; }); // Quit Game handling. document.getElementById("close").addEventListener("click", () => { remote.app.quit(); }); // Return to main menu button document.getElementById("mainmenu").addEventListener("click", () => { remote.getCurrentWindow().loadFile(__dirname + "/index.html"); });