fix: only get potential targets for the selection system

This commit is contained in:
Kazhnuz 2020-07-25 12:09:50 +02:00
parent d40112ba31
commit 40b362543a
3 changed files with 19 additions and 9 deletions

View file

@ -81,9 +81,9 @@ function HeroFighter:verifyTargets()
if (needTarget) then
if (targetEnnemies) then
self.selection = SelectionSystem(self, self.owner.turnSystem.ennemies)
self.selection = SelectionSystem(self, self.owner.turnSystem.ennemies, true)
else
self.selection = SelectionSystem(self, self.owner)
self.selection = SelectionSystem(self, self.owner, false)
end
else
self.action:start()

View file

@ -1,7 +1,7 @@
local SelectionSystem = Object:extend()
function SelectionSystem:new(owner, fighterList)
self.fighterList = fighterList
function SelectionSystem:new(owner, fighterSide, onlyAlive)
self.fighterList = fighterSide:getTargets(onlyAlive)
self.owner = owner
self.assets = self.owner.assets
self.selectedTarget = 1
@ -13,14 +13,14 @@ function SelectionSystem:update(dt)
self:purgeTarget()
if (keys["up"].isPressed) then
if (self.selectedTarget == 1) then
self.selectedTarget = self.fighterList:count()
self.selectedTarget = #self.fighterList
else
self.selectedTarget = self.selectedTarget - 1
end
self.assets.sfx["mBeep"]:play()
end
if (keys["down"].isPressed) then
if (self.selectedTarget == self.fighterList:count()) then
if (self.selectedTarget == #self.fighterList) then
self.selectedTarget = 1
else
self.selectedTarget = self.selectedTarget + 1
@ -43,18 +43,18 @@ function SelectionSystem:update(dt)
end
function SelectionSystem:purgeTarget()
local target = self.fighterList:get(self.selectedTarget)
local target = self.fighterList[self.selectedTarget]
target.actor.isSelected = false
end
function SelectionSystem:updateTarget()
local target = self.fighterList:get(self.selectedTarget)
local target = self.fighterList[self.selectedTarget]
target.actor.isSelected = true
end
function SelectionSystem:selectTarget()
self:purgeTarget()
self.owner:receiveTarget(self.fighterList:get(self.selectedTarget))
self.owner:receiveTarget(self.fighterList[self.selectedTarget])
end
function SelectionSystem:goBack()

View file

@ -18,6 +18,16 @@ function FighterControllerParent:count()
return #self.list
end
function FighterControllerParent:getTargets(onlyAlive)
local targetList = {}
for i, fighter in ipairs(self.list) do
if (fighter:canFight() or (not onlyAlive)) then
table.insert(targetList, fighter)
end
end
return targetList
end
function FighterControllerParent:applyDeath()
for i, fighter in ipairs(self.list) do
fighter:applyDeath()