diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/engine/config/constants.ts | 2 | ||||
-rw-r--r-- | src/engine/systems/Input.ts | 6 | ||||
-rw-r--r-- | src/engine/systems/Level.ts | 11 |
3 files changed, 14 insertions, 5 deletions
diff --git a/src/engine/config/constants.ts b/src/engine/config/constants.ts index 89f7e92..5303ab5 100644 --- a/src/engine/config/constants.ts +++ b/src/engine/config/constants.ts @@ -27,6 +27,8 @@ export namespace KeyConstants { " ": Action.INTERACT, enter: Action.INTERACT, + + r: Action.RESET, }; // value -> [key] from KeyActions diff --git a/src/engine/systems/Input.ts b/src/engine/systems/Input.ts index c527f29..b11ba84 100644 --- a/src/engine/systems/Input.ts +++ b/src/engine/systems/Input.ts @@ -1,4 +1,4 @@ -import { Grid as GridSystem, SystemNames, System } from "."; +import { Grid as GridSystem, SystemNames, System, Level } from "."; import { Game } from ".."; import { ComponentNames, Grid, Interactable } from "../components"; import { Control } from "../components/Control"; @@ -31,6 +31,10 @@ export class Input extends System { } public update(_dt: number, game: Game) { + if (this.hasSomeKey(KeyConstants.ActionKeys.get(Action.RESET))) { + game.getSystem<Level>(SystemNames.Level).reset(game); + } + game.forEachEntityWithComponent(ComponentNames.Control, (entity) => this.handleMovement(entity, game), ); diff --git a/src/engine/systems/Level.ts b/src/engine/systems/Level.ts index 87e12a5..824895d 100644 --- a/src/engine/systems/Level.ts +++ b/src/engine/systems/Level.ts @@ -3,8 +3,8 @@ import { Game } from ".."; import { type Level as LevelType, LEVELS, LEVEL_PROGRESSION } from "../levels"; export class Level extends System { - private unlockedLevels: Set<string>; - private currentLevel: LevelType | null; + private unlockedLevels: Set<string> = new Set(); + private currentLevel: LevelType | null = null; private moveToLevel: string | null; private levelMap: Map<string, LevelType>; @@ -16,15 +16,18 @@ export class Level extends System { this.levelMap.set(level.name, level); }); - this.currentLevel = null; this.moveToLevel = initialLevel; - this.unlockedLevels = new Set(); } public setLevel(level: string) { this.moveToLevel = level; } + public reset(game: Game) { + game.resetState(); + this.currentLevel?.init(game); + } + public update(_dt: number, game: Game) { if (this.moveToLevel === this.currentLevel?.name || !this.moveToLevel) { return; |