local ChoregraphySystem = Object:extend() local choregraphyUtils = require "game.utils.choregraphy" function ChoregraphySystem:new(action, choregraphy) self.action = action self.fighter = action.fighter self.actor = self.fighter.actor self.currentStepId = 0 self.currentStep = nil self.stepList = choregraphy end function ChoregraphySystem:update(dt) if (self.currentStep ~= nil) then self.currentStep:update(dt) else self:switchStep() end end function ChoregraphySystem:switchStep() if self:haveNextStep() then self.currentStepId = self.currentStepId + 1 local stepData = choregraphyUtils.getStepDatas(self.stepList[self.currentStepId]) core.debug:print("cbs/choregraphy", "Starting step " .. stepData.name) --self.currentStep = self.stepList[self.currentStepId] else self:endChoregraphy() end end function ChoregraphySystem:endStep() self.currentStep = nil end function ChoregraphySystem:endChoregraphy() self.action:choregraphyEnded() end function ChoregraphySystem:haveNextStep() return ((self.currentStepId + 1) <= #self.stepList) end return ChoregraphySystem