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');

	TDButton_Fetch();

	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
		TDButton_GlowNextSpellId(DPS_Skill);
	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

----------------------------------------------
-- Load appropriate addon for class
----------------------------------------------
function TDDps_LoadModule()
	local class = UnitClass('player');
	class = class:gsub(' ', '');
	local module = 'TDDps_' .. class;

	if not IsAddOnLoaded(module) then
		LoadAddOn(module)
	end

	if not IsAddOnLoaded(module) then
		print('TDDps: Could not find class module.');
		return;
	end

	local mode = GetSpecialization();
	local init = module .. '_EnableAddon';

	_G[init](mode);
end

-- PLAYER_ALIVE