sonic-radiance/sonic-radiance.love/scenes/battlesystem/controllers/parent.lua

95 lines
2.1 KiB
Lua
Raw Permalink Normal View History

local FighterControllerParent = Object:extend()
2020-07-18 09:51:02 +02:00
function FighterControllerParent:new(turnSystem)
self.turnSystem = turnSystem
self.world = turnSystem.world
self.list = {}
2020-07-18 09:51:02 +02:00
end
2020-07-19 21:41:14 +02:00
function FighterControllerParent:get(id)
return self.list[id]
end
function FighterControllerParent:add(fighter)
table.insert(self.list, fighter)
end
function FighterControllerParent:count()
return #self.list
end
2020-07-25 12:15:50 +02:00
function FighterControllerParent:countAlive()
local aliveCount = 0
for i, fighter in ipairs(self.list) do
if (fighter:canFight()) then
aliveCount = aliveCount + 1
end
end
return aliveCount
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()
end
2020-07-25 12:15:50 +02:00
return self:countAlive()
end
function FighterControllerParent:setActive(activeActor)
2020-07-18 09:51:02 +02:00
self.activeActor = activeActor
activeActor:setActive()
end
function FighterControllerParent:update(dt)
for i, fighter in ipairs(self.list) do
fighter:updateAssets(dt)
end
2020-07-18 09:51:02 +02:00
end
function FighterControllerParent:endAction()
2020-07-18 09:51:02 +02:00
self.owner:nextAction()
end
function FighterControllerParent:putActions(actionList)
for i, fighter in ipairs(self.list) do
for i=1, fighter:getNbrActionPerTurn() do
local action = {}
action.fighter = fighter
action.number = i
table.insert(actionList, action)
end
end
end
function FighterControllerParent:draw()
--Aucun dessin par defaut, ils sont géré différements
end
2020-07-19 16:57:58 +02:00
function FighterControllerParent:removeFighter(fighterToRemove)
-- remove the actor from the battler liste
for i, fighter in ipairs(self.list) do
if fighter == fighterToRemove then
table.remove(self.list, i)
end
end
-- Also remove all actions related to the actor
self.turnSystem:removeAllActionsFromFighter(fighterToRemove)
end
return FighterControllerParent