state_ironman=klass() function state_ironman:init(sequence) self.sequence=sequence self.level=1 end function state_ironman:enter() self:on_enter() end function state_ironman:exit() end function state_ironman:reenter(round) if round.outcome=="win" then self.level+=1 elseif round.outcome=="menu" then self.done=true elseif round.outcome=="restart" then else assert(false,"unrecognized outcome: "..round.outcome) end self:on_enter() end function state_ironman:suspend() end function state_ironman:on_enter() local level=self.level if (self.done) return if level <= #self.sequence then local w=self.sequence[level]() main.state_manager:push(state_gameround:new(w)) else self.done=true end end function state_ironman:update() assert(false,"wtf") end function state_ironman:draw() assert(false,"wtf2") end