vanilla-wow-addons – Rev 1
?pathlinks?
CCWatchEffectSelection = "";
local STATUS_COLOR = "|c000066FF";
local bModify = false;
local AR_DiagOpen = false;
local DisplayTable = {}
CCWatchConfig_SwatchFunc_SetColor =
{
["Urge"] = function(x) CCWatch_SetColorCallback("Urge") end,
["Low"] = function(x) CCWatch_SetColorCallback("Low") end,
["Normal"] = function(x) CCWatch_SetColorCallback("Normal") end,
["Effect"] = function(x) CCWatch_SetColorCallback("Effect") end,
}
CCWatchConfig_SwatchFunc_CancelColor =
{
["Urge"] = function(x) CCWatch_CancelColorCallback("Urge", x) end,
["Low"] = function(x) CCWatch_CancelColorCallback("Low", x) end,
["Normal"] = function(x) CCWatch_CancelColorCallback("Normal", x) end,
["Effect"] = function(x) CCWatch_CancelColorCallback("Effect", x) end,
}
--[[
function POBJI(k, v)
local str = k.." : ";
if type(v) ~= "table" and type(v) ~= "userdata" and type(v) ~= "function" and type(v) ~= "nil" then
CCWatch_AddMessage(str..v);
else
str = str.."type = "..type(v);
if type(v) == "table" then
CCWatch_AddMessage(str.." -> ");
POBJ(v);
else
CCWatch_AddMessage(str);
end
end
end
function POBJ(obj)
table.foreach(obj, POBJI);
end
--]]
local function SetButtonPickerColor(button, color)
getglobal(button.."_SwatchTexture"):SetVertexColor(color.r, color.g, color.b);
getglobal(button.."_BorderTexture"):SetVertexColor(color.r, color.g, color.b);
getglobal(button).r = color.r;
getglobal(button).g = color.g;
getglobal(button).b = color.b;
end
function CCWatch_DisableDropDown(dropDown)
getglobal(dropDown:GetName().."Text"):SetVertexColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
getglobal(dropDown:GetName().."Button"):Disable();
end
function CCWatch_EnableDropDown(dropDown)
getglobal(dropDown:GetName().."Text"):SetVertexColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
getglobal(dropDown:GetName().."Button"):Enable();
end
function UpdateSortTable()
DisplayTable = {}
table.foreach(CCWATCH.CCS, function (k, v) table.insert(DisplayTable, k) end);
table.sort(DisplayTable);
end
function CCWatchOptions_Toggle()
if(CCWatchOptionsFrame:IsVisible()) then
CCWatchOptionsFrame:Hide();
else
CCWatchOptionsFrame:Show();
end
end
--------------------------------------------------------------------------------
-- Main Frame
--------------------------------------------------------------------------------
function CCWatchOptionsBarsTab_OnClick()
CCWatchOptionsBarsFrame:Show();
CCWatchOptionsEffectsFrame:Hide();
CCWatchOptionsLearnFrame:Hide();
PlaySound("igMainMenuOptionCheckBoxOn");
end
function CCWatchOptionsEffectsTab_OnClick()
CCWatchOptionsBarsFrame:Hide();
CCWatchOptionsEffectsFrame:Show();
CCWatchOptionsLearnFrame:Hide();
PlaySound("igMainMenuOptionCheckBoxOn");
end
function CCWatchOptionsLearnTab_OnClick()
CCWatchOptionsBarsFrame:Hide();
CCWatchOptionsEffectsFrame:Hide();
CCWatchOptionsLearnFrame:Show();
PlaySound("igMainMenuOptionCheckBoxOn");
end
function CCWatchOptionsBarsFrame_OnShow()
CCWatchOptionsBarsTabTexture:Show();
CCWatchOptionsBarsTab:SetBackdropBorderColor(1, 1, 1, 1);
end
function CCWatchOptionsEffectsFrame_OnShow()
CCWatchOptionsEffectsTabTexture:Show();
CCWatchOptionsEffectsTab:SetBackdropBorderColor(1, 1, 1, 1);
end
function CCWatchOptionsLearnFrame_OnShow()
CCWatchOptionsLearnTabTexture:Show();
CCWatchOptionsLearnTab:SetBackdropBorderColor(1, 1, 1, 1);
end
function CCWatchOptionsBarsFrame_OnHide()
CCWatchOptionsBarsTabTexture:Hide();
CCWatchOptionsBarsTab:SetBackdropBorderColor(0.25, 0.25, 0.25, 1.0);
end
function CCWatchOptionsEffectsFrame_OnHide()
CCWatchOptionsEffectsTabTexture:Hide();
CCWatchOptionsEffectsTab:SetBackdropBorderColor(0.25, 0.25, 0.25, 1.0);
end
function CCWatchOptionsLearnFrame_OnHide()
CCWatchOptionsLearnTabTexture:Hide();
CCWatchOptionsLearnTab:SetBackdropBorderColor(0.25, 0.25, 0.25, 1.0);
end
--------------------------------------------------------------------------------
-- Bars Frame
--------------------------------------------------------------------------------
function CCWatchOptions_UnlockToggle()
if CCWATCH.STATUS == 2 then
CCWatch_BarLock();
CCWatch_AddMessage(CCWATCH_LOCKED);
else
CCWatch_BarUnlock();
CCWatch_AddMessage(CCWATCH_UNLOCKED);
end
end
function CCWatchOptions_InvertToggle()
CCWATCH.INVERT = not CCWATCH.INVERT;
CCWatch_Save[CCWATCH.PROFILE].invert = CCWATCH.INVERT;
if CCWATCH.INVERT then
CCWatch_AddMessage(CCWATCH_INVERSION_ON);
else
CCWatch_AddMessage(CCWATCH_INVERSION_OFF);
end
end
function CCWatchOptions_LeadingToggle()
CCWATCH.LEADINGTIMER = not CCWATCH.LEADINGTIMER;
CCWatch_Save[CCWATCH.PROFILE].LeadingTimer = CCWATCH.LEADINGTIMER;
if CCWATCH.LEADINGTIMER then
CCWatch_SetLeadingTimer(true);
CCWatch_AddMessage(CCWATCH_LEADINGTIMER_ON);
else
CCWatch_SetLeadingTimer(false);
CCWatch_AddMessage(CCWATCH_LEADINGTIMER_OFF);
end
end
function CCWatchOptions_ColorOverTimeToggle()
CCWATCH.COLOROVERTIME = not CCWATCH.COLOROVERTIME;
CCWatch_Save[CCWATCH.PROFILE].ColorOverTime = CCWATCH.COLOROVERTIME;
if CCWATCH.COLOROVERTIME then
CCWatch_AddMessage(CCWATCH_COLOROVERTIME_ON);
else
CCWatch_AddMessage(CCWATCH_COLOROVERTIME_OFF);
end
end
function CCWatchOptions_SetBarColorUrge()
CCWatch_Save[CCWATCH.PROFILE].CoTUrgeValue = CCWatchOptionsBarColorUrgeEdit:GetNumber();
CCWATCH.COTURGEVALUE = CCWatch_Save[CCWATCH.PROFILE].CoTUrgeValue;
end
function CCWatchOptions_SetBarColorLow()
CCWatch_Save[CCWATCH.PROFILE].CoTLowValue = CCWatchOptionsBarColorLowEdit:GetNumber();
CCWATCH.COTLOWVALUE = CCWatch_Save[CCWATCH.PROFILE].CoTLowValue;
end
function CCWatchGrowthDropDown_OnInit()
UIDROPDOWNMENU_INIT_MENU = "CCWatch_OptionsMenuGrowthDropDown";
local info = { };
info.text = CCWATCH_OPTION_GROWTH_OFF;
info.value = "off";
info.owner = this;
info.func = CCWatchGrowthDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = CCWATCH_OPTION_GROWTH_UP;
info.value = "up";
info.owner = this;
info.func = CCWatchGrowthDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = CCWATCH_OPTION_GROWTH_DOWN;
info.value = "down";
info.owner = this;
info.func = CCWatchGrowthDropDown_OnClick;
UIDropDownMenu_AddButton(info);
end
function CCWatchTimersDropDown_OnInit()
UIDROPDOWNMENU_INIT_MENU = "CCWatch_OptionsMenuTimersDropDown";
local info = { };
info.text = CCWATCH_OPTION_TIMERS_OFF;
info.value = "off";
info.owner = this;
info.func = CCWatchTimersDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = CCWATCH_OPTION_TIMERS_ON;
info.value = "on";
info.owner = this;
info.func = CCWatchTimersDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = CCWATCH_OPTION_TIMERS_REVERSE;
info.value = "reverse";
info.owner = this;
info.func = CCWatchTimersDropDown_OnClick;
UIDropDownMenu_AddButton(info);
end
function CCWatchGrowthDropDown_OnClick()
if (this.value == "off") then
CCWatch_Save[CCWATCH.PROFILE].growth = 0;
CCWATCH.GROWTH = CCWatch_Save[CCWATCH.PROFILE].growth;
CCWatchGrowthDropDownText:SetText(CCWATCH_OPTION_GROWTH_OFF);
CCWatch_AddMessage(CCWATCH_GROW_OFF);
elseif( this.value == "up" ) then
CCWatch_Save[CCWATCH.PROFILE].growth = 1;
CCWATCH.GROWTH = CCWatch_Save[CCWATCH.PROFILE].growth;
CCWatchGrowthDropDownText:SetText(CCWATCH_OPTION_GROWTH_UP);
CCWatch_AddMessage(CCWATCH_GROW_UP);
elseif( this.value == "down" ) then
CCWatch_Save[CCWATCH.PROFILE].growth = 2;
CCWATCH.GROWTH = CCWatch_Save[CCWATCH.PROFILE].growth;
CCWatchGrowthDropDownText:SetText(CCWATCH_OPTION_GROWTH_DOWN);
CCWatch_AddMessage(CCWATCH_GROW_DOWN);
end
end
function CCWatchTimersDropDown_OnClick()
if (this.value == "off") then
CCWatch_Save[CCWATCH.PROFILE].timers = 0;
CCWATCH.TIMERS = CCWatch_Save[CCWATCH.PROFILE].timers;
CCWatchTimersDropDownText:SetText(CCWATCH_OPTION_TIMERS_OFF);
CCWatch_AddMessage(CCWATCH_TIMERS_OFF);
elseif( this.value == "on" ) then
CCWatch_Save[CCWATCH.PROFILE].timers = 1;
CCWATCH.TIMERS = CCWatch_Save[CCWATCH.PROFILE].timers;
CCWatchTimersDropDownText:SetText(CCWATCH_OPTION_TIMERS_ON);
CCWatch_AddMessage(CCWATCH_TIMERS_ON);
elseif( this.value == "reverse" ) then
CCWatch_Save[CCWATCH.PROFILE].timers = 2;
CCWATCH.TIMERS = CCWatch_Save[CCWATCH.PROFILE].timers;
CCWatchTimersDropDownText:SetText(CCWATCH_OPTION_TIMERS_REVERSE);
CCWatch_AddMessage(CCWATCH_TIMERS_REVERSE);
end
end
--------------------------------------------------------------------------------
-- Monitor Frame
--------------------------------------------------------------------------------
function CCWatchOptions_MonitorCCToggle()
CCWATCH.MONITORING = bit.bxor(CCWATCH.MONITORING, ETYPE_CC);
CCWatch_Save[CCWATCH.PROFILE].Monitoring = CCWATCH.MONITORING;
if bit.band(CCWATCH.MONITORING, ETYPE_DEBUFF) == 0 then
if bit.band(CCWATCH.MONITORING, ETYPE_CC) ~= 0 then
CCWatchObject:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE");
CCWatchObject:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE");
else
CCWatchObject:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE");
CCWatchObject:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE");
end
end
end
function CCWatchOptions_MonitorDebuffToggle()
CCWATCH.MONITORING = bit.bxor(CCWATCH.MONITORING, ETYPE_DEBUFF);
CCWatch_Save[CCWATCH.PROFILE].Monitoring = CCWATCH.MONITORING;
if bit.band(CCWATCH.MONITORING, ETYPE_CC) == 0 then
if bit.band(CCWATCH.MONITORING, ETYPE_DEBUFF) ~= 0 then
CCWatchObject:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE");
CCWatchObject:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE");
else
CCWatchObject:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE");
CCWatchObject:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE");
end
end
end
function CCWatchOptions_MonitorBuffToggle()
CCWATCH.MONITORING = bit.bxor(CCWATCH.MONITORING, ETYPE_BUFF);
CCWatch_Save[CCWATCH.PROFILE].Monitoring = CCWATCH.MONITORING;
if bit.band(CCWATCH.MONITORING, ETYPE_BUFF) ~= 0 then
CCWatchObject:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS");
CCWatchObject:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS");
else
CCWatchObject:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS");
CCWatchObject:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS");
end
end
function CCWatchOptions_ArcanistToggle()
CCWATCH.ARCANIST = not CCWATCH.ARCANIST;
CCWatch_Save[CCWATCH.PROFILE].arcanist = CCWATCH.ARCANIST;
if CCWATCH.ARCANIST then
CCWATCH.CCS[CCWATCH_POLYMORPH].LENGTH = CCWATCH.CCS[CCWATCH_POLYMORPH].LENGTH + 15;
CCWatch_AddMessage(CCWATCH_ARCANIST_ON);
else
CCWATCH.CCS[CCWATCH_POLYMORPH].LENGTH = CCWATCH.CCS[CCWATCH_POLYMORPH].LENGTH - 15;
CCWatch_AddMessage(CCWATCH_ARCANIST_OFF);
end
CCWatchOptionsFrameArcanist:SetChecked(CCWATCH.ARCANIST);
end
function CCWatchOptions_WarnAppliedToggle()
CCWATCH.WARNMSG = bit.bxor(CCWATCH.WARNMSG, CCW_EWARN_APPLIED);
CCWatch_Save[CCWATCH.PROFILE].WarnMsg = CCWATCH.WARNMSG;
CCWatchOptionsFrameWarnApplied:SetChecked(bit.band(CCWATCH.WARNMSG, CCW_EWARN_APPLIED));
end
function CCWatchOptions_WarnFadedToggle()
CCWATCH.WARNMSG = bit.bxor(CCWATCH.WARNMSG, CCW_EWARN_FADED);
CCWatch_Save[CCWATCH.PROFILE].WarnMsg = CCWATCH.WARNMSG;
CCWatchOptionsFrameWarnFaded:SetChecked(bit.band(CCWATCH.WARNMSG, CCW_EWARN_FADED));
end
function CCWatchOptions_WarnBrokenToggle()
CCWATCH.WARNMSG = bit.bxor(CCWATCH.WARNMSG, CCW_EWARN_BROKEN);
CCWatch_Save[CCWATCH.PROFILE].WarnMsg = CCWATCH.WARNMSG;
CCWatchOptionsFrameWarnBroken:SetChecked(bit.band(CCWATCH.WARNMSG, CCW_EWARN_BROKEN));
end
function CCWatchOptions_WarnLowTimeToggle()
CCWATCH.WARNMSG = bit.bxor(CCWATCH.WARNMSG, CCW_EWARN_LOWTIME);
CCWatch_Save[CCWATCH.PROFILE].WarnMsg = CCWATCH.WARNMSG;
CCWatchOptionsFrameWarnLowTime:SetChecked(bit.band(CCWATCH.WARNMSG, CCW_EWARN_LOWTIME));
end
function CCWatchOptions_SetWarnLow()
CCWatch_Save[CCWATCH.PROFILE].WarnLow = CCWatchOptionsFrameWarnLowEdit:GetNumber();
CCWATCH.WARNLOW = CCWatch_Save[CCWATCH.PROFILE].WarnLow;
end
function CCWatchOptionsStyleDropDown_OnInit()
UIDROPDOWNMENU_INIT_MENU = "CCWatch_OptionsStyleDropDown";
local info = { };
info.text = CCWATCH_OPTION_STYLE_CURRENT;
info.value = "normal";
info.owner = this;
info.func = CCWatchOptionsStyleDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = CCWATCH_OPTION_STYLE_RECENT;
info.value = "recent";
info.owner = this;
info.func = CCWatchOptionsStyleDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = CCWATCH_OPTION_STYLE_ALL;
info.value = "all";
info.owner = this;
info.func = CCWatchOptionsStyleDropDown_OnClick;
UIDropDownMenu_AddButton(info);
end
function CCWatchOptionsStyleDropDown_OnClick()
if (this.value == "normal") then
CCWatch_Save[CCWATCH.PROFILE].style = 0;
CCWATCH.STYLE = CCWatch_Save[CCWATCH.PROFILE].style;
CCWatchOptionsStyleDropDownText:SetText(CCWATCH_OPTION_STYLE_CURRENT);
CCWatch_AddMessage(CCWATCH_STYLE_CURRENT);
elseif( this.value == "recent" ) then
CCWatch_Save[CCWATCH.PROFILE].style = 1;
CCWATCH.STYLE = CCWatch_Save[CCWATCH.PROFILE].style;
CCWatchOptionsStyleDropDownText:SetText(CCWATCH_OPTION_STYLE_RECENT);
CCWatch_AddMessage(CCWATCH_STYLE_RECENT);
elseif( this.value == "all" ) then
CCWatch_Save[CCWATCH.PROFILE].style = 2;
CCWATCH.STYLE = CCWatch_Save[CCWATCH.PROFILE].style;
CCWatchOptionsStyleDropDownText:SetText(CCWATCH_OPTION_STYLE_ALL);
CCWatch_AddMessage(CCWATCH_STYLE_ALL);
end
end
function CCWatchOptionsWarnCCDropDown_OnInit()
UIDROPDOWNMENU_INIT_MENU = "CCWatch_OptionsWarnCCDropDown";
local info = { };
info.text = "EMOTE";
info.value = "EMOTE";
info.owner = this;
info.func = CCWatchOptionsWarnCCDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = "SAY";
info.value = "SAY";
info.owner = this;
info.func = CCWatchOptionsWarnCCDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = "PARTY";
info.value = "PARTY";
info.owner = this;
info.func = CCWatchOptionsWarnCCDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = "RAID";
info.value = "RAID";
info.owner = this;
info.func = CCWatchOptionsWarnCCDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = "YELL";
info.value = "YELL";
info.owner = this;
info.func = CCWatchOptionsWarnCCDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = "CHANNEL";
info.value = "CHANNEL";
info.owner = this;
info.func = CCWatchOptionsWarnCCDropDown_OnClick;
UIDropDownMenu_AddButton(info);
end
function CCWatchOptionsWarnCCDropDown_OnClick()
if (this.value == "EMOTE") or (this.value == "SAY") or (this.value == "PARTY")
or (this.value == "RAID") or (this.value == "YELL") or (this.value == "CHANNEL") then
CCWatch_Save[CCWATCH.PROFILE].WarnType = this.value;
CCWATCH.WARNTYPE = CCWatch_Save[CCWATCH.PROFILE].WarnType;
CCWatchOptionsWarnCCDropDownText:SetText(this.value);
if (this.value == "CHANNEL") then
CCWatchOptionsFrameCustomCCEdit:Show();
else
CCWatchOptionsFrameCustomCCEdit:Hide();
end
CCWatch_AddMessage(CCWATCH_WARNCC_SETTO..this.value);
end
end
function CCWatchOptions_SetCustomCC()
CCWatch_Save[CCWATCH.PROFILE].WarnCustomCC = CCWatchOptionsFrameCustomCCEdit:GetText();
CCWATCH.WARNCUSTOMCC = CCWatch_Save[CCWATCH.PROFILE].WarnCustomCC;
end
--------------------------------------------------------------------------------
-- Learn Frame
--------------------------------------------------------------------------------
function CCWatchOptions_MonitorToggle()
end
function CCWatchOptions_WarnToggle()
end
function CCWatchOptions_UseColorToggle()
if CCWatchOptionsEffectUseColor:GetChecked() then
CCWatchOptionsBarColorEffect:Enable();
else
CCWatchOptionsBarColorEffect:Disable();
end
end
function CCWatchOptionsEffectTypeDropDown_OnInit()
UIDROPDOWNMENU_INIT_MENU = "CCWatch_OptionsEffectTypeDropDown";
local info = { };
info.text = "CC";
info.value = "cc";
info.owner = this;
info.func = CCWatchOptionsEffectTypeDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = "DEBUFF";
info.value = "debuff";
info.owner = this;
info.func = CCWatchOptionsEffectTypeDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = "BUFF";
info.value = "buff";
info.owner = this;
info.func = CCWatchOptionsEffectTypeDropDown_OnClick;
UIDropDownMenu_AddButton(info);
end
function CCWatchOptionsEffectGroupDropDown_OnInit()
UIDROPDOWNMENU_INIT_MENU = "CCWatch_OptionsEffectGroupDropDown";
local info = { };
info.text = "1";
info.value = "1";
info.owner = this;
info.func = CCWatchOptionsEffectGroupDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = "2";
info.value = "2";
info.owner = this;
info.func = CCWatchOptionsEffectGroupDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = "3";
info.value = "3";
info.owner = this;
info.func = CCWatchOptionsEffectGroupDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = "4";
info.value = "4";
info.owner = this;
info.func = CCWatchOptionsEffectGroupDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = "5";
info.value = "5";
info.owner = this;
info.func = CCWatchOptionsEffectGroupDropDown_OnClick;
UIDropDownMenu_AddButton(info);
end
function CCWatchOptionsEffectDRDropDown_OnInit()
UIDROPDOWNMENU_INIT_MENU = "CCWatch_OptionsEffectDRDropDown";
local info = { };
info.text = CCWATCH_OPTION_DR_NEVER;
info.value = "0";
info.owner = this;
info.func = CCWatchOptionsEffectDRDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = CCWATCH_OPTION_DR_MOBPLAYERS;
info.value = "1";
info.owner = this;
info.func = CCWatchOptionsEffectDRDropDown_OnClick;
UIDropDownMenu_AddButton(info);
info.text = CCWATCH_OPTION_DR_PLAYERS;
info.value = "2";
info.owner = this;
info.func = CCWatchOptionsEffectDRDropDown_OnClick;
UIDropDownMenu_AddButton(info);
end
function CCWatchOptionsEffectTypeDropDown_OnClick()
if (this.value == "cc") then
CCWatchOptionsEffectTypeDropDownText:SetText("CC");
elseif( this.value == "debuff" ) then
CCWatchOptionsEffectTypeDropDownText:SetText("DEBUFF");
elseif( this.value == "buff" ) then
CCWatchOptionsEffectTypeDropDownText:SetText("BUFF");
end
end
function CCWatchOptionsEffectDRDropDown_OnClick()
if (this.value == "0") then
CCWatchOptionsEffectDRDropDownText:SetText(CCWATCH_OPTION_DR_NEVER);
elseif( this.value == "1") then
CCWatchOptionsEffectDRDropDownText:SetText(CCWATCH_OPTION_DR_MOBPLAYERS);
else
CCWatchOptionsEffectDRDropDownText:SetText(CCWATCH_OPTION_DR_PLAYERS);
end
end
function CCWatchOptionsEffectGroupDropDown_OnClick()
CCWatchOptionsEffectGroupDropDownText:SetText(this.value);
end
function CCWatchOptionsLearnDelete_OnClick()
-- Pop alert to confirm deletion
CCWatch_ShowDeletePrompt();
end
function CCWatchOptionsLearnClear_OnClick()
CCWatchOptionsEffectNameEdit:SetText("");
CCWatchOptionsEffectNameStatic:SetText("");
CCWatchOptionsEffectDurationEdit:SetText("");
CCWatchOptionsEffectDurationStatic:SetText("");
CCWatchOptionsEffectTypeDropDownText:SetText("CC");
CCWatchOptionsEffectGroupDropDownText:SetText("1");
CCWatchOptionsEffectDRDropDownText:SetText(CCWATCH_OPTION_DR_NEVER);
CCWatchOptionsEffectMonitor:SetChecked(true);
CCWatchOptionsEffectWarn:SetChecked(false);
CCWatchOptionsEffectUseColor:SetChecked(false);
CCWatchOptionsBarColorEffect:Disable();
SetButtonPickerColor("CCWatchOptionsBarColorEffect", {r=0,g=0,b=0});
CCWatchOptionsLearnModify:SetText("Add");
bModify = false;
CCWatch_EnableDropDown(CCWatchOptionsEffectTypeDropDown);
CCWatch_EnableDropDown(CCWatchOptionsEffectGroupDropDown);
CCWatch_EnableDropDown(CCWatchOptionsEffectDRDropDown);
CCWatchOptionsEffectNameEdit:Show();
CCWatchOptionsEffectDurationEdit:Show();
end
function CCWatchOptionsLearnModify_OnClick()
local effect = CCWatchOptionsEffectNameEdit:GetText();
local duration = CCWatchOptionsEffectDurationEdit:GetNumber();
local group = CCWatchOptionsEffectGroupDropDownText:GetText();
local stype = CCWatchOptionsEffectTypeDropDownText:GetText();
local sdr = CCWatchOptionsEffectDRDropDownText:GetText();
local monitor = CCWatchOptionsEffectMonitor:GetChecked();
local warn = CCWatchOptionsEffectWarn:GetChecked();
local color = {r=0, g=0, b=0};
local etype;
local edr;
if stype == "BUFF" then
etype = ETYPE_BUFF;
elseif stype == "DEBUFF" then
etype = ETYPE_DEBUFF;
else
etype = ETYPE_CC;
end
if dr == CCWATCH_OPTION_DR_NEVER then
edr = 0;
elseif sdr == CCWATCH_OPTION_DR_MOBPLAYERS then
edr = 1;
else
edr = 2;
end
if effect == "" then
message("Invalid Effect name");
return;
end
if duration <= 0 then
message("Invalid duration.");
return;
end
if CCWatchOptionsEffectUseColor:GetChecked() then
color.r = CCWatchOptionsBarColorEffect.r;
color.g = CCWatchOptionsBarColorEffect.g;
color.b = CCWatchOptionsBarColorEffect.b;
else
color = nil;
end
if bModify then
-- modifying
-- check if existing custom effect
if CCWatch_Save[CCWATCH.PROFILE].SavedCC[effect] ~= nil then
if effect ~= CCWatchEffectSelection then -- skillname change...
-- remove old effect
CCWATCH.CCS[CCWatchEffectSelection] = nil;
CCWatch_Save[CCWATCH.PROFILE].ConfCC[CCWatchEffectSelection] = nil;
CCWatch_Save[CCWATCH.PROFILE].SavedCC[CCWatchEffectSelection] = nil;
end
-- add/update effect
CCWatchAddEffect(false, effect, group, etype, duration, edr, monitor, warn, color);
else -- if not we are modifying a builtin effect
if effect ~= CCWatchEffectSelection then -- skillname change...
message("WARNING : adding an effect require to select the NEW button");
end
CCWatchAddEffect(true, effect, group, etype, duration, edr, monitor, warn, color);
end
else
-- add
if CCWATCH.CCS[effect] ~= nil then
message("Effect '"..effect.."' already exist.\nPlease select Edit to modify it");
return;
else
CCWatchAddEffect(false, effect, group, etype, duration, edr, monitor, warn, color);
end
end
UpdateSortTable();
CCWatchOptionsEffects_Update();
CCWatch_AddMessage(CCWATCH_EFFECT.." "..effect..CCWATCH_ADDEDMODIFIED);
end
--------------------------------------------------------------------------------
-- Custom effect management
--------------------------------------------------------------------------------
function CCWatchAddEffect(builtin, effect, group, etype, duration, diminishes, monitor, warn, color)
local iWarn;
if warn then
iWarn = 1;
else
iWarn = 0;
end
CCWATCH.CCS[effect] = {
GROUP = tonumber(group),
ETYPE = etype,
LENGTH = duration,
DIMINISHES = diminishes,
MONITOR = monitor,
WARN = iWarn,
COLOR = color,
TARGET = "",
PLAYER = nil,
TIMER_START = 0,
TIMER_END = 0,
DIMINISH = 1
};
if builtin then
CCWatch_Save[CCWATCH.PROFILE].ConfCC[effect] = {
MONITOR = monitor,
WARN = iWarn,
COLOR = color
};
else
CCWatch_Save[CCWATCH.PROFILE].SavedCC[effect] = {
GROUP = tonumber(group),
ETYPE = etype,
LENGTH = duration,
DIMINISHES = diminishes,
MONITOR = monitor,
WARN = iWarn,
COLOR = color
};
end
end
function CCWatch_SetColorCallback(id)
local iRed, iGreen, iBlue = ColorPickerFrame:GetColorRGB();
local swatch, button, border;
button = getglobal("CCWatchOptionsBarColor" .. id);
swatch = getglobal("CCWatchOptionsBarColor" .. id .. "_SwatchTexture");
border = getglobal("CCWatchOptionsBarColor" .. id .. "_BorderTexture");
swatch:SetVertexColor(iRed, iGreen, iBlue);
border:SetVertexColor(iRed, iGreen, iBlue);
button.r = iRed;
button.g = iGreen;
button.b = iBlue;
if id == "Urge" then
CCWATCH.COTURGECOLOR.r = iRed;
CCWATCH.COTURGECOLOR.g = iGreen;
CCWATCH.COTURGECOLOR.b = iBlue;
CCWatch_Save[CCWATCH.PROFILE].CoTUrgeColor = CCWATCH.COTURGECOLOR;
elseif id == "Low" then
CCWATCH.COTLOWCOLOR.r = iRed;
CCWATCH.COTLOWCOLOR.g = iGreen;
CCWATCH.COTLOWCOLOR.b = iBlue;
CCWatch_Save[CCWATCH.PROFILE].CoTLowColor = CCWATCH.COTLOWCOLOR;
elseif id == "Normal" then
CCWATCH.COTNORMALCOLOR.r = iRed;
CCWATCH.COTNORMALCOLOR.g = iGreen;
CCWATCH.COTNORMALCOLOR.b = iBlue;
CCWatch_Save[CCWATCH.PROFILE].CoTNormalColor = CCWATCH.COTNORMALCOLOR;
end
end
function CCWatch_CancelColorCallback(id, prev)
local iRed = prev.r;
local iGreen = prev.g;
local iBlue = prev.b;
local swatch, button, border;
button = getglobal("CCWatchOptionsBarColor" .. id);
swatch = getglobal("CCWatchOptionsBarColor" .. id .. "_SwatchTexture");
border = getglobal("CCWatchOptionsBarColor" .. id .. "_BorderTexture");
swatch:SetVertexColor(iRed, iGreen, iBlue);
border:SetVertexColor(iRed, iGreen, iBlue);
button.r = iRed;
button.g = iGreen;
button.b = iBlue;
end
function CCWatchOptionsLearnFillFields()
if CCWatchEffectSelection == nil then
return;
end
-- check if builtin effect to disable editing
if CCWatch_Save[CCWATCH.PROFILE].SavedCC[CCWatchEffectSelection] == nil then
CCWatch_DisableDropDown(CCWatchOptionsEffectTypeDropDown);
CCWatch_DisableDropDown(CCWatchOptionsEffectGroupDropDown);
CCWatch_DisableDropDown(CCWatchOptionsEffectDRDropDown);
-- hack because I have no other idea
CCWatchOptionsEffectNameEdit:Hide();
CCWatchOptionsEffectDurationEdit:Hide();
CCWatchOptionsEffectNameStatic:SetText(CCWatchEffectSelection);
CCWatchOptionsEffectDurationStatic:SetText(CCWATCH.CCS[CCWatchEffectSelection].LENGTH);
else
CCWatch_EnableDropDown(CCWatchOptionsEffectTypeDropDown);
CCWatch_EnableDropDown(CCWatchOptionsEffectGroupDropDown);
CCWatch_EnableDropDown(CCWatchOptionsEffectDRDropDown);
CCWatchOptionsEffectNameEdit:Show();
CCWatchOptionsEffectDurationEdit:Show();
CCWatchOptionsEffectNameStatic:SetText("");
CCWatchOptionsEffectDurationStatic:SetText("");
end
CCWatchOptionsEffectNameEdit:SetText(CCWatchEffectSelection);
CCWatchOptionsEffectDurationEdit:SetText(CCWATCH.CCS[CCWatchEffectSelection].LENGTH);
if CCWATCH.CCS[CCWatchEffectSelection].ETYPE == ETYPE_BUFF then
CCWatchOptionsEffectTypeDropDownText:SetText("BUFF");
elseif CCWATCH.CCS[CCWatchEffectSelection].ETYPE == ETYPE_DEBUFF then
CCWatchOptionsEffectTypeDropDownText:SetText("DEBUFF");
else
CCWatchOptionsEffectTypeDropDownText:SetText("CC");
end
CCWatchOptionsEffectGroupDropDownText:SetText(CCWATCH.CCS[CCWatchEffectSelection].GROUP);
if CCWATCH.CCS[CCWatchEffectSelection].DIMINISHES == 0 then
CCWatchOptionsEffectDRDropDownText:SetText(CCWATCH_OPTION_DR_NEVER);
elseif CCWATCH.CCS[CCWatchEffectSelection].DIMINISHES == 1 then
CCWatchOptionsEffectDRDropDownText:SetText(CCWATCH_OPTION_DR_MOBPLAYERS);
else
CCWatchOptionsEffectDRDropDownText:SetText(CCWATCH_OPTION_DR_PLAYERS);
end
CCWatchOptionsEffectMonitor:SetChecked(CCWATCH.CCS[CCWatchEffectSelection].MONITOR);
local bFlag = CCWATCH.CCS[CCWatchEffectSelection].WARN > 0;
CCWatchOptionsEffectWarn:SetChecked(bFlag);
if CCWATCH.CCS[CCWatchEffectSelection].COLOR ~= nil then
CCWatchOptionsEffectUseColor:SetChecked(true);
CCWatchOptionsBarColorEffect:Enable();
SetButtonPickerColor("CCWatchOptionsBarColorEffect", CCWATCH.CCS[CCWatchEffectSelection].COLOR);
else
CCWatchOptionsEffectUseColor:SetChecked(false);
CCWatchOptionsBarColorEffect:Disable();
SetButtonPickerColor("CCWatchOptionsBarColorEffect", {r=1,g=1,b=1});
end
bModify = true;
CCWatchOptionsLearnModify:SetText("Modify");
end
function CCWatch_DeleteLearntEffect()
CCWATCH.CCS[CCWatchEffectSelection] = nil;
-- CCWatch_Save[CCWATCH.PROFILE].SavedCC[CCWatchEffectSelection] = nil;
CCWatch_Save[CCWATCH.PROFILE].SavedCC[CCWatchEffectSelection] = {}
UpdateSortTable();
CCWatchOptionsEffects_Update();
CCWatch_OpenDiagToggle();
CCWatch_AddMessage(CCWATCH_REMOVED_NOTICE..CCWatchEffectSelection..".");
CCWatchEffectSelection = "";
end
function CCWatchOptions_OnLoad()
UIPanelWindows['CCWatchOptionsFrame'] = {area = 'center', pushable = 1};
end
--------------------------------------------------------------------------------
-- Init
--------------------------------------------------------------------------------
function CCWatchOptions_Init()
CCWatchSliderAlpha:SetValue(CCWATCH.ALPHA);
CCWatchSliderScale:SetValue(CCWATCH.SCALE);
CCWatchSliderWidth:SetValue(CCWATCH.WIDTH);
CCWatchOptionsFrameMonitorCC:SetChecked(bit.band(CCWATCH.MONITORING, ETYPE_CC));
CCWatchOptionsFrameMonitorDebuff:SetChecked(bit.band(CCWATCH.MONITORING, ETYPE_DEBUFF));
CCWatchOptionsFrameMonitorBuff:SetChecked(bit.band(CCWATCH.MONITORING, ETYPE_BUFF));
CCWatchOptionsFrameUnlock:SetChecked(CCWATCH.STATUS == 2);
CCWatchOptionsFrameInvert:SetChecked(CCWATCH.INVERT);
CCWatchOptionsFrameArcanist:SetChecked(CCWATCH.ARCANIST);
CCWatchOptionsWarnCCDropDownText:SetText(CCWATCH.WARNTYPE);
CCWatchOptionsFrameCustomCCEdit:SetText(CCWATCH.WARNCUSTOMCC);
if CCWATCH.WARNTYPE == "CHANNEL" then
CCWatchOptionsFrameCustomCCEdit:Show();
else
CCWatchOptionsFrameCustomCCEdit:Hide();
end
CCWatchOptionsEffectTypeDropDownText:SetText("CC");
CCWatchOptionsEffectGroupDropDownText:SetText("1");
CCWatchOptionsEffectDRDropDownText:SetText(CCWATCH_OPTION_DR_NEVER);
CCWatchOptionsEffectMonitor:SetChecked(true);
CCWatchOptionsEffectWarn:SetChecked(false);
if CCWATCH.GROWTH == 0 then
CCWatchGrowthDropDownText:SetText(CCWATCH_OPTION_GROWTH_OFF);
elseif CCWATCH.GROWTH == 1 then
CCWatchGrowthDropDownText:SetText(CCWATCH_OPTION_GROWTH_UP);
else
CCWatchGrowthDropDownText:SetText(CCWATCH_OPTION_GROWTH_DOWN);
end
if CCWATCH.TIMERS == 0 then
CCWatchTimersDropDownText:SetText(CCWATCH_OPTION_TIMERS_OFF);
elseif CCWATCH.TIMERS == 1 then
CCWatchTimersDropDownText:SetText(CCWATCH_OPTION_TIMERS_ON);
else
CCWatchTimersDropDownText:SetText(CCWATCH_OPTION_TIMERS_REVERSE);
end
if CCWATCH.STYLE == 0 then
CCWatchOptionsStyleDropDownText:SetText(CCWATCH_OPTION_STYLE_CURRENT);
elseif CCWATCH.STYLE == 1 then
CCWatchOptionsStyleDropDownText:SetText(CCWATCH_OPTION_STYLE_RECENT);
else
CCWatchOptionsStyleDropDownText:SetText(CCWATCH_OPTION_STYLE_ALL);
end
UpdateSortTable();
CCWatchOptionsEffects_Update();
CCWatchOptionsUseColorOverTime:SetChecked(CCWATCH.COLOROVERTIME);
CCWatchOptionsBarColorUrge.swatchFunc = CCWatchConfig_SwatchFunc_SetColor["Urge"];
CCWatchOptionsBarColorUrge.cancelFunc = CCWatchConfig_SwatchFunc_CancelColor["Urge"];
CCWatchOptionsBarColorLow.swatchFunc = CCWatchConfig_SwatchFunc_SetColor["Low"];
CCWatchOptionsBarColorLow.cancelFunc = CCWatchConfig_SwatchFunc_CancelColor["Low"];
CCWatchOptionsBarColorNormal.swatchFunc = CCWatchConfig_SwatchFunc_SetColor["Normal"];
CCWatchOptionsBarColorNormal.cancelFunc = CCWatchConfig_SwatchFunc_CancelColor["Normal"];
CCWatchOptionsBarColorEffect.swatchFunc = CCWatchConfig_SwatchFunc_SetColor["Effect"];
CCWatchOptionsBarColorEffect.cancelFunc = CCWatchConfig_SwatchFunc_CancelColor["Effect"];
CCWatchOptionsBarColorEffect:Disable();
SetButtonPickerColor("CCWatchOptionsBarColorUrge", CCWATCH.COTURGECOLOR);
SetButtonPickerColor("CCWatchOptionsBarColorLow", CCWATCH.COTLOWCOLOR);
SetButtonPickerColor("CCWatchOptionsBarColorNormal", CCWATCH.COTNORMALCOLOR);
CCWatchOptionsFrameWarnApplied:SetChecked(bit.band(CCWATCH.WARNMSG, CCW_EWARN_APPLIED));
CCWatchOptionsFrameWarnFaded:SetChecked(bit.band(CCWATCH.WARNMSG, CCW_EWARN_FADED));
CCWatchOptionsFrameWarnBroken:SetChecked(bit.band(CCWATCH.WARNMSG, CCW_EWARN_BROKEN));
CCWatchOptionsFrameWarnLowTime:SetChecked(bit.band(CCWATCH.WARNMSG, CCW_EWARN_LOWTIME));
CCWatchOptionsFrameLeading:SetChecked(CCWATCH.LEADINGTIMER);
CCWatchOptionsBarsFrame:Show();
CCWatchOptionsEffectsTabTexture:Hide();
CCWatchOptionsEffectsTab:SetBackdropBorderColor(0.25, 0.25, 0.25, 1.0);
CCWatchOptionsLearnTabTexture:Hide();
CCWatchOptionsLearnTab:SetBackdropBorderColor(0.25, 0.25, 0.25, 1.0);
CCWatchOptionsBarColorUrgeEdit:SetText(CCWATCH.COTURGEVALUE);
CCWatchOptionsBarColorLowEdit:SetText(CCWATCH.COTLOWVALUE);
CCWatchOptionsFrameWarnLowEdit:SetText(CCWATCH.WARNLOW);
end
--------------------------------------------------------------------------------
-- Scroll Frame functions
--------------------------------------------------------------------------------
local item;
local CCcount;
local curoffset;
local function EffectsUpdate(k, v)
item = item + 1;
if (curoffset > item) or ((item - curoffset) >= 11) then
return;
end
local itemSlot = getglobal("CCWatchOptionsEffectsItem"..(item-curoffset+1));
local name = v;
if (name == CCWatchEffectSelection) then
itemSlot:SetTextColor(1, 1, 0);
else
itemSlot:SetTextColor(1, 1, 1);
end
itemSlot:SetText(name);
itemSlot:Show();
end
function CCWatchOptionsEffects_Update()
-- CCWatch_AddMessage("CCWatchOptionsEffects_Update");
CCcount = 0;
CCcount = table.getn(DisplayTable);
FauxScrollFrame_Update(CCWatchOptionsEffectsListScrollFrame, CCcount, 11, 16);
item = -1;
curoffset = FauxScrollFrame_GetOffset(CCWatchOptionsEffectsListScrollFrame);
-- CCWatch_AddMessage("We're at "..curoffset);
table.foreach(DisplayTable, EffectsUpdate);
end
-- Tooltip Window
function CCWatchOptionsEffects_OnEnter()
-- CCWatch_AddMessage("CCWatchOptionsEffects_OnEnter");
GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
local spellname = this:GetText();
if spellname == nil then
return;
end
if CCWATCH.CCS[spellname] == nil then
CCWatch_AddMessage("Error : '"..spellname.."' not found in effect array.");
return;
end
local str = spellname.."\nDuration: "..CCWATCH.CCS[spellname].LENGTH.."\nType: ";
if CCWATCH.CCS[spellname].ETYPE == ETYPE_BUFF then
str = str.."Buff";
elseif CCWATCH.CCS[spellname].ETYPE == ETYPE_DEBUFF then
str = str.."DeBuff";
else
str = str.."CC";
end
str = str.."\nDR: ";
if CCWATCH.CCS[spellname].DIMINISHES == 0 then
str = str..CCWATCH_OPTION_DR_NEVER;
elseif CCWATCH.CCS[spellname].DIMINISHES == 1 then
str = str..CCWATCH_OPTION_DR_MOBPLAYERS;
else
str = str..CCWATCH_OPTION_DR_PLAYERS;
end
str = str.."\nMonitor: ";
if CCWATCH.CCS[spellname].MONITOR then
str = str.."on";
else
str = str.."off";
end
str = str.."\nWarn: ";
if CCWATCH.CCS[spellname].WARN > 0 then
str = str.."on";
else
str = str.."off";
end
GameTooltip:SetText(str, 1, 1, 1);
end
-- Confirm dialog frame
function CCWatch_OpenDiagToggle()
if (CCWatch_DiagOpen) then
CCWatch_DiagOpen = false;
else
CCWatch_DiagOpen = true;
end
end
function CCWatch_ShowDeletePrompt(cost)
StaticPopupDialogs["CCWATCH_DELETE_EFFECT"] = {
text = TEXT(STATUS_COLOR..CCWATCH_FULLVERSION.." (Elwen)\n\n\n"..CCWATCH_LEARN_DELETE_PROMPT.."'"..CCWatchEffectSelection.."' ?"),
button1 = TEXT(OKAY),
button2 = TEXT(CANCEL),
OnAccept = function()
CCWatch_DeleteLearntEffect();
end,
OnShow = function()
CCWatch_OpenDiagToggle();
end,
OnHide = function()
CCWatch_OpenDiagToggle();
end,
showAlert = 1,
timeout = 0,
exclusive = 0,
whileDead = 1,
interruptCinematic = 1
};
PlaySound("QUESTADDED");
StaticPopup_Show("CCWATCH_DELETE_EFFECT");
end