3c2cef6 - Decrease high healing overlay opacity
[wowui.git] / kehys / frame.lua
index 2409d26..57578c7 100644 (file)
@@ -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",
@@ -42,15 +44,18 @@ function addon.NewRaidFrame(parent, width, height, unit, attributes,
     f:Hide(); -- hide frame to have an initial frame:OnShow call
     f:SetWidth(width);
     f:SetHeight(height);
+    f.barwidth = width - 2; -- 1px padding on both sides
     f:SetAttribute("unit", unit);
     f.unit = unit;
     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
     -- set up periodic updates
     updaters[f] = function()
         if f.updating then
-            CTimerAfter(0.25, updaters[f]);
+            CTimerAfter(0.1, updaters[f]);
             return update(f)
         end
     end
@@ -63,6 +68,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);