47 lines
1.1 KiB
Lua
47 lines
1.1 KiB
Lua
|
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
|