4a66dd6 - Remove incoming res icon, slower periodic update rate
authorAleksi Blinnikka <aleksi.blinnikka@gmail.com>
Fri, 23 Feb 2018 15:11:52 +0000
committerAleksi Blinnikka <aleksi.blinnikka@gmail.com>
Fri, 23 Feb 2018 15:11:52 +0000
OmaRF/Events.lua
OmaRF/Indicators.lua
OmaRF/RaidFrame.lua

index e376f66..2cbcb41 100644 (file)
@@ -11,7 +11,6 @@ local UnitIsAFK, UnitIsDND = UnitIsAFK, UnitIsDND;
 local UnitGetIncomingHeals, UnitGetTotalAbsorbs = UnitGetIncomingHeals, UnitGetTotalAbsorbs;
 local UnitThreatSituation, GetThreatStatusColor = UnitThreatSituation, GetThreatStatusColor;
 local UnitIsDeadOrGhost, UnitIsConnected = UnitIsDeadOrGhost, UnitIsConnected;
-local UnitHasIncomingResurrection = UnitHasIncomingResurrection;
 local UnitGetTotalHealAbsorbs = UnitGetTotalHealAbsorbs;
 local UnitHasVehicleUI, UnitTargetsVehicleInRaidUI = UnitHasVehicleUI, UnitTargetsVehicleInRaidUI;
 local GetReadyCheckTimeLeft, GetReadyCheckStatus = GetReadyCheckTimeLeft, GetReadyCheckStatus;
@@ -83,7 +82,6 @@ function M.RegisterUnitEvents(frame)
     frame:RegisterUnitEvent("UNIT_HEAL_ABSORB_AMOUNT_CHANGED", frame.unit, displayed);
     frame:RegisterUnitEvent("UNIT_THREAT_SITUATION_UPDATE", frame.unit, displayed);
     frame:RegisterUnitEvent("UNIT_CONNECTION", frame.unit, displayed);
-    frame:RegisterUnitEvent("INCOMING_RESURRECT_CHANGED", frame.unit, displayed);
     frame:RegisterUnitEvent("PLAYER_FLAGS_CHANGED", frame.unit, displayed);
     frame:RegisterUnitEvent("READY_CHECK_CONFIRM", frame.unit, displayed);
     frame:RegisterUnitEvent("UNIT_ENTERED_VEHICLE", frame.unit, displayed);
@@ -142,11 +140,6 @@ local function updateText(frame, unit)
     end
 end
 
-local function updateIncomingRes(frame, unit)
-    if UnitHasIncomingResurrection(unit) then frame.rez:Show();
-    else frame.rez:Hide(); end
-end
-
 local function updateMaxPower(frame, unit)
     frame.mana.max = UnitPowerMax(unit);
 end
