feat: add bases for the new choregraphy system
This commit is contained in:
parent
fcdd10484f
commit
55d66eef85
2 changed files with 57 additions and 0 deletions
12
sonic-radiance.love/game/utils/choregraphy/arguments.lua
Normal file
12
sonic-radiance.love/game/utils/choregraphy/arguments.lua
Normal file
|
@ -0,0 +1,12 @@
|
|||
return {
|
||||
["wait"] = {"duration"},
|
||||
["addGFX"] = {'sprite', "origin", "x", "y", "affectedByDirection", 'blockProcess'},
|
||||
["playSFX"] = {"sfx"},
|
||||
["sendDamage"] = {"power", "accuracy", "isSpecial", "isAerial"},
|
||||
["goTo"] = {"origin", "x", "y", "duration", "blockProcess"},
|
||||
["setAnimation"] = {"animation", "blockProcess"},
|
||||
["jump"] = {"power", "blockProcess"},
|
||||
["jumpTo"] = {"origin", "x", "y", "duration", "blockProcess"},
|
||||
["jumpBack"] = {"duration", "blockProcess"},
|
||||
--[name] = {args},
|
||||
}
|
45
sonic-radiance.love/game/utils/choregraphy/init.lua
Normal file
45
sonic-radiance.love/game/utils/choregraphy/init.lua
Normal file
|
@ -0,0 +1,45 @@
|
|||
ChoregraphyUtils = {}
|
||||
|
||||
function ChoregraphyUtils.getStepStructure(stepName)
|
||||
local stepTypeList = require "game.utils.choregraphy.arguments"
|
||||
return stepTypeList[stepName]
|
||||
end
|
||||
|
||||
function ChoregraphyUtils.stepExists(stepName)
|
||||
return (ChoregraphyUtils.getStepStructure(stepName) ~= nil)
|
||||
end
|
||||
|
||||
function ChoregraphyUtils.validate(stepBaseDatas)
|
||||
local structure = ChoregraphyUtils.getStepStructure(stepBaseDatas[1])
|
||||
if (structure == nil) then
|
||||
return false
|
||||
else
|
||||
return ((#structure + 2) == #stepBaseDatas)
|
||||
end
|
||||
end
|
||||
|
||||
function ChoregraphyUtils.getStepDatas(stepBaseDatas)
|
||||
|
||||
local stepData = {}
|
||||
stepData.name = stepBaseDatas[1]
|
||||
|
||||
if (ChoregraphyUtils.validate(stepBaseDatas)) then
|
||||
stepData.condition = stepBaseDatas[2]
|
||||
|
||||
local structure = ChoregraphyUtils.getStepStructure(stepData.name)
|
||||
|
||||
stepData.arguments = {}
|
||||
|
||||
for i, argumentName in ipairs(structure) do
|
||||
local argumentContent = stepBaseDatas[i + 2]
|
||||
stepData.arguments[argumentName] = argumentContent
|
||||
end
|
||||
|
||||
return stepData
|
||||
else
|
||||
error("L'étape " .. stepData.name .. " à un nbr d'argument incorrect")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
return ChoregraphyUtils
|
Loading…
Reference in a new issue