From 6b2f1f4caad37d7167d55373d1681be3d66932ea Mon Sep 17 00:00:00 2001 From: Matthias Richter Date: Sun, 31 Oct 2010 13:04:08 +0100 Subject: [PATCH] Add missing callbacks, make ignorant of passed arguments, bug in Gamestate.keypressed --- gamestate.lua | 128 +++++++++++++++++++++++++++++++------------------- 1 file changed, 79 insertions(+), 49 deletions(-) diff --git a/gamestate.lua b/gamestate.lua index 6e3d301..c8f0bbd 100644 --- a/gamestate.lua +++ b/gamestate.lua @@ -30,74 +30,104 @@ local function __NULL__() end -- default gamestate produces error on every callback local function __ERROR__() error("Gamestate not initialized. Use Gamestate.switch()") end Gamestate.current = { - enter = __ERROR__, - leave = __NULL__, - update = __ERROR__, - draw = __ERROR__, - keyreleased = __ERROR__, - keypressed = __ERROR__, - mousereleased = __ERROR__, + enter = __ERROR__, + leave = __NULL__, + update = __ERROR__, + draw = __ERROR__, + keyreleased = __ERROR__, + keypressed = __ERROR__, + mousepressed = __ERROR__, + mousereleased = __ERROR__, + joystickpressed = __ERROR__, + joystickreleased = __ERROR__, } function Gamestate.new() return { - enter = __NULL__, - leave = __NULL__, - update = __NULL__, - draw = __NULL__, - keyreleased = __NULL__, - keypressed = __NULL__, - mousereleased = __NULL__, + enter = __NULL__, + leave = __NULL__, + update = __NULL__, + draw = __NULL__, + keyreleased = __NULL__, + keypressed = __NULL__, + mousepressed = __NULL__, + mousereleased = __NULL__, + joystickpressed = __NULL__, + joystickreleased = __NULL__, } end function Gamestate.switch(to, ...) if not to then return end - Gamestate.current:leave() + Gamestate.current:leave() local pre = Gamestate.current Gamestate.current = to Gamestate.current:enter(pre, ...) end local _update -function Gamestate.update(dt) - if _update then _update(dt) end - Gamestate.current:update(dt) -end - -local _keypressed -function Gamestate.keypressed(key, unicode) - if _keypressed then _keyreleased(key) end - Gamestate.current:keypressed(key, unicode) -end - -local _keyreleased -function Gamestate.keyreleased(key) - if _keyreleased then _keyreleased(key) end - Gamestate.current:keyreleased(key) -end - -local _mousereleased -function Gamestate.mousereleased(x,y,btn) - if _mousereleased then _mousereleased(x,y,btn) end - Gamestate.current:mousereleased(x,y,btn) +function Gamestate.update(...) + if _update then _update(...) end + Gamestate.current:update(...) end local _draw -function Gamestate.draw() - if _draw then _draw() end - Gamestate.current:draw() +function Gamestate.draw(...) + if _draw then _draw(...) end + Gamestate.current:draw(...) +end + +local _keypressed +function Gamestate.keypressed(...) + if _keypressed then _keypressed(...) end + Gamestate.current:keypressed(...) +end + +local _keyreleased +function Gamestate.keyreleased(...) + if _keyreleased then _keyreleased(...) end + Gamestate.current:keyreleased(...) +end + +local _mousepressed +function Gamestate.mousepressed(...) + if _mousereleased then _mousepressed(...) end + Gamestate.current:mousepressed(...) +end + +local _mousereleased +function Gamestate.mousereleased(...) + if _mousereleased then _mousereleased(...) end + Gamestate.current:mousereleased(...) +end + +local _joystickpressed +function Gamestate.joystickpressed(...) + if _joystickpressed then _joystickpressed(...) end + Gamestate.current:joystickpressed(...) +end + +local _joystickreleased +function Gamestate.joystickreleased(...) + if _joystickreleased then _joystickreleased(...) end + Gamestate.current:joystickreleased(...) end function Gamestate.registerEvents() - _update = love.update - love.update = Gamestate.update - _keypressed = love.keypressed - love.keypressed = Gamestate.keypressed - _keyreleased = love.keyreleased - love.keyreleased = Gamestate.keyreleased - _mousereleased = love.mousereleased - love.mousereleased = Gamestate.mousereleased - _draw = love.draw - love.draw = Gamestate.draw + _update = love.update + love.update = Gamestate.update + _draw = love.draw + love.draw = Gamestate.draw + _keypressed = love.keypressed + love.keypressed = Gamestate.keypressed + _keyreleased = love.keyreleased + love.keyreleased = Gamestate.keyreleased + _mousepressed = love.mousepressed + love.mousepressed = Gamestate.mousepressed + _mousereleased = love.mousereleased + love.mousereleased = Gamestate.mousereleased + _joystickpressed = love.joystickpressed + love.joystickpressed = Gamestate.joystickpressed + _joystickreleased = love.joystickreleased + love.joystickreleased = Gamestate.joystickreleased end