Quantcast
local DescandingPowerTypes = { 0, 2, 3}
-- 0 = "MANA"
-- 1 = "RAGE"
-- 2 = "FOCUS"
-- 3 = "ENERGY"
-- 4 = "COMBO_POINTS"
-- 5 = "RUNES"
-- 6 = "RUNIC_POWER"
-- 7 = "SOUL_SHARDS"
-- 8 = "ECLIPSE"
-- 9 = "HOLY_POWER"

local function PowerTypeAscending()
	PowerTypeID, PowerTypeName = UnitPowerType("player")
	for _,p in pairs(DescandingPowerTypes) do
		if p == PowerTypeID then
			if DEBUG then print("Debug: Class has ascending power!") end
			Return = true
		end
	end
	Return = false
end

local function AutoHidePlayerFrame(self,event, ...)
	if ( UnitHealth("player") < UnitHealthMax("player") * 0.95 )
	or ( PowerTypeAscending() and UnitPower("player", "Mana") < UnitPowerMax("player", "SPELL_POWER_MANA") * 0.95 )
	or ( TargetFrame:IsShown() )
	or ( UnitAffectingCombat("player") )
	or ( CharacterFrame:IsShown() )
	then
		PlayerFrame:Show()
	else
		PlayerFrame:Hide()
	end
end

local iPlayerFrame = CreateFrame("Frame", "iPlayerFrame", UIParent, "SecureHandlerStateTemplate")

iPlayerFrame:RegisterEvent("PLAYER_LOGIN")
iPlayerFrame:RegisterEvent("PLAYER_TARGET_CHANGED")
iPlayerFrame:RegisterEvent("UNIT_HEALTH")
iPlayerFrame:RegisterEvent("UNIT_SPELLCAST_START")
iPlayerFrame:RegisterEvent("PLAYER_REGEN_DISABLED")
iPlayerFrame:RegisterEvent("PLAYER_REGEN_ENABLED")
iPlayerFrame:RegisterEvent("UNIT_MAXPOWER")
iPlayerFrame:RegisterEvent("UNIT_MODEL_CHANGED")

iPlayerFrame:SetScript("OnEvent", AutoHidePlayerFrame)

CharacterModelFrame:SetScript("OnShow", AutoHidePlayerFrame)
CharacterModelFrame:SetScript("OnHide", AutoHidePlayerFrame)

TargetFrame:SetScript("OnShow", AutoHidePlayerFrame)
TargetFrame:SetScript("OnHide", AutoHidePlayerFrame)