-- State machine for managing game states StateMachine = {} StateMachine.__index = StateMachine function StateMachine:new() self = setmetatable({}, StateMachine) self.current = nil self.states = {} return self end function StateMachine:add(name, state) self.states[name] = state end function StateMachine:change(name) if self.current then self.current:exit() end self.current = self.states[name] self.current:enter() end function StateMachine:update(dt) if self.current then self.current:update(dt) end end function StateMachine:draw() if self.current then self.current:draw() end end return StateMachine