diff --git a/src/levels/level-base.ts b/src/levels/level-base.ts index 5ad65fa..d78c307 100644 --- a/src/levels/level-base.ts +++ b/src/levels/level-base.ts @@ -15,6 +15,7 @@ import { Resources } from '../resources'; export interface LevelData { name: string; + nextLevel: string; width: number; height: number; maxTurns: number; @@ -25,21 +26,22 @@ export interface LevelData { data: string[]; } -export const TestLevelData: LevelData = { - name: 'Gentle Plains', - width: 6, - height: 6, - maxTurns: 100, - players: ['human', 'computer'], - data: [ - 'GK1', 'G', 'G', 'G', 'G', 'GK1', - 'G', 'G', 'G', 'G', 'G', 'G', - 'G', 'G', 'W', 'W', 'G', 'G', - 'G', 'G', 'W', 'W', 'G', 'G', - 'G', 'G', 'W', 'W', 'G', 'G', - 'GS2', 'GS2', 'GS2', 'GS2', 'GS2', 'GS2' - ] -} +// export const TestLevelData: LevelData = { +// name: 'Gentle Plains', +// nextLevel: 'level2', +// width: 6, +// height: 6, +// maxTurns: 100, +// players: ['human', 'computer'], +// data: [ +// 'GK1', 'G', 'G', 'G', 'G', 'GK1', +// 'G', 'G', 'G', 'G', 'G', 'G', +// 'G', 'G', 'W', 'W', 'G', 'G', +// 'G', 'G', 'W', 'W', 'G', 'G', +// 'G', 'G', 'W', 'W', 'G', 'G', +// 'GS2', 'GS2', 'GS2', 'GS2', 'GS2', 'GS2' +// ] +// } export class LevelBase extends ex.Scene { @@ -112,7 +114,7 @@ export class LevelBase extends ex.Scene { new ComputerPlayer(levelData.players[1], this.selectionManager, board) ]; - this.turnManager = new TurnManager(this.engine, this.players, this.selectionManager, 10); + this.turnManager = new TurnManager(this.engine, this, this.players, this.selectionManager, 10); for (let y = 0; y < levelData.height; y++) { for (let x = 0; x < levelData.width; x++) { diff --git a/src/levels/tutorial.ts b/src/levels/tutorial.ts index b1b1270..141b577 100644 --- a/src/levels/tutorial.ts +++ b/src/levels/tutorial.ts @@ -5,8 +5,9 @@ import { Resources, TutorialTextSheet } from '../resources'; import { UnitMenu } from '../ui-components/unit-menu'; import { HumanPlayer } from '../human-player'; -export const TestLevelData: LevelData = { +export const TutorialData: LevelData = { name: 'Gentle Plains', + nextLevel: 'level', width: 6, height: 3, maxTurns: 10, @@ -21,7 +22,7 @@ export class Tutorial extends LevelBase { focus!: ex.Actor; constructor() { - super(TestLevelData, 'tutorial'); + super(TutorialData, 'tutorial'); } onInitialize(engine: ex.Engine): void { diff --git a/src/main.ts b/src/main.ts index 6a19c98..e74403e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,6 +1,6 @@ import * as ex from 'excalibur'; import { loader } from './resources'; -import { LevelBase, LevelData, TestLevelData } from './levels/level-base'; +import { LevelBase, LevelData } from './levels/level-base'; import { StartScreen } from './levels/start-screen'; import { Tutorial } from './levels/tutorial'; @@ -24,6 +24,7 @@ game.addScene(tutorial.name, tutorial); const Level1Data: LevelData = { name: 'Gentle Plains', + nextLevel: 'level2', width: 6, height: 3, maxTurns: 10, @@ -40,6 +41,7 @@ game.addScene(level1.name, level1); export const Level2Data: LevelData = { name: 'Gentle Plains 2', + nextLevel: 'start', width: 6, height: 6, maxTurns: 100, diff --git a/src/turn-manager.ts b/src/turn-manager.ts index 104d861..ee34d83 100644 --- a/src/turn-manager.ts +++ b/src/turn-manager.ts @@ -5,6 +5,7 @@ import { SCALE } from './config'; import { HumanPlayer } from './human-player'; import { ComputerPlayer } from './computer-player'; import { Resources } from './resources'; +import { LevelBase } from './levels/level-base'; /** * Manages player turns, keeps track of which of the N number of players turn it is. @@ -24,7 +25,7 @@ export class TurnManager { private victory: ex.Actor; private failure: ex.Actor; - constructor(public engine: ex.Engine, public players: Player[], selectionManager: SelectionManager, public maxTurns: number) { + constructor(public engine: ex.Engine, public level: LevelBase, public players: Player[], selectionManager: SelectionManager, public maxTurns: number) { if (players.length === 0) throw Error('Players should be non-zero in length'); this.currentPlayer = players[this.currentPlayerIndex]; this.selectionManager = selectionManager; @@ -186,7 +187,7 @@ export class TurnManager { await this.showVictory(); this.engine.input.pointers.once('down', () => { // TODO next level! - this.engine.goToScene('level2'); + this.engine.goToScene(this.level.levelData.nextLevel); }); return; }