diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-03-07 22:49:43 -0700 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-03-07 22:49:43 -0700 |
commit | ebae24f5a3a251654a1e41be58f52ba2a777d9d7 (patch) | |
tree | 6641c3e5a5ec5d812c54be2bb38196f85f4e36c2 /src/engine/levels/LevelSelection.ts | |
parent | 808a44e8542ebc7542d833e5a30b51b7fb8f80d5 (diff) | |
download | the-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.ts | 33 |
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); + } +} |