diff options
author | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-05 19:45:09 -0600 |
---|---|---|
committer | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-05 19:45:09 -0600 |
commit | 558e91a4420bb52e9b8dad624cff3859ec64ea43 (patch) | |
tree | e0fdac613ebd8f01f03fe0c0d202833c908f5acd /src/game.js | |
parent | 69596ba244d6959dfe188ce958542c062b475f75 (diff) | |
download | bbiy-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.js | 22 |
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() |