summaryrefslogtreecommitdiff
path: root/src/engine/levels/LevelSelection.ts
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-03-07 22:49:43 -0700
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-03-07 22:49:43 -0700
commitebae24f5a3a251654a1e41be58f52ba2a777d9d7 (patch)
tree6641c3e5a5ec5d812c54be2bb38196f85f4e36c2 /src/engine/levels/LevelSelection.ts
parent808a44e8542ebc7542d833e5a30b51b7fb8f80d5 (diff)
downloadthe-abstraction-engine-ebae24f5a3a251654a1e41be58f52ba2a777d9d7.tar.gz
the-abstraction-engine-ebae24f5a3a251654a1e41be58f52ba2a777d9d7.zip
level system!
Diffstat (limited to 'src/engine/levels/LevelSelection.ts')
-rw-r--r--src/engine/levels/LevelSelection.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/engine/levels/LevelSelection.ts b/src/engine/levels/LevelSelection.ts
new file mode 100644
index 0000000..a970d9c
--- /dev/null
+++ b/src/engine/levels/LevelSelection.ts
@@ -0,0 +1,33 @@
+import { LEVELS, Level, LevelNames } from ".";
+import { Game } from "..";
+import { Player, Portal } from "../entities";
+import { Grid, Level as LevelSystem, SystemNames } from "../systems";
+
+export class LevelSelection extends Level {
+ constructor() {
+ super(LevelNames.LevelSelection);
+ }
+
+ public init(game: Game): void {
+ const gridSystem = game.getSystem<Grid>(SystemNames.Grid);
+ const center = gridSystem.getCenterGrid();
+
+ const levelSystem = game.getSystem<LevelSystem>(SystemNames.Level);
+ const unlocked = levelSystem.getUnlockedLevels();
+
+ LEVELS.forEach((level, i) => {
+ if (
+ !unlocked.has(level.name) ||
+ level.name === LevelNames.LevelSelection
+ ) {
+ return;
+ }
+
+ const portal = new Portal(level.name, { x: i, y: 7 });
+ game.addEntity(portal);
+ });
+
+ const player = new Player(center);
+ game.addEntity(player);
+ }
+}