local FighterControllerParent = require "scenes.battlesystem.controllers.parent"
local EnnemyController = FighterControllerParent:extend()

local Villain = require "scenes.battlesystem.controllers.fighters.villain"

local battleutils = require "game.utils.battle"

function EnnemyController:new(owner, battleData)
  self.super.new(self, owner)
  self:initVillains(battleData)
end

function EnnemyController:initVillains(battleData)
  for i,ennemyBaseData in ipairs(battleData.ennemies) do
    local ennData = battleutils.getEnnemyData(ennemyBaseData)
    if (ennData.type == "normal") then
      self:addVillain(ennData)
    elseif (ennData.type == "boss") then
      self:addBoss(ennData)
    else
      print("unknown type " .. ennData.type)
    end
  end
end

function EnnemyController:addVillain(ennData)
  for i=1, ennData.number do
    self:add(Villain(self, ennData.category, ennData.name, self:count() + 1))
  end
end

function EnnemyController:getHighestSpeed()
  local highestSpeed = 0
  for i, villain in ipairs(self.list) do
    if (villain.abstract.stats.speed > highestSpeed) then
      highestSpeed = villain.abstract.stats.speed
    end
  end
  return highestSpeed
end

function EnnemyController:addBoss(ennData)
  local boss = Villain(self, ennData.category, ennData.name, self:count() + 1)
  boss:setBonus(ennData.pvFactor, ennData.statFactor)
  boss.isBoss = true
  boss:setCheapEffect(ennData.cheapEffect)
  self.turnSystem.canFleeBattle = false
  self:add(boss)
end

function EnnemyController:draw()
  for i, villain in ipairs(self.list) do
    villain:drawHUD()
  end
end

return EnnemyController
