2020-03-15 17:31:32 +01:00
|
|
|
const { ipcRenderer, remote } = require("electron");
|
2020-03-15 17:23:01 +01:00
|
|
|
|
2020-03-15 17:31:32 +01:00
|
|
|
var asdf = require("asdf-games");
|
2020-03-29 15:40:57 +02:00
|
|
|
// eslint-disable-next-line no-unused-vars
|
2020-04-08 12:36:03 +02:00
|
|
|
const { Game, KeyControls, MouseControls, Camera } = asdf;
|
2020-03-15 17:23:01 +01:00
|
|
|
|
|
|
|
const window = { w: 640, h: 320 };
|
|
|
|
|
|
|
|
const game = new Game(window.w, window.h, true);
|
2020-03-15 17:31:32 +01:00
|
|
|
ipcRenderer.send("resize", window);
|
2020-03-15 17:23:01 +01:00
|
|
|
|
2020-03-15 17:31:32 +01:00
|
|
|
const { scene } = game;
|
2020-03-15 17:23:01 +01:00
|
|
|
|
2020-03-15 17:31:32 +01:00
|
|
|
const mouseAim = new MouseControls(document.getElementById("board"));
|
2020-03-15 17:23:01 +01:00
|
|
|
const keys = new KeyControls();
|
|
|
|
|
2020-04-11 21:12:44 +02:00
|
|
|
const Stats = require("./src/helpers/stats.js");
|
2020-04-08 12:36:03 +02:00
|
|
|
var Player = require("./src/entities/player.js");
|
2020-04-11 20:58:55 +02:00
|
|
|
var Level = require("./src/helpers/level.js");
|
2020-04-08 12:36:03 +02:00
|
|
|
|
|
|
|
// Initialise first level 1-1.js at startPosition 0
|
2020-03-29 15:40:57 +02:00
|
|
|
var player = new Player(keys, window);
|
2020-03-31 10:33:44 +02:00
|
|
|
|
|
|
|
var level = new Level(require("./src/levels/1-1.js"), keys, player);
|
2020-04-08 12:36:03 +02:00
|
|
|
player.pos.x = level.startPos[0].x / 1;
|
|
|
|
player.pos.y = level.startPos[0].y / 1;
|
2020-03-29 15:40:57 +02:00
|
|
|
player.level = level;
|
|
|
|
|
2020-03-23 20:55:39 +01:00
|
|
|
const camera = new Camera(player, window, { w: level.w * 2, h: level.h * 2 });
|
2020-04-12 11:20:03 +02:00
|
|
|
var stats = new Stats(player);
|
2020-03-15 17:23:01 +01:00
|
|
|
|
2020-03-22 15:54:55 +01:00
|
|
|
scene.add(camera);
|
|
|
|
camera.add(level);
|
|
|
|
camera.add(player);
|
2020-04-11 17:47:15 +02:00
|
|
|
scene.add(stats);
|
2020-04-07 12:14:22 +02:00
|
|
|
|
2020-04-08 12:36:03 +02:00
|
|
|
function switchLevel(module, pos = 0) {
|
2020-04-12 11:20:03 +02:00
|
|
|
scene.remove(stats);
|
|
|
|
console.log(scene);
|
2020-04-08 10:14:24 +02:00
|
|
|
camera.map(function(e) {
|
|
|
|
camera.remove(e);
|
|
|
|
if (e instanceof Level) {
|
2020-04-12 11:20:03 +02:00
|
|
|
var lives = player.lives;
|
2020-04-08 12:36:03 +02:00
|
|
|
var items = player.items;
|
2020-04-12 11:20:03 +02:00
|
|
|
|
|
|
|
var p = new Player(keys, window);
|
|
|
|
player = p;
|
|
|
|
|
2020-04-08 10:14:24 +02:00
|
|
|
e = new Level(module, keys, player);
|
2020-04-11 20:58:55 +02:00
|
|
|
level = e;
|
2020-04-12 11:20:03 +02:00
|
|
|
|
2020-04-08 12:36:03 +02:00
|
|
|
player.pos.x = level.startPos[pos].x / 1;
|
|
|
|
player.pos.y = level.startPos[pos].y / 1;
|
2020-04-12 11:20:03 +02:00
|
|
|
|
|
|
|
player.lives = lives;
|
2020-04-08 12:36:03 +02:00
|
|
|
player.items = items;
|
2020-04-08 10:14:24 +02:00
|
|
|
player.level = e;
|
|
|
|
|
2020-04-12 11:20:03 +02:00
|
|
|
stats = new Stats(player);
|
|
|
|
|
2020-04-08 10:14:24 +02:00
|
|
|
camera.add(e);
|
|
|
|
camera.add(player);
|
|
|
|
camera.setSubject(player);
|
2020-04-12 11:20:03 +02:00
|
|
|
scene.add(stats);
|
2020-04-08 10:14:24 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2020-03-23 20:55:39 +01:00
|
|
|
|
2020-03-15 17:31:32 +01:00
|
|
|
game.run(() => {
|
2020-04-08 12:36:03 +02:00
|
|
|
// Debugging tools
|
2020-03-15 17:23:01 +01:00
|
|
|
if (mouseAim.isDown) {
|
2020-03-15 17:31:32 +01:00
|
|
|
console.log("cliccccccccccc");
|
2020-04-11 21:12:44 +02:00
|
|
|
console.log(player);
|
2020-04-08 16:59:49 +02:00
|
|
|
console.log(level);
|
2020-04-08 10:14:24 +02:00
|
|
|
}
|
|
|
|
|
2020-04-08 12:36:03 +02:00
|
|
|
// Switch to another level
|
2020-04-08 10:14:24 +02:00
|
|
|
if (level.switch) {
|
2020-04-11 17:48:51 +02:00
|
|
|
console.log("Switching level!", level);
|
2020-04-08 12:36:03 +02:00
|
|
|
switchLevel(require(level.switch.module), level.switch.pos);
|
2020-04-11 20:58:55 +02:00
|
|
|
level.switch = undefined;
|
2020-04-08 10:14:24 +02:00
|
|
|
}
|
|
|
|
|
2020-04-08 12:36:03 +02:00
|
|
|
// Refocus camera to player when player is moved by a portal
|
2020-04-08 10:14:24 +02:00
|
|
|
if (player.refocus) {
|
|
|
|
camera.setSubject(player);
|
|
|
|
player.refocus = false;
|
2020-03-15 17:23:01 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2020-04-08 12:36:03 +02:00
|
|
|
|
2020-03-15 17:23:01 +01:00
|
|
|
/* *********************************************************
|
|
|
|
Settings behavior
|
|
|
|
********************************************************* */
|
|
|
|
|
|
|
|
// Opening and closing of menu.
|
2020-03-15 17:31:32 +01:00
|
|
|
document.getElementById("settings").addEventListener("click", () => {
|
|
|
|
const menuRef = document.getElementById("menu");
|
2020-03-15 17:23:01 +01:00
|
|
|
menuRef.style.display = menuRef.style.display === "block" ? "none" : "block";
|
|
|
|
});
|
|
|
|
|
|
|
|
// Quit Game handling.
|
2020-03-15 17:31:32 +01:00
|
|
|
document.getElementById("close").addEventListener("click", () => {
|
2020-03-15 17:23:01 +01:00
|
|
|
remote.app.quit();
|
|
|
|
});
|
|
|
|
|
|
|
|
// Return to main menu button
|
2020-03-15 17:31:32 +01:00
|
|
|
document.getElementById("mainmenu").addEventListener("click", () => {
|
2020-03-15 17:23:01 +01:00
|
|
|
remote.getCurrentWindow().loadFile(__dirname + "/index.html");
|
|
|
|
});
|