-- 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 = CyrHUD or {} 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 = (Label.entryCount or 0) + 1 self.entryName = "CyrHUDEntry" .. self.num Label.entryCount = self.num self.entry = {} local entry = self.entry --Main control/backdrop local yoff = self.num*35-5 self.main = WINDOW_MANAGER:CreateControl(self.entryName .. "main", CyrHUD_UI, CT_BACKDROP) self.main:SetDimensions(280, 35) self.main:SetAnchor(TOPLEFT, CyrHUD_UI, TOPLEFT, 0, yoff) self.main:SetCenterColor(CyrHUD.info.defaultBGColor:UnpackRGBA()) self.main:SetEdgeColor(CyrHUD.info.invisColor:UnpackRGBA()) -- Images entry.img1 = WINDOW_MANAGER:CreateControl(self.entryName .. "img1", self.main, CT_TEXTURE) entry.img2 = WINDOW_MANAGER:CreateControl(self.entryName .. "img2", self.main, CT_TEXTURE) entry.img3 = WINDOW_MANAGER:CreateControl(self.entryName .. "img3", self.main, CT_TEXTURE) --Labels entry.txt1 = WINDOW_MANAGER:CreateControl(self.entryName .. "txt1", self.main, CT_LABEL) entry.txt2 = WINDOW_MANAGER:CreateControl(self.entryName .. "txt2", self.main, CT_LABEL) entry.txt3 = WINDOW_MANAGER:CreateControl(self.entryName .. "txt3", self.main, CT_LABEL) entry.txt4 = WINDOW_MANAGER:CreateControl(self.entryName .. "txt4", self.main, CT_LABEL) entry.txt1:SetFont(CyrHUD.info.fontMain) entry.txt2:SetFont(CyrHUD.info.fontMain) entry.txt3:SetFont(CyrHUD.info.fontMain) entry.txt4:SetFont(CyrHUD.info.fontMain) return self end function Label:hide() self.main:SetHidden(true) end function Label:show() self.main:SetHidden(false) end function Label:getControl(name) return self.entry[name] end function Label:moveControl(name, x, y) if self.entry[name] 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] then self.entry[name]:SetDimensions(width, height) end end function Label:positionControl(name, width, height, x, y) if self.entry[name] then self.entry[name]:ClearAnchors() self.entry[name]:SetAnchor(TOPLEFT, self.entry.main, TOPLEFT, x, y) self.entry[name]:SetDimensions(width, height) end end function Label:exposeControls(nImg, nText) for i=1,3 do self.entry["img"..i]:SetHidden(i > nImg) end for i=1,3 do self.entry["txt"..i]:SetHidden(i > nText) end end function Label:update(model) if self.type ~= model.type then --TODO: Handle some form of reset model:configureLabel(self) self.type = model.type self:show() end model:updateLabel(self) end