61 lines
1.4 KiB
Lua
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
|