sonic-radiance/sonic-radiance.love/scenes/battlesystem/controllers/fighters/systems/behaviours/parent.lua
2020-08-05 09:25:38 +02:00

61 lines
1.4 KiB
Lua

local BehaviourParent = Object:extend()
function BehaviourParent:new(fighter, skilldata, targetList, highestScore)
self.fighter = fighter
self.scoreList = {}
self.targetList = targetList
self.skilldata = skilldata
self.highestScore = highestScore
self:initScoreList()
self:calculateAllScores()
end
function BehaviourParent:initScoreList()
for i, target in ipairs(self.targetList) do
self.scoreList[target.name] = 0
end
end
function BehaviourParent:calculateAllScores()
for i, target in ipairs(self.targetList) do
self.scoreList[target.name] = self:calculateScore(target)
end
end
function BehaviourParent:calculateScore(target)
return 0
end
function BehaviourParent:getScore(target)
return self.scoreList[target.name]
end
function BehaviourParent:isBestTarget(target, bestTargetScore, isHighest)
if (bestTargetScore == nil) then
return true
else
if (isHighest) then
return (self:getScore(target) >= bestTargetScore)
else
return (self:getScore(target) <= bestTargetScore)
end
end
end
function BehaviourParent:getTarget()
local bestTargetScore = nil
local finalTarget = nil
for i, target in ipairs(self.targetList) do
if (self:isBestTarget(target, bestTargetScore, self.isHighest)) then
finalTarget = target
bestTargetScore = self:getScore(target)
end
end
return finalTarget
end
return BehaviourParent