sonic-radiance/sonic-radiance.love/game/utils/choregraphy/init.lua
2021-04-03 10:39:34 +02:00

89 lines
2.2 KiB
Lua

local ChoregraphyUtils = {}
-- steps utils
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.validateStep(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.validateStep(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
-- QTE utils
function ChoregraphyUtils.getQteStructure(qteName)
local stepTypeList = require "game.utils.choregraphy.qte"
return stepTypeList[qteName]
end
function ChoregraphyUtils.qteExists(qteName)
return (ChoregraphyUtils.getQteStructure(qteName) ~= nil)
end
function ChoregraphyUtils.validateQte(qteBaseDatas)
local structure = ChoregraphyUtils.getQteStructure(qteBaseDatas[1])
if (structure == nil) then
return false
else
return ((#structure + 1) == #qteBaseDatas)
end
end
function ChoregraphyUtils.getQteDatas(qteBaseDatas)
local qteData = {}
qteData.name = qteBaseDatas[1]
if (ChoregraphyUtils.validateQte(qteBaseDatas)) then
local structure = ChoregraphyUtils.getQteStructure(qteData.name)
qteData.arguments = {}
for i, argumentName in ipairs(structure) do
local argumentContent = qteBaseDatas[i + 1]
qteData.arguments[argumentName] = argumentContent
end
return qteData
else
error("Le QTE " .. qteData.name .. " à un nbr d'argument incorrect")
end
end
return ChoregraphyUtils