-- This file is part of CyrHUD
--
-- (C) 2015 Scott Yeskie (Sasky)
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.

-- Setup class
CyrHUD.Label = {}
CyrHUD.Label.__index = CyrHUD.Label
setmetatable(CyrHUD.Label, {
    __call = function (cls, ...)
        return cls.new(...)
    end,
})

local Label = CyrHUD.Label

function Label.new()
    local self = setmetatable({}, CyrHUD.Label)
    self.labelType = "uninit"
    self.num = CyrHUD.entryCount + 1
    self.entryName = "CyrHUDEntry" .. self.num
    self.entry = {}
    local entry = self.entry

    --Main control/backdrop
    local yoff = self.num*35-5
    entry.main = WINDOW_MANAGER:CreateControl(self.entryName .. "main", CyrHUD_UI, CT_BACKDROP)
    entry.main:SetDimensions(280, 35)
    entry.main:SetAnchor(TOPLEFT, CyrHUD_UI, TOPLEFT, 0, yoff)
    entry.main:SetCenterColor( 0, 0, 0, .3 )
    entry.main:SetEdgeColor( 0, 0, 0, 0 )

    -- Images
    entry.img1 = WINDOW_MANAGER:CreateControl(self.entryName .. "img1", entry.main, CT_TEXTURE)
    entry.img2 = WINDOW_MANAGER:CreateControl(self.entryName .. "img2", entry.main, CT_TEXTURE)
    entry.img3 = WINDOW_MANAGER:CreateControl(self.entryName .. "img3", entry.main, CT_TEXTURE)

    --Labels
    entry.txt1 = WINDOW_MANAGER:CreateControl(self.entryName .. "txt1", entry.main, CT_LABEL)
    entry.txt2 = WINDOW_MANAGER:CreateControl(self.entryName .. "txt2", entry.main, CT_LABEL)
    entry.txt3 = WINDOW_MANAGER:CreateControl(self.entryName .. "txt3", entry.main, CT_LABEL)
    entry.txt4 = WINDOW_MANAGER:CreateControl(self.entryName .. "txt4", entry.main, CT_LABEL)
end

function Label:Hide()
    self.entry.main:SetHidden(true)
end

function Label:Show()
    self.entry.main:SetHidden(false)
end

function Label:getControl(name)
    return self.entry[name]
end

function Label:moveControl(name, x, y)
    if self.entry[name] and name ~= "main" then
        self.entry[name]:ClearAnchors()
        self.entry[name]:SetAnchor(TOPLEFT, self.entry.main, TOPLEFT, x, y)
    end
end

function Label:resizeControl(name, width, height)
    if self.entry[name] and name ~= "main" then
        self.entry[name]:SetDimensions(width, height)
    end
end

function Label:reconfigure(type, labelObj)
    if self.type ~= labelObj.type then
        labelObj:configure(self)
    end
end

--Original create label
function Label:create(entryName, num)
    local yoff = num*35-5
    self.entry = {}
    local entry = {}
    entry.main = WINDOW_MANAGER:CreateControl(entryName .. "main", CyrHUD_UI, CT_BACKDROP)
    entry.main:SetDimensions(280, 35)
    entry.main:SetAnchor(TOPLEFT, CyrHUD_UI, TOPLEFT, 0, yoff)
    entry.main:SetCenterColor( 0, 0, 0, .3 )
    entry.main:SetEdgeColor( 0, 0, 0, 0 )

    entry.icon = WINDOW_MANAGER:CreateControl(entryName .. "icon", entry.main, CT_TEXTURE)
    entry.icon:SetAnchor(TOPLEFT, entry.main, TOPLEFT, -2, -2)
    entry.icon:SetDimensions(40,40)
    entry.icon:SetDrawLayer(2)

    entry.ua = WINDOW_MANAGER:CreateControl(entryName .. "ua", entry.main, CT_TEXTURE)
    entry.ua:SetAnchor(TOPLEFT, entry.main, TOPLEFT, -2, -2)
    entry.ua:SetDimensions(40,40)
    entry.ua:SetTexture("/esoui/art/mappins/ava_attackburst_64.dds")
    entry.ua:SetDrawLayer(1)

    local fontMain = "EsoUI/Common/Fonts/univers67.otf|18|soft-shadow-thick"
    entry.name = WINDOW_MANAGER:CreateControl(entryName .. "name", entry.main, CT_LABEL)
    entry.name:SetDimensions(150,30)
    entry.name:SetAnchor(TOPLEFT, entry.main, TOPLEFT, 35, 5)
    entry.name:SetFont(fontMain)

    --local fontSmall = "EsoUI/Common/Fonts/univers67.otf|14|soft-shadow-thin"
    entry.defSiege = WINDOW_MANAGER:CreateControl(entryName .. "defSiege", entry.main, CT_LABEL)
    entry.defSiege:SetDimensions(30,30)
    entry.defSiege:SetAnchor(TOPLEFT, entry.main, TOPLEFT, 220, 5)
    entry.defSiege:SetFont(fontMain)

    entry.attSiege = WINDOW_MANAGER:CreateControl(entryName .. "attSiege", entry.main, CT_LABEL)
    entry.attSiege:SetDimensions(30,30)
    entry.attSiege:SetAnchor(TOPLEFT, entry.main, TOPLEFT, 190, 5)
    entry.attSiege:SetFont(fontMain)

    entry.time = WINDOW_MANAGER:CreateControl(entryName .. "time", entry.main, CT_LABEL)
    entry.time:SetDimensions(30,30)
    entry.time:SetAnchor(TOPLEFT, entry.main, TOPLEFT, 250, 5)
    entry.time:SetFont(fontMain)
    entry.time:SetColor(.8,.8,.8)

    table.insert(CyrHUD.entries, entry)
    return entry
end