f9d67d6 - Detach cast bars from OnUpdate
[wowui.git] / OmaUF / Events.lua
index 862e7df..28b8672 100644 (file)
@@ -10,7 +10,6 @@ local UnitHealth, UnitHealthMax = UnitHealth, UnitHealthMax;
 local UnitGetIncomingHeals, UnitGetTotalAbsorbs = UnitGetIncomingHeals, UnitGetTotalAbsorbs;
 local UnitThreatSituation, GetThreatStatusColor = UnitThreatSituation, GetThreatStatusColor;
 local UnitIsDeadOrGhost, UnitIsConnected = UnitIsDeadOrGhost, UnitIsConnected;
-local UnitGetTotalHealAbsorbs = UnitGetTotalHealAbsorbs;
 local UnitHasVehicleUI, UnitTargetsVehicleInRaidUI = UnitHasVehicleUI, UnitTargetsVehicleInRaidUI;
 local UnitLevel, UnitClassification = UnitLevel, UnitClassification;
 local UnitAffectingCombat, IsResting = UnitAffectingCombat, IsResting;
@@ -47,15 +46,9 @@ function M.RegisterUnitEvents(frame)
         frame:RegisterUnitEvent("UNIT_POWER_BAR_SHOW", frame.unit, displayed);
         frame:RegisterUnitEvent("UNIT_POWER_BAR_HIDE", frame.unit, displayed);
     end
-    if frame.healpred then
-        frame:RegisterUnitEvent("UNIT_HEAL_PREDICTION", frame.unit, displayed);
-    end
     if frame.shield then
         frame:RegisterUnitEvent("UNIT_ABSORB_AMOUNT_CHANGED", frame.unit, displayed);
     end
-    if frame.healabsorb then
-        frame:RegisterUnitEvent("UNIT_HEAL_ABSORB_AMOUNT_CHANGED", frame.unit, displayed);
-    end
     if frame.auras then
         frame:RegisterUnitEvent("UNIT_AURA", frame.unit, displayed);
     end
@@ -69,6 +62,7 @@ local registerUnitEvents = M.RegisterUnitEvents;
 local function updateMaxHealth(frame, unit)
     frame.health.max = UnitHealthMax(unit);
 end
+M.UpdateMaxHealth = updateMaxHealth;
 
 local function updateHealth(frame, unit)
     local current, max = UnitHealth(unit), frame.health.max;
@@ -84,6 +78,7 @@ local function updateHealth(frame, unit)
         frame.health:Show();
     end
 end
+M.UpdateHealth = updateHealth;
 
 local function updateHealthText(frame, unit)
     if UnitIsDeadOrGhost(unit) then
@@ -105,10 +100,12 @@ local function updateHealthText(frame, unit)
         end
     end
 end
+M.UpdateHealthText = updateHealthText;
 
 local function updateMaxPower(frame, unit)
     frame.mana.max = UnitPowerMax(unit);
 end
+M.UpdateMaxPower = updateMaxPower;
 
 local function updatePower(frame, unit)
     local current, max = UnitPower(unit), frame.mana.max;
@@ -123,6 +120,7 @@ local function updatePower(frame, unit)
         frame.mana:Show();
     end
 end
+M.UpdatePower = updatePower;
 
 local function updatePowerText(frame, unit)
     local current, max = UnitPower(unit), frame.mana.max;
@@ -135,28 +133,19 @@ local function updatePowerText(frame, unit)
         frame.manaText:Hide();
     end
 end
+M.UpdatePowerText = updatePowerText;
 
 local function updatePowerColor(frame, unit)
     frame.mana:SetVertexColor(unpack(powerColors[UnitPowerType(unit)]));
 end
+M.UpdatePowerColor = updatePowerColor;
 
 local function updateName(frame, unit)
     local name = UnitName(unit);
     if not name then return end
     frame.name:SetText(ssub(name, 1, frame.name.count));
 end
-
-local function updateHealPred(frame, unit)
-    local incoming = UnitGetIncomingHeals(unit) or 0;
-    if incoming > 0 then
-        local space = frame.width - frame.health:GetWidth() + 1;
-        incoming = (incoming / frame.health.max) * frame.width;
-        frame.healpred:SetWidth(min(space, incoming));
-        frame.healpred:Show();
-    else
-        frame.healpred:Hide();
-    end
-end
+M.UpdateName = updateName;
 
 local function updateShield(frame, unit)
     local shield = UnitGetTotalAbsorbs(unit) or 0;
@@ -180,22 +169,12 @@ local function updateShield(frame, unit)
         frame.shieldhl:Hide();
     end
 end
-
-local function updateHealAbsorb(frame, unit)
-    local absorb = UnitGetTotalHealAbsorbs(unit) or 0;
-    if absorb > 0 then
-        local space = frame.health:GetWidth();
-        absorb = (absorb / frame.health.max) * frame.width;
-        frame.healabsorb:SetWidth(min(space, absorb));
-        frame.healabsorb:Show();
-    else
-        frame.healabsorb:Hide();
-    end
-end
+M.UpdateShield = updateShield;
 
 local function updateAuras(frame, unit)
-    if frame.auras then updateAuraFrames(frame, unit) end
+    updateAuraFrames(frame, unit);
 end
+M.UpdateAuras = updateAuras;
 
 local function updateAggro(frame, unit)
     local status = UnitThreatSituation(unit);
@@ -205,6 +184,7 @@ local function updateAggro(frame, unit)
         frame.base:SetVertexColor(unpack(baseColor));
     end
 end
