7250c45 - Holy Power for all paladin specs
[wowui.git] / OmaPower / AltPower.lua
1 -- Based on Simple Holy Power
2 local _;
3 local class = "PALADIN";
4 local ptype = Enum.PowerType.HolyPower;
5 local UnitPower = UnitPower;
6 local GetSpecialization = GetSpecialization;
7 local f = CreateFrame("Frame", "OmaSHP", UIParent);
8 f:SetScript("OnEvent", function(self, event, ...)
9     self[event](self, ...);
10 end)
11
12 local updatehp = {
13     [0] = function() f[1]:Hide(); f[2]:Hide(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end,
14     [1] = function() f[1]:Show(); f[2]:Hide(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end,
15     [2] = function() f[1]:Show(); f[2]:Show(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end,
16     [3] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Hide(); f[5]:Hide() end,
17     [4] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Show(); f[5]:Hide() end,
18     [5] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Show(); f[5]:Show() end,
19 };
20 function f:PLAYER_SPECIALIZATION_CHANGED()
21     if class == "PALADIN" then
22         f:Show();
23         f:RegisterUnitEvent("UNIT_POWER_UPDATE", "player");
24         updatehp[UnitPower("player", ptype)]();
25     elseif class == "WARLOCK" then
26         f:Show();
27         f:RegisterUnitEvent("UNIT_POWER_UPDATE", "player");
28         updatehp[UnitPower("player", ptype)]();
29     end
30 end
31 f.PLAYER_ENTERING_WORLD = f.PLAYER_SPECIALIZATION_CHANGED;
32
33 function f:UNIT_POWER_UPDATE(_, t)
34     if t == "HOLY_POWER" or t == "SOUL_SHARDS" then
35         return updatehp[UnitPower("player", ptype)]();
36     end
37 end
38
39 function f:PLAYER_LOGIN()
40     f:UnregisterAllEvents();
41     f:Hide();
42     _, class = UnitClass("player");
43     if class == "PALADIN" then
44         ptype = Enum.PowerType.HolyPower;
45     elseif class == "WARLOCK" then
46         ptype = Enum.PowerType.SoulShards;
47     else
48         return;
49     end
50     f:SetFrameStrata("LOW");
51     f:SetPoint("CENTER", UIParent, "CENTER", -308, -217);
52     f:SetWidth(29*5);
53     f:SetHeight(25);
54     for i = 1,5 do
55         f[i] = f:CreateTexture("OmaSHP"..i, "ARTWORK");
56         if i == 1 then
57             f[i]:SetPoint("TOPLEFT", f, "TOPLEFT", 2, 0)
58         else
59             f[i]:SetPoint("TOPLEFT", f[i-1], "TOPRIGHT", 2, 0)
60         end
61         f[i]:SetWidth(25);
62         f[i]:SetHeight(25);
63         if class == "WARLOCK" then
64             f[i]:SetColorTexture(0.7, 0.3, 0.5);
65         else
66             -- color is default from SHP
67             f[i]:SetColorTexture(0.9686274509803922, 0.674509803921568, 0.1450980392156863);
68         end
69     end
70
71     f:RegisterUnitEvent("UNIT_POWER_UPDATE", "player");
72     f:RegisterEvent("PLAYER_ENTERING_WORLD");
73     f:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED");
74 end
75
76 f:RegisterEvent("PLAYER_LOGIN");