summaryrefslogtreecommitdiff
path: root/Homework/cs5410/bbiy/src/utils/loadLevel.js
diff options
context:
space:
mode:
authorElizabeth Alexander Hunt <me@liz.coffee>2026-07-02 11:55:17 -0700
committerElizabeth Alexander Hunt <me@liz.coffee>2026-07-02 11:55:17 -0700
commit6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6 (patch)
treeed97e39ec77c5231ffd2c394493e68d00ddac5a4 /Homework/cs5410/bbiy/src/utils/loadLevel.js
downloadmisc-undergrad-6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6.tar.gz
misc-undergrad-6bf4b90c90f15f4ab60833bddf5b5756d1a6b1f6.zip
Diffstat (limited to 'Homework/cs5410/bbiy/src/utils/loadLevel.js')
-rw-r--r--Homework/cs5410/bbiy/src/utils/loadLevel.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/Homework/cs5410/bbiy/src/utils/loadLevel.js b/Homework/cs5410/bbiy/src/utils/loadLevel.js
new file mode 100644
index 0000000..3bd86d9
--- /dev/null
+++ b/Homework/cs5410/bbiy/src/utils/loadLevel.js
@@ -0,0 +1,87 @@
+game.loadLevel = (level) => {
+ const entities = {};
+ const config = {...level.gridSize};
+ for (let y = 0; y < level.gridSize.yDim; y++) {
+ for (let x = 0; x < level.gridSize.xDim; x++) {
+ const cell = level.level[y][x];
+ cell.forEach((letter) => {
+ let entity;
+ switch (letter) {
+ case 'b':
+ entity = game.createBigBlue();
+ break;
+ case 'h':
+ entity = game.createHedge();
+ break;
+ case 'r':
+ entity = game.createRock();
+ break;
+ case 'f':
+ entity = game.createFlag();
+ break;
+ case 'g':
+ entity = game.createGrass();
+ break;
+ case 'l':
+ entity = game.createFloor();
+ break;
+ case 'w':
+ entity = game.createWall();
+ break;
+ case 'a':
+ entity = game.createWater();
+ break;
+ case 'A':
+ entity = game.createWordWater();
+ break;
+ case 'N':
+ entity = game.createWordSink();
+ break;
+ case 'V':
+ entity = game.createWordLava();
+ break;
+ case 'v':
+ entity = game.createLava();
+ break;
+ case 'K':
+ entity = game.createWordKill();
+ break;
+ case 'W':
+ entity = game.createWordWall();
+ break;
+ case 'I':
+ entity = game.createWordIs();
+ break;
+ case 'S':
+ entity = game.createWordStop();
+ break;
+ case 'R':
+ entity = game.createWordRock();
+ break;
+ case 'P':
+ entity = game.createWordPush();
+ break;
+ case 'B':
+ entity = game.createWordBigBlue();
+ break;
+ case 'Y':
+ entity = game.createWordYou();
+ break;
+ case 'F':
+ entity = game.createWordFlag();
+ break;
+ case 'X':
+ entity = game.createWordWin();
+ break;
+ default:
+ break;
+ }
+ if (entity) {
+ entity.addComponent(game.components.GridPosition({x, y}));
+ entities[entity.id] = entity;
+ }
+ });
+ }
+ }
+ return [entities, config];
+}; \ No newline at end of file