caa-game/src/game.js

89 lines
2.4 KiB
JavaScript

const { ipcRenderer, remote } = require("electron");
var asdf = require("asdf-games");
// eslint-disable-next-line no-unused-vars
const { Game, KeyControls, MouseControls, Camera, Lightsource } = asdf;
const window = { w: 640, h: 320 };
const game = new Game(window.w, window.h, true);
ipcRenderer.send("resize", window);
const { scene } = game;
var Player = require("./src/entities/player.js");
var Level = require("./src/levels/level.js");
const mouseAim = new MouseControls(document.getElementById("board"));
const keys = new KeyControls();
var player = new Player(keys, window);
var level = new Level(require("./src/levels/1-1.js"), keys, player);
player.pos.x = level.startPos.x / 1;
player.pos.y = level.startPos.y / 1;
player.level = level;
// Lightsource makes the games extremely laggy for some reason, ill have to check the performance
// var lightsource = new Lightsource(player.pos.x, player.pos.y, level.pos.x, level.pos.y, level.w, level.h);
const camera = new Camera(player, window, { w: level.w * 2, h: level.h * 2 });
scene.add(camera);
camera.add(level);
camera.add(player);
//camera.add(lightsource);
function switchLevel(module) {
camera.map(function(e) {
camera.remove(e);
if (e instanceof Level) {
player = new Player(keys, window);
e = new Level(module, keys, player);
player.pos.x = level.startPos.x / 1;
player.pos.y = level.startPos.y / 1;
player.level = e;
camera.add(e);
camera.add(player);
camera.setSubject(player);
}
});
}
game.run(() => {
if (mouseAim.isDown) {
console.log("cliccccccccccc");
}
if (level.switch) {
switchLevel(require(level.switch));
delete level.switch;
console.log(player);
}
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");
});