f9d67d6 - Detach cast bars from OnUpdate
[wowui.git] / OmaUF / Auras.lua
index 90da28d..172e3d4 100644 (file)
@@ -2,7 +2,7 @@
 local _;
 local CreateFrame = CreateFrame;
 local UnitAura = UnitAura;
 local _;
 local CreateFrame = CreateFrame;
 local UnitAura = UnitAura;
-local GameTooltip = nil;
+local GameTooltip = GameTooltip;
 
 local auraFilters = {"HELPFUL", "HARMFUL"};
 
 
 local auraFilters = {"HELPFUL", "HARMFUL"};
 
@@ -32,15 +32,17 @@ end
 local function createAura(parent, prev, anchor, name, unit)
     local aura = CreateFrame("Frame", name, parent);
     aura:SetPoint("TOPLEFT", prev, anchor);
 local function createAura(parent, prev, anchor, name, unit)
     local aura = CreateFrame("Frame", name, parent);
     aura:SetPoint("TOPLEFT", prev, anchor);
-    aura:SetWidth(16);
-    aura:SetHeight(16);
+    aura:SetWidth(20);
+    aura:SetHeight(20);
     aura.icon = aura:CreateTexture(nil, "ARTWORK");
     aura.icon:SetAllPoints();
     aura.icon = aura:CreateTexture(nil, "ARTWORK");
     aura.icon:SetAllPoints();
+    aura.stack = aura:CreateFontString(nil, "OVERLAY", "NumberFontNormalSmall");
+    aura.stack:SetPoint("BOTTOMRIGHT");
     aura.cd = CreateFrame("Cooldown", name.."CD", aura, "CooldownFrameTemplate");
     aura.cd:SetReverse(true);
     aura.cd:SetHideCountdownNumbers(true);
     aura.cd:SetAllPoints();
     aura.cd = CreateFrame("Cooldown", name.."CD", aura, "CooldownFrameTemplate");
     aura.cd:SetReverse(true);
     aura.cd:SetHideCountdownNumbers(true);
     aura.cd:SetAllPoints();
-    aura.unit = unit; -- TODO add aura.stack text
+    aura.unit = unit;
     aura:SetScript("OnEnter", showTooltip);
     aura:SetScript("OnLeave", hideTooltip);
     aura:Hide();
     aura:SetScript("OnEnter", showTooltip);
     aura:SetScript("OnLeave", hideTooltip);
     aura:Hide();
@@ -48,7 +50,6 @@ local function createAura(parent, prev, anchor, name, unit)
 end
 
 function M.CreateAuraFrame(parent, unit)
 end
 
 function M.CreateAuraFrame(parent, unit)
-    GameTooltip = _G["GameTooltip"];
     local name = parent:GetName().."Auras";
     parent.auras = CreateFrame("Frame", name, parent);
     parent.auras:SetPoint("TOPLEFT", parent, "BOTTOMLEFT", 0, -8);
     local name = parent:GetName().."Auras";
     parent.auras = CreateFrame("Frame", name, parent);
     parent.auras:SetPoint("TOPLEFT", parent, "BOTTOMLEFT", 0, -8);
@@ -66,7 +67,7 @@ function M.CreateAuraFrame(parent, unit)
         i = i + 1;
     end
     -- max rows
         i = i + 1;
     end
     -- max rows
-    for y=0,1 do
+    for y=0,0 do
         for x=1,10 do
             local auraName = name..i;
             parent.auras[i] = createAura(parent.auras, parent.auras[y*10+x], "BOTTOMLEFT", auraName, unit);
         for x=1,10 do
             local auraName = name..i;
             parent.auras[i] = createAura(parent.auras, parent.auras[y*10+x], "BOTTOMLEFT", auraName, unit);
@@ -77,10 +78,6 @@ end
 
 function M.UpdateAuras(frame, unit)
     local auras = frame.auras;
 
 function M.UpdateAuras(frame, unit)
     local auras = frame.auras;
-    for _, aura in ipairs(auras) do
-        if not aura:IsShown() then break end
-        aura:Hide();
-    end
     local icon, count, duration, expires, caster, id;
     local pos = 1;
     for _, filter in ipairs(auraFilters) do
     local icon, count, duration, expires, caster, id;
     local pos = 1;
     for _, filter in ipairs(auraFilters) do
@@ -93,6 +90,12 @@ function M.UpdateAuras(frame, unit)
             aura.icon:SetTexture(icon);
             aura.index = i;
             aura.filter = filter;
             aura.icon:SetTexture(icon);
             aura.index = i;
             aura.filter = filter;
+            if count > 1 then
+                aura.stack:SetText(count);
+                aura.stack:Show();
+            else
+                aura.stack:Hide();
+            end
             if expires > 0 then
                 aura.cd:SetCooldown(expires - duration, duration);
             else
             if expires > 0 then
                 aura.cd:SetCooldown(expires - duration, duration);
             else
@@ -103,4 +106,10 @@ function M.UpdateAuras(frame, unit)
             i = i + 1;
         end
     end
             i = i + 1;
         end
     end
+
+    while auras[pos] do
+        if not auras[pos]:IsShown() then return end
+        auras[pos]:Hide();
+        pos = pos + 1;
+    end
 end
 end