diff options
author | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-12 22:22:33 -0600 |
---|---|---|
committer | Logan Hunt <loganhunt@simponic.xyz> | 2022-04-12 22:22:33 -0600 |
commit | 27fa6357a699771ade4ed5bf8c3fb32d7e73f4d4 (patch) | |
tree | 10e5eb62dc2bfcdf26ced2bfc45f7645408c5307 /src/game.js | |
parent | cdb258991cc6ba8d4219038d9580e64d5e416803 (diff) | |
download | bbiy-27fa6357a699771ade4ed5bf8c3fb32d7e73f4d4.tar.gz bbiy-27fa6357a699771ade4ed5bf8c3fb32d7e73f4d4.zip |
Add menuing system with level select and control changing
Diffstat (limited to 'src/game.js')
-rw-r--r-- | src/game.js | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/src/game.js b/src/game.js index 705d3e0..b48ef19 100644 --- a/src/game.js +++ b/src/game.js @@ -1,8 +1,10 @@ -let lastTimeStamp; game.loop = (timeStamp) => { - let elapsedTime = timeStamp - lastTimeStamp; - lastTimeStamp = timeStamp; + if (!game.running) { + return; + } + let elapsedTime = timeStamp - game.lastTimeStamp; + game.lastTimeStamp = timeStamp; const changedIds = new Set(); game.systemOrder.map((i) => { @@ -20,22 +22,39 @@ game.loop = (timeStamp) => { requestAnimationFrame(game.loop); } -game.initialize = () => { - [game.entities, game.config] = game.loadLevel(game.levels[4]); +game.toggleRunning = () => { + game.running = !game.running; +} - // 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.startLoop = () => { + game.running = true; + game.lastTimeStamp = performance.now(); + requestAnimationFrame(game.loop); +} - game.systemOrder = ["gridSystem", "collisionSystem", "physics", "keyboardInput", "undo", "particle", "render"]; +game.loadSystems = () => { + game.systemOrder = ["grid", "collision", "physics", "keyboardInput", "undo", "particle", "render"]; game.systems = { }; game.systems.physics = game.system.Physics(), - game.systems.gridSystem = game.system.Grid(game.entitiesGrid); - game.systems.collisionSystem = game.system.Collision(game.entitiesGrid); + game.systems.grid = game.system.Grid(game.entitiesGrid); + game.systems.collision = game.system.Collision(game.entitiesGrid); game.systems.render = game.system.Render(game.graphics); game.systems.undo = game.system.Undo(game.entitiesGrid); - game.systems.keyboardInput = game.system.KeyboardInput(game.systems.undo); game.systems.particle = game.system.Particle(game.canvas.context); + game.systems.keyboardInput = game.system.KeyboardInput(); + game.systems.menu = game.system.Menu(); +} - lastTimeStamp = performance.now() - requestAnimationFrame(game.loop); +game.loadLevelIndex = (level) => { + game.level = level; + [game.entities, game.config] = game.loadLevel(game.levels[game.level]); + + // Maintained by grid system as a side-effect + game.entitiesGrid = Array(game.config.yDim).fill(null).map(() => Array(game.config.xDim).fill(null).map(() => new Map())); + game.loadSystems(); +} + +game.initialize = () => { + game.loadLevelIndex(0); + game.startLoop(); } |