X-Git-Url: https://www.aleksib.fi/git/wowui.git/blobdiff_plain/19b1609e82debe7790ea5ce6523c4753ea6b7104..570b5bae37dbaf3b569453269784e6b8c865a0af:/kehys/frame.lua diff --git a/kehys/frame.lua b/kehys/frame.lua index a723f47..1719b94 100644 --- a/kehys/frame.lua +++ b/kehys/frame.lua @@ -6,6 +6,7 @@ local format = string.format; local CreateFrame = CreateFrame; local CTimerAfter = C_Timer.After; +local guids = addon.FrameGuids; local updaters = {}; local function showTooltip(frame) GameTooltip_SetDefaultAnchor(GameTooltip, frame); @@ -23,14 +24,15 @@ function addon.NewRaidFrame(parent, width, height, unit, attributes, assert(type(width) == "number", "Frame creation missing width!"); assert(type(height) == "number", "Frame creation missing height!"); assert(type(unit) == "string", "Frame creation missing unit!"); - assert(type(attributes) == "table", - "Frame creation missing attributes table!"); assert(type(update) == "function", "Frame creation missing update function!"); assert(type(event) == "function", "Frame creation missing event function!"); assert(type(onshow) == "function", "Frame creation missing onshow function!"); + if type(attributes) ~= "table" then + attributes = {}; + end local f = CreateFrame( "Button", @@ -48,6 +50,11 @@ function addon.NewRaidFrame(parent, width, height, unit, attributes, f.displayed = unit; f.vehicle = unit == "player" and "vehicle" or format("%spet", unit); f.prev = {} -- values stored from previous update + f.alert = {}; -- alerting auras + f.heal = {}; -- high healing auras + f.tankcd = {}; -- tank CD auras + f.stacks = {}; -- stacking aura tracking + f.buff1 = {}; -- custom buff indicator 1 -- set up periodic updates updaters[f] = function() if f.updating then @@ -64,6 +71,10 @@ function addon.NewRaidFrame(parent, width, height, unit, attributes, f:SetScript("OnHide", function() f:UnregisterAllEvents(); f.updating = false; + if f.guid then + guids[f.guid] = nil; + f.guid = nil; + end end); f:SetScript("OnEvent", event); f:SetScript("OnEnter", showTooltip); @@ -129,10 +140,25 @@ function addon.NewRaidFrame(parent, width, height, unit, attributes, f.text:SetPoint("CENTER", f, "CENTER", 0, -1); f.text:SetFont(STANDARD_TEXT_FONT, 13); f.text:Hide(); + f.stack = f:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall"); + f.stack:SetPoint("BOTTOMLEFT", f.background, "BOTTOMLEFT"); + f.stack:Hide(); f.ready = f:CreateTexture(nil, "OVERLAY"); f.ready:SetPoint("TOPLEFT", f, "BOTTOMLEFT", 1, 15); f.ready:SetPoint("BOTTOMRIGHT", f, "BOTTOMLEFT", 15, 1); f.ready:Hide(); + f.defensive = f:CreateTexture(nil, "OVERLAY"); + f.defensive:SetPoint("TOPLEFT", f.background, "TOPLEFT", 1, -1); + f.defensive:SetWidth(6); + f.defensive:SetHeight(6); + f.defensive:SetColorTexture(1, 0.3, 0); + f.defensive:Hide(); + f.buffind1 = f:CreateTexture(nil, "OVERLAY"); + f.buffind1:SetPoint("TOPRIGHT", f.background, "TOPRIGHT", -1, -1); + f.buffind1:SetWidth(6); + f.buffind1:SetHeight(6); + f.buffind1:SetColorTexture(0.8, 0.1, 0.1); + f.buffind1:Hide(); f.targeticon = f:CreateTexture(nil, "OVERLAY"); f.targeticon:SetPoint("CENTER", f, "TOP", 0, -1); f.targeticon:SetWidth(12);