diff --git a/game.lua b/game.lua index 936683c..3d79c00 100644 --- a/game.lua +++ b/game.lua @@ -107,14 +107,18 @@ function game.event.handlers.resetGame() game.views.Map:update() end -function game.loadComponent(component) - log.debug('game.loadComponent: ' .. component) - local model = require('models.' .. component):new({ name = component }) - game.models[component] = model - game.views[component] = require('views.' .. component):new(model) - game.controllers[component] = require('controllers.' .. component) - game.event.handlers[component] = util.newEventHandler( - game.controllers[component], model) +function game.loadComponent(component, nameAs) + if not nameAs then + nameAs = component + end + log.debug('game.loadComponent: ' .. nameAs) + + local model = require('models.' .. component):new({ name = nameAs }) + game.models[nameAs] = model + game.views[nameAs] = require('views.' .. component):new(model) + game.controllers[nameAs] = require('controllers.' .. component) + game.event.handlers[nameAs] = util.newEventHandler( + game.controllers[nameAs], model) end function game.animateMap(callback) @@ -125,6 +129,7 @@ end function game.load() game.loadComponent('Menu') game.loadComponent('Map') + game.loadComponent('Menu', 'PauseMenu') game.models.Menu:addItem('Start', function() log.debug('Menu: new game') @@ -137,6 +142,21 @@ function game.load() end) game.models.Menu:setHighlighted(1) + game.models.PauseMenu:addItem('Resume', function() + log.debug('PauseMenu: resume') + game.state:pop() + end) + game.models.PauseMenu:addItem('Restart', function() + log.debug('PauseMenu: new game') + game.event.push('resetMap') + game.event.push('startGame') + end) + game.models.PauseMenu:addItem('Quit', function() + log.debug('PauseMenu: quit') + love.event.quit() -- TODO + end) + game.models.PauseMenu:setHighlighted(1) + local width, height = love.graphics.getPixelDimensions() game.views.Menu:load(width, height) game.views.Map:load(width, height) diff --git a/lib/Stack.lua b/lib/Stack.lua index 8d0bfa9..c6e9f7d 100644 --- a/lib/Stack.lua +++ b/lib/Stack.lua @@ -25,6 +25,10 @@ function Stack:top() return self._stack[#self._stack] end +function Stack:prev() + return self._stack[#self._stack - 1] +end + function Stack:empty() self._stack = {} end diff --git a/views/Map.lua b/views/Map.lua index 9e3b0aa..45c88d3 100644 --- a/views/Map.lua +++ b/views/Map.lua @@ -124,10 +124,10 @@ function view:load(width, height, props) end }, { - label = 'Quit', + label = 'Menu', callback = function() - self._parent.console:setMessage() - globals.game.state:push('Menu') + --self._parent.console:setMessage() + globals.game.state:push('PauseMenu') end }, },