@@ -382,9 +375,6 @@ local eventFuncs = {
     ["UNIT_CONNECTION"] = function(frame)
         updateText(frame, frame.displayed);
     end,
-    ["INCOMING_RESURRECT_CHANGED"] = function(frame)
-        updateIncomingRes(frame, frame.unit);
-    end,
     ["PARTY_MEMBER_ENABLE"] = function(frame)
         -- new power info possibly (FrameXML/CompactUnitFrame.lua)
         updateMaxPower(frame, frame.displayed);
@@ -416,7 +406,6 @@ local eventFuncs = {
         updateHealAbsorb(frame, frame.displayed);
         updateAggro(frame, frame.displayed);
         updateName(frame, frame.displayed);
-        updateIncomingRes(frame, frame.unit);
         updateReadyCheck(frame, frame.unit);
         updateRaidMarker(frame, frame.displayed);
     end,
index 6fd7b23..f90ff60 100644 (file)
@@ -87,7 +87,7 @@ local function updateIndicators(frame)
         end
     end
     if needUpdate then
-        CTimerAfter(0.16, updaters[frame]);
+        CTimerAfter(0.20, updaters[frame]);
     else
         updating[frame] = nil;
     end
@@ -163,7 +163,7 @@ function M.CheckIndicators(frame, unit)
                 func = function() updateIndicators(frame) end;
                 updaters[frame] = func;
             end
-            CTimerAfter(0.16, func);
+            CTimerAfter(0.20, func);
         end
     else
         frame.indBase:Hide();
index 5d94ff0..ebadfef 100644 (file)
@@ -34,6 +34,7 @@ local barTexture = "Interface\\AddOns\\OmaRF\\images\\minimalist";
 local class = nil;
 local party = {};
 local raid = {};
+local updaters = {};
 
 local M = {};
 OmaRaidFrame = M;
@@ -41,33 +42,40 @@ OmaRaidFrame = M;
 local function unitUpdate(frame)
     -- there's no in/out of range event, have to check each frame
     -- from FrameXML/CompactUnitFrame.lua
-    local inRange, checked = UnitInRange(frame.displayed);
-    if checked and not inRange then
-        frame:SetAlpha(0.55);
-    else
-        frame:SetAlpha(1);
+    if frame.updating then
+        local inRange, checked = UnitInRange(frame.displayed);
+        if checked and not inRange then
+            frame:SetAlpha(0.55);
+        else
+            frame:SetAlpha(1);
+        end
+        CTimerAfter(0.20, updaters[frame]);
     end
 end
 
 local function frameShow(frame)
     registerEvents(frame);
     registerUnitEvents(frame);
-    frame:SetScript("OnUpdate", unitUpdate);
+    frame.updating = true;
+    CTimerAfter(0.20, updaters[frame]);
     unitEvent(frame, "UPDATE_ALL_BARS");
 end
 
 local function frameHide(frame)
     frame:UnregisterAllEvents();
-    frame:SetScript("OnUpdate", nil);
+    frame.updating = nil;
 end
 
 local function showTooltip(secure)
-    GameTooltip_SetDefaultAnchor(GameTooltip, secure);
-    GameTooltip:SetUnit(secure:GetAttribute("unit"));
+    -- only show raid frame tooltips out of combat
+    if not InCombatLockdown() then
+        GameTooltip_SetDefaultAnchor(GameTooltip, secure);
+        GameTooltip:SetUnit(secure:GetAttribute("unit"));
+    end
 end
 
 local function hideTooltip(secure)
-    GameTooltip:FadeOut();
+    if GameTooltip:IsOwned(secure) then GameTooltip:FadeOut() end
 end
 
 local function setupFrame(frame, secure, unit)
@@ -139,11 +147,6 @@ local function setupFrame(frame, secure, unit)
     frame.text:SetFont(STANDARD_TEXT_FONT, 13);
     frame.text:SetPoint("CENTER", frame.background, "CENTER", 0, -1);
     frame.text:Hide();
-    frame.rez = frame:CreateTexture(nil, "OVERLAY");
-    frame.rez:SetPoint("TOPLEFT", frame.background, "CENTER", -12, 12);
-    frame.rez:SetPoint("BOTTOMRIGHT", frame.background, "CENTER", 12, -12);
-    frame.rez:SetTexture("Interface\\RaidFrame\\Raid-Icon-Rez");
-    frame.rez:Hide();
     frame.ready = frame:CreateTexture(nil, "OVERLAY");
     frame.ready:SetPoint("TOPLEFT", frame.background, "BOTTOMLEFT", 0, 14);
     frame.ready:SetPoint("BOTTOMRIGHT", frame.background, "BOTTOMLEFT", 14, 0);
@@ -162,6 +165,8 @@ local function setupFrame(frame, secure, unit)
     frame:SetScript("OnEvent", unitEvent);
     secure:SetScript("OnEnter", showTooltip);
     secure:SetScript("OnLeave", hideTooltip);
+    -- set up periodic updates
+    updaters[frame] = function() return unitUpdate(frame) end
     -- set attributes
     secure:RegisterForClicks("AnyDown");
     for attr, val in pairs(attributes) do