summaryrefslogtreecommitdiff
path: root/src/game.js
diff options
context:
space:
mode:
authorLogan Hunt <loganhunt@simponic.xyz>2022-04-05 19:45:09 -0600
committerLogan Hunt <loganhunt@simponic.xyz>2022-04-05 19:45:09 -0600
commit558e91a4420bb52e9b8dad624cff3859ec64ea43 (patch)
treee0fdac613ebd8f01f03fe0c0d202833c908f5acd /src/game.js
parent69596ba244d6959dfe188ce958542c062b475f75 (diff)
downloadbbiy-558e91a4420bb52e9b8dad624cff3859ec64ea43.tar.gz
bbiy-558e91a4420bb52e9b8dad624cff3859ec64ea43.zip
Added collision system, added changedId's which doesn't do anything rn
Diffstat (limited to 'src/game.js')
-rw-r--r--src/game.js22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/game.js b/src/game.js
index 60d2a27..f649ba5 100644
--- a/src/game.js
+++ b/src/game.js
@@ -4,8 +4,11 @@ game.loop = (timeStamp) => {
lastTimeStamp = timeStamp;
+ const changedIds = new Set();
game.systemOrder.map((i) => {
- game.systems[i].update(elapsedTime, game.entities);
+ game.systems[i]
+ .update(elapsedTime, game.entities, changedIds)
+ .forEach((id) => changedIds.add(id));
});
for (let id in game.entities) {
@@ -14,23 +17,22 @@ game.loop = (timeStamp) => {
}
}
- if (game.nextLevel) {
- game.loadLevel(game.nextLevel);
- game.nextLevel = false;
- }
-
requestAnimationFrame(game.loop);
}
game.initialize = () => {
[game.entities, game.config] = game.loadLevel(game.levels[0]);
- game.systemOrder = ["render", "physics", "gridSystem", "keyboardInput"];
+ // Maintained by gridSystem as a side-effect
+ game.entitiesGrid = Array(game.config.yDim).fill(null).map(() => Array(game.config.xDim).fill(null).map(() => new Map()));
+
+ game.systemOrder = ["gridSystem", "collisionSystem", "physics", "keyboardInput", "render"];
game.systems = {
- render: game.system.Render(game.graphics),
- physics: game.system.Physics(),
- gridSystem: game.system.GridSystem({...game.config}),
+ physics: game.system.Physics(game.entitiesGrid),
+ gridSystem: game.system.Grid(game.entitiesGrid),
+ collisionSystem: game.system.Collision(game.entitiesGrid),
keyboardInput: game.system.KeyboardInput(),
+ render: game.system.Render(game.graphics),
};
lastTimeStamp = performance.now()