77a41d6 - Fix infinite Monk inspects
[wowui.git] / OmaPower / HolyPower.lua
1 -- Based on Simple Holy Power
2 local _;
3 local hptype = Enum.PowerType.HolyPower;
4 local UnitPower = UnitPower;
5 local GetSpecialization = GetSpecialization;
6 local f = CreateFrame("Frame", "OmaSHP", UIParent);
7 f:SetScript("OnEvent", function(self, event, ...)
8     self[event](self, ...);
9 end)
10
11 local updatehp = {
12     [0] = function() f[1]:Hide(); f[2]:Hide(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end,
13     [1] = function() f[1]:Show(); f[2]:Hide(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end,
14     [2] = function() f[1]:Show(); f[2]:Show(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end,
15     [3] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Hide(); f[5]:Hide() end,
16     [4] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Show(); f[5]:Hide() end,
17     [5] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Show(); f[5]:Show() end,
18 };
19 function f:PLAYER_SPECIALIZATION_CHANGED()
20     if GetSpecialization() == 3 then -- ret
21         f:Show();
22         f:RegisterUnitEvent("UNIT_POWER", "player");
23         updatehp[UnitPower("player", hptype)]();
24     else 
25         f:UnregisterEvent("UNIT_POWER");
26         f:Hide();
27     end
28 end
29 f.PLAYER_ENTERING_WORLD = f.PLAYER_SPECIALIZATION_CHANGED;
30
31 function f:UNIT_POWER(_, t)
32     if t == "HOLY_POWER" then
33         return updatehp[UnitPower("player", hptype)]();
34     end
35 end
36
37 function f:PLAYER_LOGIN()
38     f:UnregisterAllEvents();
39     f:Hide();
40     if select(2, UnitClass("player")) ~= "PALADIN" then return end
41     f:SetFrameStrata("LOW");
42     f:SetPoint("CENTER", UIParent, "CENTER", -283, -220);
43     f:SetWidth(29*5);
44     f:SetHeight(25);
45     for i = 1,5 do
46         f[i] = f:CreateTexture("OmaSHP"..i, "ARTWORK");
47         if i == 1 then
48             f[i]:SetPoint("TOPLEFT", f, "TOPLEFT", 2, 0)
49         else
50             f[i]:SetPoint("TOPLEFT", f[i-1], "TOPRIGHT", 2, 0)
51         end
52         f[i]:SetWidth(25);
53         f[i]:SetHeight(25);
54         -- color is default from SHP
55         f[i]:SetColorTexture(0.9686274509803922, 0.674509803921568, 0.1450980392156863);
56     end
57
58     f:RegisterUnitEvent("UNIT_POWER", "player");
59     f:RegisterEvent("PLAYER_ENTERING_WORLD");
60     f:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED");
61 end
62
63 f:RegisterEvent("PLAYER_LOGIN");