Quantcast
-- Global information

local classDisplayName, class, classID = UnitClass("player"); -- **
local PlayerClass = classID;                                  -- this code and variables
local PlayerClassName = classDisplayName;                     -- could be redundant. fix later.
local PlayerClassNameIndex = class;                           -- **
local PH_v = '4.0.2'; -- version number
local total = 0; -- timer start
local done = 0; -- toggle for timer repeat
-- local debug = "yep";


-- check for sound enabled
if PH_sound == nil then
  PH_sound = 0;
end

-- check for display enabled
if PH_on == nil then
  PH_on = 1;
end


PH_p = {}			-- Class:			    ID:
PH_p[1] = 20		-- Warrior 			1
PH_p[2] = 20 		-- Paladin 			2
PH_p[3] = 20 		-- Hunter 			3
PH_p[4] = 35 		-- Rogue			  4
PH_p[5] = 20 		-- Priest			  5
PH_p[6] = 35 		-- Death Knight	6
PH_p[7] = 10 		-- Shaman			  7
PH_p[8] = 10 		-- Mage				  8
PH_p[9] = 25 		-- Warlock			9
PH_p[10] = 10 	-- Monk				  10
PH_p[11] = 25 	-- Druid			  11
PH_p[12] = 10   -- Demon Hunter 12



-- Welcome message (delay message and check to see if the addon is loaded)
function PH_onUpdate(self,elapsed)
    total = total + elapsed
    if total >= 4 and done == 0 and IsAddOnLoaded("PortraitHealth") then
      DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Portrait Health "..PH_v.."|r loaded. Type |cff00aaff/ph|r for a list of commands.")
        done = 1
    end
end

function PH_Loading()
  SlashCmdList["PH"] = PH_SlashCommandHandler; -- Add our slash command handler to the list of slash commands
  SLASH_PH1 = "/ph"; -- Associate /ph with the slash command list entry for PORTRAITHEALTH
end

-- Slash Commands
function PH_SlashCommandHandler( msg, class )
	local class = PlayerClass;
	local className = PlayerClassName;
	local x = RAID_CLASS_COLORS[PlayerClassNameIndex];

-- show commands
if msg == '' then
  DEFAULT_CHAT_FRAME:AddMessage( "|cffffff00Portrait Health "..PH_v.."|r commands:");
  DEFAULT_CHAT_FRAME:AddMessage( "Usage: |cff00aaff/ph|r <|cff00aaffcommand|r>");
  DEFAULT_CHAT_FRAME:AddMessage(" - |cff00aaffshow|r to toggle health display");
  DEFAULT_CHAT_FRAME:AddMessage(" - |cff00aaffinfo|r to show current settings");
end

-- health display toggle
if msg == 'show' then
  if PH_on == 1 then
    PortraitHealth:Hide();
    PH_on = 0;
    DEFAULT_CHAT_FRAME:AddMessage("Portrait Health |cff00aaffdisplay disabled|r.")
  elseif PH_on == 0 then
    PortraitHealth:Show();
    PH_on = 1;
    DEFAULT_CHAT_FRAME:AddMessage("Portrait Health |cff00aaffdisplay enabled|r.");
  end
end

-- show current settings
if msg == 'info' then
  DEFAULT_CHAT_FRAME:AddMessage("Portrait Health version |cFFFFFF00" ..PH_v.. "|r");
  DEFAULT_CHAT_FRAME:AddMessage("Execute at |cFFFF0000"..PH_p[class].."%|r \(|c"..x.colorStr..""..PlayerClassName.."|r\)");

  if PH_on == 1 then
    DEFAULT_CHAT_FRAME:AddMessage("Health display is |cff00aaffon|r.");
  else
    DEFAULT_CHAT_FRAME:AddMessage("Health display is |cff00aaffoff|r.");
  end


end
end

-- health display set by user prefs
function PH_display()
  if PH_on == 0 then
    PortraitHealth:Hide();
  else
    PortraitHealth:Show();
  end
end

-- Set the text color and update health output
function HealthPercentage(self, event, unit)

	-- Health value to display. Whole numbers only.
	TargetPercentHealth = (UnitHealth("target") / UnitHealthMax("target") * 100); --causes "division by zero error on beta."

  -- Set to red if 10% or lower
  if TargetPercentHealth < PH_p[classID] then
    PortraitHealth_Health:SetTextColor(1,0,0);
  else
  -- Set color to yellow
    PortraitHealth_Health:SetTextColor(1,1,0);
  end

	-- reformat health without decimals
	local h = string.format("%.0f",TargetPercentHealth);
	local i = string.format("%.1f",TargetPercentHealth);

	-- change the portrait to show current health
	if UnitIsDead("target") then
		PortraitHealth_Health:SetText('Dead');
	elseif
		TargetPercentHealth >= 1 then PortraitHealth_Health:SetText(h .. '%');
	elseif
		TargetPercentHealth < 1 then PortraitHealth_Health:SetText(i .. '%');
	end

end