Allowed gamemode and ruleset objects to control each other

Also added GameMode:onExit(), which triggers on game exit or retry
This commit is contained in:
Ishaan Bhardwaj
2021-02-19 11:01:18 -05:00
parent cb2b693bcb
commit 8a459b68ba
3 changed files with 11 additions and 7 deletions

View File

@@ -7,10 +7,10 @@ require 'load.save'
function GameScene:new(game_mode, ruleset, inputs)
self.retry_mode = game_mode
self.retry_ruleset = ruleset
self.secret_inputs = copy(inputs)
self.secret_inputs = inputs
self.game = game_mode(self.secret_inputs)
self.ruleset = ruleset()
self.game:initialize(self.ruleset, self.secret_inputs)
self.ruleset = ruleset(self.game)
self.game:initialize(self.ruleset)
self.inputs = {
left=false,
right=false,
@@ -118,9 +118,11 @@ function GameScene:onInputPress(e)
highscore_entry = self.game:getHighscoreData()
highscore_hash = self.game.hash .. "-" .. self.ruleset.hash
submitHighscore(highscore_hash, highscore_entry)
self.game:onExit()
scene = e.input == "retry" and GameScene(self.retry_mode, self.retry_ruleset, self.secret_inputs) or ModeSelectScene()
elseif e.input == "retry" then
switchBGM(nil)
self.game:onExit()
scene = GameScene(self.retry_mode, self.retry_ruleset, self.secret_inputs)
elseif e.input == "pause" and not (self.game.game_over or self.game.completed) then
self.paused = not self.paused