+M.UpdateAggro = updateAggro;
 
 -- only works for player frame
 local function updateVehicle(frame)
@@ -222,6 +202,7 @@ local function updateVehicle(frame)
         registerUnitEvents(frame);
     end
 end
+M.UpdateVehicle = updateVehicle;
 
 local function updateLevelText(frame, unit, levelup)
     if levelup then
@@ -252,6 +233,7 @@ local function updateLevelText(frame, unit, levelup)
         frame.level:SetFormattedText("%s%s", leveltext, classtext);
     end
 end
+M.UpdateLevelText = updateLevelText;
 
 local function updateStatus(frame, unit)
     -- coords from FrameXML/PlayerFrame.lua
@@ -265,7 +247,12 @@ local function updateStatus(frame, unit)
         frame.status:Hide();
     end
 end
+M.UpdateStatus = updateStatus;
 
+local pvpIcons = {
+    Alliance = "Interface\\TARGETINGFRAME\\UI-PVP-Alliance",
+    Horde = "Interface\\TARGETINGFRAME\\UI-PVP-Horde"
+};
 local function updatePVP(frame, unit)
     if UnitIsPVPFreeForAll(unit) then
         frame.pvp:SetTexture("Interface\\TARGETINGFRAME\\UI-PVP-FFA");
@@ -281,7 +268,7 @@ local function updatePVP(frame, unit)
                     faction = "Horde";
                 end
             end
-            frame.pvp:SetTexture("Interface\\TARGETINGFRAME\\UI-PVP-"..faction);
+            frame.pvp:SetTexture(pvpIcons[faction]);
             frame.pvp:Show();
         else
             frame.pvp:Hide();
@@ -290,6 +277,7 @@ local function updatePVP(frame, unit)
         frame.pvp:Hide();
     end
 end
+M.UpdatePVP = updatePVP;
 
 local function updateLeaderIcon(frame, unit)
     if UnitIsGroupLeader(frame.unit) then
@@ -309,6 +297,7 @@ local function updateLeaderIcon(frame, unit)
         frame.leader:Hide();
     end
 end
+M.UpdateLeaderIcon = updateLeaderIcon;
 
 local function updateHealthColor(frame, unit)
     if not UnitPlayerControlled(unit) and UnitIsTapDenied(unit) then
@@ -327,6 +316,7 @@ local function updateHealthColor(frame, unit)
         frame.health:SetVertexColor(UnitSelectionColor(unit));
     end
 end
+M.UpdateHealthColor = updateHealthColor;
 
 local function updateRaidMarker(frame, unit)
     local index = GetRaidTargetIndex(unit);
@@ -337,13 +327,13 @@ local function updateRaidMarker(frame, unit)
         frame.targeticon:Hide();
     end
 end
+M.UpdateRaidMarker = updateRaidMarker;
 
 local eventFuncs = {
     ["UNIT_HEALTH"] = function(frame)
         updateHealth(frame, frame.displayed);
         updateHealthText(frame, frame.displayed);
         if frame.shield then updateShield(frame, frame.displayed) end
-        if frame.healabsorb then updateHealAbsorb(frame, frame.displayed) end
     end,
     ["UNIT_POWER"] = function(frame)
         updatePower(frame, frame.displayed);
@@ -352,15 +342,9 @@ local eventFuncs = {
     ["UNIT_AURA"] = function(frame)
         updateAuras(frame, frame.displayed);
     end,
-    ["UNIT_HEAL_PREDICTION"] = function(frame)
-        updateHealPred(frame, frame.displayed);
-    end,
     ["UNIT_ABSORB_AMOUNT_CHANGED"] = function(frame)
         updateShield(frame, frame.displayed);
     end,
-    ["UNIT_HEAL_ABSORB_AMOUNT_CHANGED"] = function(frame)
-        updateHealAbsorb(frame, frame.displayed);
-    end,
     ["UNIT_THREAT_SITUATION_UPDATE"] = function(frame)
         updateAggro(frame, frame.displayed);
     end,
@@ -369,7 +353,6 @@ local eventFuncs = {
         updateHealth(frame, frame.displayed);
         updateHealthText(frame, frame.displayed);
         if frame.shield then updateShield(frame, frame.displayed) end
-        if frame.healabsorb then updateHealAbsorb(frame, frame.displayed) end
     end,
     ["UNIT_MAXPOWER"] = function(frame)
         updateMaxPower(frame, frame.displayed);
@@ -435,8 +418,6 @@ local eventFuncs = {
         end
         if frame.auras then updateAuras(frame, frame.displayed) end
         if frame.shield then updateShield(frame, frame.displayed) end
-        if frame.healpred then updateHealPred(frame, frame.displayed) end
-        if frame.healabsorb then updateHealAbsorb(frame, frame.displayed) end
         if frame.name then updateName(frame, frame.displayed) end
         if frame.level then updateLevelText(frame, frame.unit) end
         if frame.status then updateStatus(frame, frame.unit) end
@@ -457,5 +438,5 @@ eventFuncs["INSTANCE_ENCOUNTER_ENGAGE_UNIT"] = eventFuncs["UPDATE_ALL_BARS"];
 eventFuncs["UNIT_TARGETABLE_CHANGED"] = eventFuncs["UPDATE_ALL_BARS"];
 
 function M.UnitEvent(self, event, arg1)
-    eventFuncs[event](self, arg1);
+    return eventFuncs[event](self, arg1);
 end