Quantcast
local T, C, L = unpack(Tukui) -- Import: T - functions, constants, variables; C - config; L - locales
if C.classbar.holyPower[1] ~= true or T.myclass ~= "PALADIN" then return end

local tbWidth, tbHeight = C.classbar.holyPower[2], C.classbar.holyPower[3]

local mover = CreateFrame("Frame", "TukuiHolyPowerMover", UIParent)
mover:Width(tbWidth+4)
mover:Height(tbHeight+4)
mover:Point("TOP", UIParent, "CENTER", 0, -150)
mover:SetTemplate("Thick")
mover:SetBackdropBorderColor(1,0,0)
mover:SetClampedToScreen(true)
mover:SetMovable(true)
mover:SetFrameStrata("HIGH")
mover:AddText("text", "Move Holy Power", "CENTER")
mover:Hide()
tinsert(T.AllowFrameMoving, mover)

local hPower = CreateFrame("Frame", "TukuiHolyPower", UIParent)
hPower:Width(tbWidth)
hPower:Height(tbHeight)
hPower:Point("CENTER", mover)

local charges = {}

for i=1,3 do
	charges[i] = CreateFrame("Frame", "TukuiHolyPower_Charge"..i, hPower)
	charges[i]:SetWidth((tbWidth-10) / 3)
	charges[i]:SetHeight(tbHeight)
	charges[i]:CreateBackdrop("Transparent")
	charges[i].backdrop:ThickBorder()
	charges[i].tex = charges[i]:CreateTexture(nil, "OVERLAY")
	charges[i].tex:SetTexture(C.media.normTex)
	charges[i].tex:SetVertexColor(225/255,225/255,15/255)
	charges[i].tex:AllPoints(charges[i])
	if i==1 then
		charges[i]:SetPoint("LEFT", hPower, "LEFT", 0, 0)
	else
		charges[i]:SetPoint("LEFT", charges[i-1], "RIGHT", 5, 0)
	end
end

local function UpdateCharges()
	local numCharges = UnitPower("player", SPELL_POWER_HOLY_POWER)
	for i = 1, 3 do
		if (i <= numCharges) then
			charges[i].tex:Show()
		else
			charges[i].tex:Hide()
		end
	end
end

hPower:RegisterEvent("UNIT_POWER")
hPower:RegisterEvent("PLAYER_ENTERING_WORLD")
hPower:SetScript("OnEvent", UpdateCharges)

local vehicle = CreateFrame("Frame")
vehicle:RegisterEvent("VEHICLE_UPDATE")
vehicle:SetScript("OnEvent", function()
	if UnitHasVehicleUI("player") then
		hPower:Hide()
	else
		hPower:Show()
	end
end)