const asdf = require("asdf-games"); // eslint-disable-next-line no-unused-vars const { Container, Camera } = asdf; const debugMode = true; const Stats = require(__dirname + "/../helpers/stats.js"); var Player = require(__dirname + "/../entities/player.js"); var Level = require(__dirname + "/../helpers/level.js"); class GameScreen extends Container { constructor(game, window, keys, onGameOver, onComplete) { super(); this.game = game; this.scene = this; this.window = window; this.keys = keys; this.onGameOver = onGameOver; this.onComplete = onComplete; this.keys.reset(); // Initialise first level 1-1.js at startPosition 0 var player = new Player(keys, window); var level = new Level(require(__dirname + "/../levels/2-2.js"), keys, player, this); player.pos.x = level.startPos[0].x / 1; player.pos.y = level.startPos[0].y / 1; player.level = level; var camera = new Camera(player, window, { w: level.w * 2, h: level.h * 2 }); var stats = new Stats(player); this.add(camera); camera.add(level); camera.add(player); this.add(stats); this.camera = camera; this.player = player; this.level = level; this.stats = stats; } switchLevel(module, pos = 0) { var { scene, camera, player, level, stats, keys } = this; 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, scene); 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.player = player; camera.add(e); camera.worldSize = { w: e.w, h: e.h }; camera.add(player); camera.setSubject(player); } }); this.player = player; this.level = level; this.stats = stats; this.camera = camera; this.keys.reset(); } update(dt, t) { super.update(dt, t); var { camera, player, level, keys } = this; // Debug options if (debugMode && keys.escape) { console.debug(level); console.debug(player); } if (player.lives <= 0) { this.onGameOver(); } if (level.gameComplete) { this.onComplete(); } // Switch to another level if (level.switch) { if (debugMode) { console.debug("Switching level!", level); } this.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; } } } module.exports = GameScreen;