local HUD = Object:extend()

local gui         = require "game.modules.gui"
local TweenManager = require "game.modules.tweenmanager"


function HUD:new(turns)
  self.turns = turns
  self.scene = turns.scene
  self.world = self.scene.world
  self.assets = self.scene.assets

  self.frame  = gui.newBorder(424, 30, 4)
  self.tweens = TweenManager(self)

  self.playerHUDPosition = -64
  self.battlerCursor = self.turns.turns.current
end

function HUD:update(dt)
  self.tweens:update(dt)
end

function HUD:movePlayerHUD(beginBattle)
  if (beginBattle) then
    self.tweens:newTween(0, 0.4, {playerHUDPosition = 16}, 'inCubic')
  else
    self.tweens:newTween(0, 0.4, {playerHUDPosition = -64}, 'inCubic')
  end
end

function HUD:moveBattleCursor(moveCursorTo)
  self.tweens:newTween(0, 0.2, {battlerCursor = moveCursorTo}, 'inCubic')
end

function HUD:getPlayerHUDPosition()
  return self.playerHUDPosition
end

function HUD:draw()
  for i, action in ipairs(self.turns.actionList) do
    if action.fighter:canFight() then
      action.fighter:drawIcon(4 + (i-1)*(20), 216)
    else
      self:drawEmptyIcon(4 + (i-1)*(20), 216)
    end
  end
  local cursorx = self.battlerCursor * 20 - 8

  if #self.turns.actionList > 0 then
    self.assets.images["menucursor"]:draw(cursorx, 216, math.rad(90), 1, 1, 4, 8)
  end

  local x, y = 362, 225

  love.graphics.draw(self.frame, 424, 220, 0, -1, 1)
  self.assets.images["hudturn"]:draw(x, y)
  self.assets.fonts["hudnbrs"]:set()
  local turnnbr = self.turns.turns.number
  if (turnnbr < 10) then
    turnnbr = "0" .. turnnbr
  end
  love.graphics.print(turnnbr, x + 33, y + 1)
end

function HUD:drawEmptyIcon(x, y)
  local outlineLight = 0.15
  love.graphics.circle("fill", x + 8, y + 8, 2, 8)
  love.graphics.setColor(outlineLight, outlineLight, outlineLight, 1)
  love.graphics.circle("line", x + 8, y + 8, 2, 8)
  utils.graphics.resetColor()
end

return HUD
