From: Aleksi Blinnikka Date: Fri, 16 Feb 2018 04:08:20 +0000 (+0200) Subject: Add Holy Power frame X-Git-Url: https://www.aleksib.fi/git/wowui.git/commitdiff_plain/9d88e82990828bea8e233939eca508c3ece429dd?ds=sidebyside Add Holy Power frame --- diff --git a/OmaUF/HolyPower.lua b/OmaUF/HolyPower.lua new file mode 100644 index 0000000..05fca76 --- /dev/null +++ b/OmaUF/HolyPower.lua @@ -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"); diff --git a/OmaUF/OmaUF.toc b/OmaUF/OmaUF.toc index 5b08047..4003205 100644 --- a/OmaUF/OmaUF.toc +++ b/OmaUF/OmaUF.toc @@ -13,3 +13,4 @@ PlayerFrame.lua PetFrame.lua TargetFrame.lua BossFrames.lua +HolyPower.lua