9d88e82 - Add Holy Power frame
authorAleksi Blinnikka <aleksi.blinnikka@gmail.com>
Fri, 16 Feb 2018 04:08:20 +0000
committerAleksi Blinnikka <aleksi.blinnikka@gmail.com>
Fri, 16 Feb 2018 04:08:20 +0000
OmaUF/HolyPower.lua [new file with mode: 0644]
OmaUF/OmaUF.toc

diff --git a/OmaUF/HolyPower.lua b/OmaUF/HolyPower.lua
new file mode 100644 (file)
index 0000000..05fca76
--- /dev/null
@@ -0,0 +1,63 @@
+-- Based on Simple Holy Power
+local _;
+local hptype = Enum.PowerType.HolyPower;
+local UnitPower = UnitPower;
+local GetSpecialization = GetSpecialization;
+local f = CreateFrame("Frame", "OmaSHP", UIParent);
+f:SetScript("OnEvent", function(self, event, ...)
+    self[event](self, ...);
+end)
+
+local updatehp = {
+    [0] = function() f[1]:Hide(); f[2]:Hide(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end,
+    [1] = function() f[1]:Show(); f[2]:Hide(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end,
+    [2] = function() f[1]:Show(); f[2]:Show(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end,
+    [3] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Hide(); f[5]:Hide() end,
+    [4] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Show(); f[5]:Hide() end,
+    [5] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Show(); f[5]:Show() end,
+};
+function f:PLAYER_SPECIALIZATION_CHANGED()
+    if GetSpecialization() == 3 then -- ret
+        f:Show();
+        f:RegisterUnitEvent("UNIT_POWER", "player");
+        updatehp[UnitPower("player", hptype)]();
+    else 
+        f:UnregisterEvent("UNIT_POWER");
+        f:Hide();
+    end
+end
+f.PLAYER_ENTERING_WORLD = f.PLAYER_SPECIALIZATION_CHANGED;
+
+function f:UNIT_POWER(_, t)
+    if t == "HOLY_POWER" then
+        return updatehp[UnitPower("player", hptype)]();
+    end
+end
+
+function f:PLAYER_LOGIN()
+    f:UnregisterAllEvents();
+    f:Hide();
+    if select(2, UnitClass("player")) ~= "PALADIN" then return end
+    f:SetFrameStrata("LOW");
+    f:SetPoint("CENTER", UIParent, "CENTER", -283, -220);
+    f:SetWidth(29*5);
+    f:SetHeight(25);
+    for i = 1,5 do
+        f[i] = f:CreateTexture("OmaSHP"..i, "ARTWORK");
+        if i == 1 then
+            f[i]:SetPoint("TOPLEFT", f, "TOPLEFT", 2, 0)
+        else
+            f[i]:SetPoint("TOPLEFT", f[i-1], "TOPRIGHT", 2, 0)
+        end
+        f[i]:SetWidth(25);
+        f[i]:SetHeight(25);
+        -- color is default from SHP
+        f[i]:SetColorTexture(0.9686274509803922, 0.674509803921568, 0.1450980392156863);
+    end
+
+    f:RegisterUnitEvent("UNIT_POWER", "player");
+    f:RegisterEvent("PLAYER_ENTERING_WORLD");
+    f:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED");
+end
+
+f:RegisterEvent("PLAYER_LOGIN");
index 5b08047..4003205 100644 (file)
@@ -13,3 +13,4 @@ PlayerFrame.lua
 PetFrame.lua
 TargetFrame.lua
 BossFrames.lua
+HolyPower.lua