Quantcast
_TD = _TD or {};

_TD["DPS_Enabled"] 	= 0;
_TD["DPS_OnEnable"] = nil;
_TD["DPS_NextSpell"] = nil;
_TD["DPS_Description"] = "";
_TD["DPS_Mode"] = 1;

DPS_Skill = nil;

local _DPS_time = 0;
local TDDps_Frame = CreateFrame("frame");

----------------------------------------------
-- Disable dps addon functionality
----------------------------------------------
function TDDps_DisableAddon()
	TDDps_Frame:Hide();

	TDDps_Frame:UnregisterAllEvents();
	TDDps_Frame:SetScript("OnUpdate", nil);
	TDDps_Frame:SetScript("OnEvent", nil);

	print(_TD["DPS_Description"]);

	DPS_Skill = nil;
	_TD["DPS_Enabled"] = 0;
end

----------------------------------------------
-- Enable dps addon functionality
----------------------------------------------
function TDDps_EnableAddon(mode)
	TDDps_DisableAddon();

	print('enabling');

	if _TD["DPS_NextSpell"] == nil then
		print("TDDPS: No addon selected, cannot enable");
		return;
	end

	if _TD["DPS_Enabled"] == 1 then
		return;
	end

	_TD["DPS_Mode"] = mode;

	TDDps_Frame:Show();

	TDDps_Frame:RegisterEvent("PLAYER_TARGET_CHANGED");
	TDDps_Frame:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED");

	TDFetchActions();

	if _TD["DPS_OnEnable"] then
		_TD["DPS_OnEnable"]();
	end

	TDDps_Frame:SetScript("OnUpdate", TDDps_OnUpdate);
	TDDps_Frame:SetScript("OnEvent", TDDps_OnEvent);

	_TD["DPS_Enabled"] = 1;
	print('enabled');
end

----------------------------------------------
-- Event Script, Target Change, Specializaton Change
----------------------------------------------
function TDDps_InvokeNextSpell()
	-- invoke spell check
	local oldSkill = DPS_Skill;

	DPS_Skill = _TD["DPS_NextSpell"]();

	if (oldSkill ~= DPS_Skill or oldSkill == nil) and DPS_Skill ~= nil then

		TDGlowNextSpellId(DPS_Skill);

		if _TD["DPS_Debug"] then
			print ('skill: '..DPS_Skill);
		end
	end
end

----------------------------------------------
-- Event Script, Target Change, Specializaton Change
----------------------------------------------
function TDDps_OnEvent(event)
	if event == "PLAYER_TARGET_CHANGED" then
		if (UnitIsFriend("player", "target")) then
			TDGlowClear();
			return;
		else
			TDDps_InvokeNextSpell();
		end
	elseif event == "ACTIVE_TALENT_GROUP_CHANGED" then
		TDDps_CheckPlayer();
	end
end

----------------------------------------------
-- Update script (timer)
----------------------------------------------
function TDDps_OnUpdate(self, elapsed)
	_DPS_time = _DPS_time + elapsed;
    if _DPS_time >= 0.15 then
		_DPS_time = 0;
		TDDps_InvokeNextSpell();
    end
end