const Screens = { Exit: -1, Menu: 0, Game: 1, } class Game { constructor(canvas) { this.canvas = canvas; // Create menu this.menu = new Menu(canvas); // Create game scene let box = new Box(); this.scene = new Scene(document.getElementById('canvas'), box); this.changeScreen(this.menu); } changeScreen(screen) { if (this.mainScreen !== undefined) { this.mainScreen.removeListeners(); } this.mainScreen = screen; screen.status = Status.Running; screen.addListeners(); } update(time = 0.02) { this.mainScreen.update(time); if (this.mainScreen.status === Status.Finished) { if (this.mainScreen.after === Screens.Game) { this.scene.initialize(); this.changeScreen(this.scene); } else if (this.mainScreen.after === Screens.Exit) { if (navigator.app !== undefined && typeof navigator.app.exitApp === 'function') { navigator.app.exitApp(); } } else if (this.mainScreen.after === Screens.Menu) { this.changeScreen(this.menu); } } } render() { this.autoResize(); this.mainScreen.render(); } autoResize() { this.canvas.width = window.innerWidth; this.canvas.height = window.innerHeight; } }