summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth@simponic.xyz>2025-03-01 13:10:21 -0700
committerElizabeth Hunt <elizabeth@simponic.xyz>2025-03-01 13:10:21 -0700
commit309ed20627ed798c464a9f97d9c32ceb1a314595 (patch)
treeb98d7ec6f6dd3eb3bcc4eaaaf76035ad9a2671a0
parent8dacee8f73633131fd68935c1e2493dc4beec837 (diff)
downloadthe-abstraction-engine-309ed20627ed798c464a9f97d9c32ceb1a314595.tar.gz
the-abstraction-engine-309ed20627ed798c464a9f97d9c32ceb1a314595.zip
add a reset button!
-rw-r--r--src/engine/config/constants.ts2
-rw-r--r--src/engine/systems/Input.ts6
-rw-r--r--src/engine/systems/Level.ts11
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;