local ChoregraphySystem = Object:extend() local choregraphyUtils = require "game.utils.choregraphy" local stepObjectList = require "scenes.battlesystem.controllers.fighters.systems.choregraphy.step" function ChoregraphySystem:new(action, choregraphy) self.action = action self.fighter = action.fighter self.actor = self.fighter.actor self.assets = self.fighter.actor.assets self.world = self.actor.world self.currentStepId = 0 self.currentStep = nil self.stepList = choregraphy end function ChoregraphySystem:update(dt) if (self.currentStep ~= nil) then self.currentStep:updateStep(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) if (stepObjectList[stepData.name] ~= nil) then self.currentStep = stepObjectList[stepData.name](self, stepData.arguments) end 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