improvement: port battlesystem to predicate

This commit is contained in:
Kazhnuz 2021-07-17 21:31:42 +02:00
parent 4445fec8d2
commit deda8a7a76
2 changed files with 27 additions and 12 deletions

View file

@ -0,0 +1,18 @@
local Conditions = {}
function Conditions.sentDamage(cond, predicate, asker)
return asker.haveSentDamage
end
function Conditions.qteSuccess(cond, predicate, asker)
return asker:isQteSuccess(tonumber(cond[2]))
end
function Conditions.qteFailure(cond, predicate, asker)
return (Conditions.isQteSuccess(cond, predicate, asker) == false)
end
function Conditions.none(cond, predicate, asker)
return true
end
return Conditions

View file

@ -3,6 +3,9 @@ local ChoregraphySystem = Object:extend()
local stepObjectList = require "scenes.battlesystem.controllers.fighters.systems.choregraphy.step" local stepObjectList = require "scenes.battlesystem.controllers.fighters.systems.choregraphy.step"
local qteObjectList = require "scenes.battlesystem.controllers.fighters.systems.choregraphy.qte" local qteObjectList = require "scenes.battlesystem.controllers.fighters.systems.choregraphy.qte"
local Predicate = require "birb.classes.predicate"
local Conditions = require "scenes.battlesystem.controllers.fighters.systems.choregraphy.conditions"
local ACTION_STARTED = 1 local ACTION_STARTED = 1
local ACTION_FINISHED = 2 local ACTION_FINISHED = 2
@ -68,18 +71,8 @@ function ChoregraphySystem:parseStep(step)
end end
function ChoregraphySystem:checkCondition(condition) function ChoregraphySystem:checkCondition(condition)
local conditionArgs = utils.string.split(condition, ":") local predicate = Predicate.createPredicate(condition, Conditions, self)
local success = true return predicate:solve()
if (conditionArgs[1] == "sentDamage" and (not self.haveSentDamage)) then
success = false
elseif (conditionArgs[1] == "qteSuccess" and (not self.qte.list[tonumber(conditionArgs[2])])) then
success = false
elseif (conditionArgs[1] == "qteFailure" and (self.qte.list[tonumber(conditionArgs[2])])) then
success = false
end
return success
end end
function ChoregraphySystem:addQTE(action, origin, qteBaseData, blockProcess, tag) function ChoregraphySystem:addQTE(action, origin, qteBaseData, blockProcess, tag)
@ -93,6 +86,10 @@ function ChoregraphySystem:addQTE(action, origin, qteBaseData, blockProcess, tag
end end
end end
function ChoregraphySystem:isQteSuccess(qteID)
return self.qte.list[qteID]
end
function ChoregraphySystem:endQte(success) function ChoregraphySystem:endQte(success)
self.qte.current = nil self.qte.current = nil
self.qte.wasSuccess = success self.qte.wasSuccess = success