vanilla-wow-addons – Rev 1
?pathlinks?
NL_NEED_FRAME_LEFT_INDENT = 20
NL_NEED_FRAME_TOP_INDENT = 30
NL_NEED_FRAME_SPACING = 25
NLNeedFrameName = "NLConfigNeedsFrame";
NLMainFrameName = "NLConfigFrame";
--------------------------------------------------------
-- NL_GetConfigForCurrentPlayer
--------
-- Get the configuration for this player.
--------------------------------------------------------
function NL_GetConfigForCurrentPlayer( doDefaults )
if( NL_CONFIGS == nil ) then
NL_CONFIGS = {};
end
local sName = UnitName("player") .. " " .. GetCVar("realmName");
if( doDefaults or NL_CONFIGS[sName] == nil or NL_CONFIGS[sName].Version == nil or NL_CONFIGS[sName].Version < 2 ) then
NL_CONFIGS[sName] = {};
if( NL_CONFIGS[sName].Version and NL_CONFIGS[sName].Version < 2 ) then
NL_Msg("IMPORTANT NOTE: Version 2.00 of Needy List has reset your Needy List configuration.");
end
NL_CONFIGS[sName].Needs = {};
local NeedsList = NL_CONFIGS[sName].Needs;
local numNeeds = 0;
-- top priority need is always STICKIED
NeedsList[numNeeds] = {Name="NeverShow",Toggle=0,BGColor={r = 0.0, g = 0.0, b = 1.0, opacity = 0.5},Filter={Type="Units",Names=""}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="Sticky",Toggle=0,BGColor={r = 0.0, g = 0.0, b = 1.0, opacity = 0.5},Filter={Type="Units",Names=""}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="Health",Toggle=1,BGColor={r = 1.0, g = 0.0, b = 0.0, opacity = 0.8},Threshold=75,Filter={Type="Everyone"}};
NL_CONFIGS[sName].HealthNeedIndex = numNeeds;
numNeeds = numNeeds + 1;
if( NL_PLAYERCLASS == NL_PRIEST_NAME or NL_PLAYERCLASS == NL_PALADIN_NAME ) then
NeedsList[numNeeds] = {Name="Magic",Type="DEBUFF",Toggle=1,BGColor={r = 1.0, g = 0.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
end
if( NL_PLAYERCLASS == NL_SHAMAN_NAME or NL_PLAYERCLASS == NL_DRUID_NAME or NL_PLAYERCLASS == NL_PALADIN_NAME ) then
NeedsList[numNeeds] = {Name="Poison",Type="DEBUFF",Toggle=1,BGColor={r = 1.0, g = 1.0, b = 0.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
end
if( NL_PLAYERCLASS == NL_SHAMAN_NAME or NL_PLAYERCLASS == NL_PRIEST_NAME or NL_PLAYERCLASS == NL_PALADIN_NAME ) then
NeedsList[numNeeds] = {Name="Disease",Type="DEBUFF",Toggle=1,BGColor={r = 0.0, g = 1.0, b = 0.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
end
if( NL_PLAYERCLASS == NL_MAGE_NAME or NL_PLAYERCLASS == NL_DRUID_NAME ) then
NeedsList[numNeeds] = {Name="Curse",Type="DEBUFF",Toggle=1,BGColor={r = 0.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
end
-- for priests specifically
if( NL_PLAYERCLASS == NL_PRIEST_NAME ) then
NeedsList[numNeeds] = {Name="Fortitude",Type="BUFF",Toggle=1,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="ShadowProt",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 1.0, b = 0.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="PWShield",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 0.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="DivineSpirit",Type="BUFF",Toggle=0,BGColor={r = 0.5, g = 0.5, b = 1.0, opacity = 0.8}};
NeedsList[numNeeds].Filter = NLGetSpecialFilter(true, false);
numNeeds = numNeeds + 1;
if( UnitRace("player") == NL_DWARF_NAME ) then
NeedsList[numNeeds] = {Name="FearWard",Type="BUFF",Toggle=0,BGColor={r = 0.5, g = 1.0, b = 0.5, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
elseif( UnitRace("player") == NL_UNDEAD_NAME ) then
NeedsList[numNeeds] = {Name="TouchOfWeakness",Type="BUFF",Toggle=0,BGColor={r = 0.0, g = 1.0, b = 0.5, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
elseif( UnitRace("player") == NL_HUMAN_NAME ) then
NeedsList[numNeeds] = {Name="Feedback",Type="BUFF",Toggle=0,BGColor={r = 0.8, g = 0.0, b = 1.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
elseif( UnitRace("player") == NL_TROLL_NAME ) then
NeedsList[numNeeds] = {Name="Shadowguard",Type="BUFF",Toggle=0,BGColor={r = 0.8, g = 0.0, b = 1.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
end
NeedsList[numNeeds] = {Name="InnerFire",Type="BUFF",Toggle=1,BGColor={r = 1.0, g = 0.5, b = 0.5, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
end
-- for druids specifically
if( NL_PLAYERCLASS == NL_DRUID_NAME ) then
NeedsList[numNeeds] = {Name="Mark",Type="BUFF",Toggle=1,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="Thorns",Type="BUFF",Toggle=0,BGColor={r = 0.0, g = 1.0, b = 0.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="Clarity",Type="BUFF",Toggle=0,BGColor={r = 0.4, g = 0.4, b = 1.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="Mana",Toggle=0,BGColor={r = 0.5, g = 0.5, b = 1.0, opacity = 0.8},Threshold=25};
NeedsList[numNeeds].Filter = NLGetSpecialFilter(true, false);
NL_CONFIGS[sName].ManaNeedIndex = numNeeds;
numNeeds = numNeeds + 1;
end
-- for paladins specifically
if( NL_PLAYERCLASS == NL_PALADIN_NAME ) then
NeedsList[numNeeds] = {Name="BlessMight",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="BlessWisdom",Type="BUFF",Toggle=0,BGColor={r = 0.5, g = 0.5, b = 1.0, opacity = 0.8}};
NeedsList[numNeeds].Filter = NLGetSpecialFilter(true, false);
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="BlessKings",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="BlessSalvation",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="BlessLight",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="BlessSanctuary",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
end
-- for mages specifically
if( NL_PLAYERCLASS == NL_MAGE_NAME ) then
NeedsList[numNeeds] = {Name="Intellect",Type="BUFF",Toggle=1,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8}};
NeedsList[numNeeds].Filter = NLGetSpecialFilter(true, false);
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="MageArmor",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="FrostArmor",Type="BUFF",Toggle=0,BGColor={r = 0.5, g = 0.5, b = 1.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="IceArmor",Type="BUFF",Toggle=1,BGColor={r = 0.5, g = 0.5, b = 1.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="DampenMagic",Type="BUFF",Toggle=0,BGColor={r = 0.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="AmplifyMagic",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 0.5, b = 0.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="ManaShield",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
end
-- for warlocks specifically
if( NL_PLAYERCLASS == NL_WARLOCK_NAME ) then
NeedsList[numNeeds] = {Name="Soulstone",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="DemonArmor",Type="BUFF",Toggle=1,BGColor={r = 1.0, g = 0.0, b = 0.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="DemonSkin",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 0.0, b = 0.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="UnendingBreath",Type="BUFF",Toggle=0,BGColor={r = 0.5, g = 0.5, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="DetectLesserInvis",Type="BUFF",Toggle=0,BGColor={r = 0.5, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="DetectInvis",Type="BUFF",Toggle=0,BGColor={r = 0.5, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="DetectGreaterInvis",Type="BUFF",Toggle=0,BGColor={r = 0.5, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Everyone"}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="FireShield",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 0.5, b = 0.5, opacity = 0.8}};
NeedsList[numNeeds].Filter = NLGetSpecialFilter(false, true);
NeedsList[numNeeds].Filter.Demon = false;
numNeeds = numNeeds + 1;
end
-- for rogues specifically
if( NL_PLAYERCLASS == NL_ROGUE_NAME ) then
NeedsList[numNeeds] = {Name="DetectTraps",Type="BUFF",Toggle=1,BGColor={r = 1.0, g = 1.0, b = 1.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="MainhandPoison",Type="ENCHANT",Toggle=0,BGColor={r = 0.0, g = 1.0, b = 0.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="OffhandPoison",Type="ENCHANT",Toggle=0,BGColor={r = 0.0, g = 1.0, b = 0.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
end
-- for shaman specifically
if( NL_PLAYERCLASS == NL_SHAMAN_NAME ) then
NeedsList[numNeeds] = {Name="LightningShield",Type="BUFF",Toggle=0,BGColor={r = 0.5, g = 0.5, b = 1.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="Rockbiter",Type="ENCHANT",Toggle=0,BGColor={r = 0.5, g = 0.5, b = 0.5, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="Flametongue",Type="ENCHANT",Toggle=0,BGColor={r = 1.0, g = 0.5, b = 0.5, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="Frostbrand",Type="ENCHANT",Toggle=0,BGColor={r = 0.5, g = 0.5, b = 1.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NeedsList[numNeeds] = {Name="Windfury",Type="ENCHANT",Toggle=0,BGColor={r = 0.75, g = 0.75, b = 0.75, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
end
if( NL_PLAYERCLASS == NL_PRIEST_NAME or NL_PLAYERCLASS == NL_DRUID_NAME or NL_PLAYERCLASS == NL_PALADIN_NAME or NL_PLAYERCLASS == NL_SHAMAN_NAME ) then
NeedsList[numNeeds] = {Name="Resurrection",Toggle=1,BGColor={r = 0.5, g = 0.5, b = 0.5, opacity = 0.8},Filter={Type="Everyone"}};
NL_CONFIGS[sName].ResurrectionNeedIndex = numNeeds;
numNeeds = numNeeds + 1;
end
if( NL_PLAYERCLASS == NL_WARRIOR_NAME ) then
NeedsList[numNeeds] = {Name="BattleShout",Type="BUFF",Toggle=0,BGColor={r = 1.0, g = 0.5, b = 0.5, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
end
NeedsList[numNeeds] = {Name="WellFed",Toggle=0,BGColor={r = 1.0, g = 1.0, b = 0.0, opacity = 0.8},Filter={Type="Units",Names=UnitName("player")}};
numNeeds = numNeeds + 1;
NL_CONFIGS[sName].NumNeeds = numNeeds;
end
if( not NL_CONFIGS[sName].ShowHealth ) then NL_CONFIGS[sName].ShowHealth = 1; end
if( not NL_CONFIGS[sName].ShowMana ) then NL_CONFIGS[sName].ShowMana = 0; end
if( not NL_CONFIGS[sName].FrameWidth ) then NL_CONFIGS[sName].FrameWidth = 80; end
if( not NL_CONFIGS[sName].MaxUnits ) then NL_CONFIGS[sName].MaxUnits = 10; end
if( not NL_CONFIGS[sName].UseWhenSolo ) then NL_CONFIGS[sName].UseWhenSolo = 1; end
if( not NL_CONFIGS[sName].UseInParty ) then NL_CONFIGS[sName].UseInParty = 1; end
if( not NL_CONFIGS[sName].UseInRaid ) then NL_CONFIGS[sName].UseInRaid = 1; end
if( not NL_CONFIGS[sName].AutoSort ) then NL_CONFIGS[sName].AutoSort = 1; end
if( not NL_CONFIGS[sName].ShowTooltips ) then NL_CONFIGS[sName].ShowTooltips = 1; end
if( not NL_CONFIGS[sName].LargeNeedIcons ) then NL_CONFIGS[sName].LargeNeedIcons = 1; end
if( not NL_CONFIGS[sName].UseCastParty ) then NL_CONFIGS[sName].UseCastParty = 1; end
if( not NL_CONFIGS[sName].ShowHealthNum ) then NL_CONFIGS[sName].ShowHealthNum = 0; end
if( not NL_CONFIGS[sName].ShowNeeds ) then NL_CONFIGS[sName].ShowNeeds = 1; end
if( not NL_CONFIGS[sName].ShowBuffs ) then NL_CONFIGS[sName].ShowBuffs = 0; end
if( not NL_CONFIGS[sName].ShowHealBuffs ) then NL_CONFIGS[sName].ShowHealBuffs = 0; end
if( not NL_CONFIGS[sName].ShowDebuffs ) then NL_CONFIGS[sName].ShowDebuffs = 0; end
if( not NL_CONFIGS[sName].SwapNeedsAndDetails ) then
NL_CONFIGS[sName].SwapNeedsAndDetails = 0;
elseif( NL_CONFIGS[sName].SwapNeedsAndDetails == 1 ) then
-- change the anchor points on all the needs and details frames
NLAnchorDetails("target", false);
NLAnchorDetails("player", false);
NLAnchorDetails("pet", false);
for i=1, 4 do
NLAnchorDetails("party"..i, false);
NLAnchorDetails("partypet"..i, false);
end
for i=1, 40 do
NLAnchorDetails("raid"..i, false);
NLAnchorDetails("raidpet"..i, false);
end
end
if( not NL_CONFIGS[sName].InvertList ) then NL_CONFIGS[sName].InvertList = 0; end
if( not NL_CONFIGS[sName].ColorByClass ) then NL_CONFIGS[sName].ColorByClass = 0; end
if( not NL_CONFIGS[sName].BlackListDelay ) then NL_CONFIGS[sName].BlackListDelay = 5; end
if( not NL_CONFIGS[sName].ShowTargetFrame ) then NL_CONFIGS[sName].ShowTargetFrame = 0; end
if( not NL_CONFIGS[sName].ResurrectionNeedIndex ) then
for i=1, NL_CONFIGS[sName].NumNeeds - 1 do
if( NL_CONFIGS[sName].Needs[i].Name == "Resurrection" ) then
NL_CONFIGS[sName].ResurrectionNeedIndex = i;
end
end
end
NL_CONFIGS[sName].Version = NL_CURRENT_VERSION;
return NL_CONFIGS[sName];
end
function NLGetSpecialFilter(manaUsersOnly, myPartyOnly)
local newFilter = {};
newFilter.Type="Multi";
newFilter.Names = {};
newFilter.Names[NL_PRIEST_NAME]=true;
newFilter.Names[NL_MAGE_NAME]=true;
newFilter.Names[NL_HUNTER_NAME]=true;
newFilter.Names[NL_WARLOCK_NAME]=true;
newFilter.Names[NL_DRUID_NAME]=true;
newFilter.Names[NL_DEMON_NAME]=true;
if( not manaUsersOnly ) then
newFilter.Names[NL_WARRIOR_NAME] = true;
newFilter.Names[NL_ROGUE_NAME] = true;
newFilter.Names[NL_BEAST_NAME] = true;
end
if( UnitFactionGroup( "player" ) == "Horde" ) then
newFilter.Names[NL_SHAMAN_NAME] = true;
else
newFilter.Names[NL_PALADIN_NAME] = true;
end
if( not myPartyOnly ) then
newFilter.Names["Party 1"] = true;
newFilter.Names["Party 2"] = true;
newFilter.Names["Party 3"] = true;
newFilter.Names["Party 4"] = true;
newFilter.Names["Party 5"] = true;
newFilter.Names["Party 6"] = true;
newFilter.Names["Party 7"] = true;
newFilter.Names["Party 8"] = true;
end
newFilter.Names["My Party"] = true;
return newFilter;
end
function NL_InitializeConfigFrame()
getglobal(NLMainFrameName .. "_CheckButtonUseWhenSolo"):SetChecked(NLConfig.UseWhenSolo);
getglobal(NLMainFrameName .. "_CheckButtonUseInParty"):SetChecked(NLConfig.UseInParty);
getglobal(NLMainFrameName .. "_CheckButtonUseInRaid"):SetChecked(NLConfig.UseInRaid);
getglobal(NLMainFrameName .. "_CheckButtonShowHealth"):SetChecked(NLConfig.ShowHealth);
getglobal(NLMainFrameName .. "_CheckButtonShowMana"):SetChecked(NLConfig.ShowMana);
getglobal(NLMainFrameName .. "_CheckButtonShowNeeds"):SetChecked(NLConfig.ShowNeeds);
getglobal(NLMainFrameName .. "_CheckButtonShowBuffs"):SetChecked(NLConfig.ShowBuffs);
getglobal(NLMainFrameName .. "_CheckButtonShowHealBuffs"):SetChecked(NLConfig.ShowHealBuffs);
getglobal(NLMainFrameName .. "_CheckButtonShowDebuffs"):SetChecked(NLConfig.ShowDebuffs);
getglobal(NLMainFrameName .. "_CheckButtonSwapNeedsAndDetails"):SetChecked(NLConfig.SwapNeedsAndDetails);
getglobal(NLMainFrameName .. "_CheckButtonUseCastParty"):SetChecked(NLConfig.UseCastParty);
getglobal(NLMainFrameName .. "_CheckButtonShowHealthNum"):SetChecked(NLConfig.ShowHealthNum);
getglobal(NLMainFrameName .. "_CheckButtonShowHealthLost"):SetChecked(NLConfig.ShowHealthLost);
getglobal(NLMainFrameName .. "_CheckButtonAutoSort"):SetChecked(NLConfig.AutoSort);
getglobal(NLMainFrameName .. "_CheckButtonInvertList"):SetChecked(NLConfig.InvertList);
getglobal(NLMainFrameName .. "_CheckButtonShowTooltips"):SetChecked(NLConfig.ShowTooltips);
getglobal(NLMainFrameName .. "_CheckButtonLargeNeedIcons"):SetChecked(NLConfig.LargeNeedIcons);
getglobal(NLMainFrameName .. "_CheckButtonSpellNotify"):SetChecked(NLConfig.SpellNotify);
getglobal(NLMainFrameName .. "_CheckButtonHideHeader"):SetChecked(NLConfig.HideHeader);
getglobal(NLMainFrameName .. "_CheckButtonColorByClass"):SetChecked(NLConfig.ColorByClass);
getglobal(NLMainFrameName .. "_SliderFrameWidth"):SetValue(NLConfig.FrameWidth);
getglobal(NLMainFrameName .. "_BlackListDelay"):SetNumber(NLConfig.BlackListDelay);
getglobal(NLMainFrameName .. "_MaxUnits"):SetNumber(NLConfig.MaxUnits);
getglobal(NLMainFrameName .. "_CheckButtonShowTargetFrame"):SetChecked(NLConfig.ShowTargetFrame);
end
function NL_SaveConfig()
if( getglobal(NLMainFrameName .. "_CheckButtonUseWhenSolo"):GetChecked() == nil ) then
NLConfig.UseWhenSolo = 0;
else
NLConfig.UseWhenSolo = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonUseInParty"):GetChecked() == nil ) then
NLConfig.UseInParty = 0;
else
NLConfig.UseInParty = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonUseInRaid"):GetChecked() == nil ) then
NLConfig.UseInRaid = 0;
else
NLConfig.UseInRaid = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonShowHealth"):GetChecked() == nil ) then
NLConfig.ShowHealth = 0;
else
NLConfig.ShowHealth = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonShowMana"):GetChecked() == nil ) then
NLConfig.ShowMana = 0;
else
NLConfig.ShowMana = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonShowNeeds"):GetChecked() == nil ) then
NLConfig.ShowNeeds = 0;
else
NLConfig.ShowNeeds = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonShowBuffs"):GetChecked() == nil ) then
NLConfig.ShowBuffs = 0;
else
NLConfig.ShowBuffs = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonShowHealBuffs"):GetChecked() == nil ) then
NLConfig.ShowHealBuffs = 0;
else
NLConfig.ShowHealBuffs = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonShowDebuffs"):GetChecked() == nil ) then
NLConfig.ShowDebuffs = 0;
else
NLConfig.ShowDebuffs = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonUseCastParty"):GetChecked() == nil ) then
NLConfig.UseCastParty = 0;
else
NLConfig.UseCastParty = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonShowHealthNum"):GetChecked() == nil ) then
NLConfig.ShowHealthNum = 0;
else
NLConfig.ShowHealthNum = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonShowHealthLost"):GetChecked() == nil ) then
NLConfig.ShowHealthLost = 0;
else
NLConfig.ShowHealthLost = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonAutoSort"):GetChecked() == nil ) then
NLConfig.AutoSort = 0;
else
NLConfig.AutoSort = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonSpellNotify"):GetChecked() == nil ) then
NLConfig.SpellNotify = 0;
else
NLConfig.SpellNotify = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonHideHeader"):GetChecked() == nil ) then
NLConfig.HideHeader = 0;
else
NLConfig.HideHeader = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonShowTooltips"):GetChecked() == nil ) then
NLConfig.ShowTooltips = 0;
else
NLConfig.ShowTooltips = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonLargeNeedIcons"):GetChecked() == nil ) then
NLConfig.LargeNeedIcons = 0;
else
NLConfig.LargeNeedIcons = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonSwapNeedsAndDetails"):GetChecked() == nil ) then
-- change the anchor points on all the needs and details frames
NLAnchorDetails("target", true);
NLAnchorDetails("player", true);
NLAnchorDetails("pet", true);
for i=1, 4 do
NLAnchorDetails("party"..i, true);
NLAnchorDetails("partypet"..i, true);
end
for i=1, 40 do
NLAnchorDetails("raid"..i, true);
NLAnchorDetails("raidpet"..i, true);
end
NLConfig.SwapNeedsAndDetails = 0;
else
-- change the anchor points on all the needs and details frames
NLAnchorDetails("target", false);
NLAnchorDetails("player", false);
NLAnchorDetails("pet", false);
for i=1, 4 do
NLAnchorDetails("party"..i, false);
NLAnchorDetails("partypet"..i, false);
end
for i=1, 40 do
NLAnchorDetails("raid"..i, false);
NLAnchorDetails("raidpet"..i, false);
end
NLConfig.SwapNeedsAndDetails = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonInvertList"):GetChecked() == nil ) then
NLConfig.InvertList = 0;
else
NLConfig.InvertList = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonColorByClass"):GetChecked() == nil ) then
NLConfig.ColorByClass = 0;
else
NLConfig.ColorByClass = 1;
end
if( getglobal(NLMainFrameName .. "_CheckButtonShowTargetFrame"):GetChecked() == nil ) then
NLConfig.ShowTargetFrame = 0;
else
NLConfig.ShowTargetFrame = 1;
end
NLConfig.FrameWidth = getglobal(NLMainFrameName .. "_SliderFrameWidth"):GetValue();
NLConfig.BlackListDelay = getglobal(NLMainFrameName .. "_BlackListDelay"):GetNumber();
NLConfig.MaxUnits = getglobal(NLMainFrameName .. "_MaxUnits"):GetNumber();
NL_CheckIfEnabled();
if( NL_ENABLED ) then
NLHeader:Hide();
NLHeader:Show();
end
end
function NLAnchorDetails( member, side )
if( side ) then
getglobal("NLMember" .. member .. "BuffsDetails"):ClearAllPoints();
getglobal("NLMember" .. member .. "BuffsDetails"):SetPoint("BOTTOMRIGHT", "NLMember" .. member, "BOTTOMLEFT", 5, 0);
getglobal("NLMember" .. member .. "DebuffsDetails"):ClearAllPoints();
getglobal("NLMember" .. member .. "DebuffsDetails"):SetPoint("BOTTOMRIGHT", "NLMember" .. member .. "BuffsDetails", "BOTTOMLEFT", 5, 0);
getglobal("NLMember" .. member .. "NeedsDetails"):ClearAllPoints();
getglobal("NLMember" .. member .. "NeedsDetails"):SetPoint("BOTTOMLEFT", "NLMember" .. member, "BOTTOMRIGHT", -5, 0);
else
getglobal("NLMember" .. member .. "BuffsDetails"):ClearAllPoints();
getglobal("NLMember" .. member .. "BuffsDetails"):SetPoint("BOTTOMLEFT", "NLMember" .. member, "BOTTOMRIGHT", -5, 0);
getglobal("NLMember" .. member .. "DebuffsDetails"):ClearAllPoints();
getglobal("NLMember" .. member .. "DebuffsDetails"):SetPoint("BOTTOMLEFT", "NLMember" .. member .. "BuffsDetails", "BOTTOMRIGHT", -5, 0);
getglobal("NLMember" .. member .. "NeedsDetails"):ClearAllPoints();
getglobal("NLMember" .. member .. "NeedsDetails"):SetPoint("BOTTOMRIGHT", "NLMember" .. member, "BOTTOMLEFT", 5, 0);
end
end
function NL_InitializeConfigSpellsFrame()
if( not NLConfig.HealSpells ) then
return;
end
if( NLConfig.HealSpells[1] ) then
getglobal("NLConfigSpellsFrameHeal1"):SetText(NLConfig.HealSpells[1]);
else
getglobal("NLConfigSpellsFrameHeal1"):SetText("");
end
if( NLConfig.HealSpells[2] ) then
getglobal("NLConfigSpellsFrameHeal2"):SetText(NLConfig.HealSpells[2]);
else
getglobal("NLConfigSpellsFrameHeal2"):SetText("");
end
if( NLConfig.HealSpells[3] ) then
getglobal("NLConfigSpellsFrameHeal3"):SetText(NLConfig.HealSpells[3]);
else
getglobal("NLConfigSpellsFrameHeal3"):SetText("");
end
if( NLConfig.HealSpells[4] ) then
getglobal("NLConfigSpellsFrameHeal4"):SetText(NLConfig.HealSpells[4]);
else
getglobal("NLConfigSpellsFrameHeal4"):SetText("");
end
if( NLConfig.HealSpells[5] ) then
getglobal("NLConfigSpellsFrameHeal5"):SetText(NLConfig.HealSpells[5]);
else
getglobal("NLConfigSpellsFrameHeal5"):SetText("");
end
end
function NL_SaveSpellsConfig()
if( not NLConfig.HealSpells ) then
NLConfig.HealSpells = {};
end
if( getglobal("NLConfigSpellsFrameHeal1"):GetText() == "" ) then
NLConfig.HealSpells[1] = nil;
else
NLConfig.HealSpells[1] = getglobal("NLConfigSpellsFrameHeal1"):GetText();
end
if( getglobal("NLConfigSpellsFrameHeal2"):GetText() == "" ) then
NLConfig.HealSpells[2] = nil;
else
NLConfig.HealSpells[2] = getglobal("NLConfigSpellsFrameHeal2"):GetText();
end
if( getglobal("NLConfigSpellsFrameHeal3"):GetText() == "" ) then
NLConfig.HealSpells[3] = nil;
else
NLConfig.HealSpells[3] = getglobal("NLConfigSpellsFrameHeal3"):GetText();
end
if( getglobal("NLConfigSpellsFrameHeal4"):GetText() == "" ) then
NLConfig.HealSpells[4] = nil;
else
NLConfig.HealSpells[4] = getglobal("NLConfigSpellsFrameHeal4"):GetText();
end
if( getglobal("NLConfigSpellsFrameHeal5"):GetText() == "" ) then
NLConfig.HealSpells[5] = nil;
else
NLConfig.HealSpells[5] = getglobal("NLConfigSpellsFrameHeal5"):GetText();
end
end
function NL_InitializeConfigNeedsFrame()
-- loop through all allowed need monitors for this char
for i = 0, NLConfig.NumNeeds - 1 do
local CurrentNeed = NLConfig.Needs[i];
if( CurrentNeed == nil ) then
return;
end
if( CurrentNeed.Name == "Health" ) then
NLConfigNeedsFrameNeedHealth_EditBox:SetNumber( CurrentNeed.Threshold );
end
if( CurrentNeed.Name == "Mana" ) then
NLConfigNeedsFrameNeedMana_EditBox:SetNumber( CurrentNeed.Threshold );
end
local frame = getglobal(NLNeedFrameName .. "Need" .. CurrentNeed.Name);
frame:ClearAllPoints();
frame:SetPoint("TOPLEFT", NLNeedFrameName, "TOPLEFT", NL_NEED_FRAME_LEFT_INDENT, -NL_NEED_FRAME_TOP_INDENT - i * NL_NEED_FRAME_SPACING );
getglobal(NLNeedFrameName .. "Need" .. CurrentNeed.Name .. "_CheckButton"):SetChecked(CurrentNeed.Toggle);
frame.r = CurrentNeed.BGColor.r;
frame.g = CurrentNeed.BGColor.g;
frame.b = CurrentNeed.BGColor.b;
getglobal(NLNeedFrameName .. "Need" .. CurrentNeed.Name .. "_ColorSwatchNormalTexture"):SetVertexColor( frame.r, frame.g, frame.b );
frame.swatchFunc = function() NLConfig_SetColor(CurrentNeed.Name); end;
frame.cancelFunc = function() NLConfig_CancelColor(CurrentNeed.Name); end;
getglobal(NLNeedFrameName .. "Need" .. CurrentNeed.Name):Show();
getglobal(NLNeedFrameName .. "Need" .. CurrentNeed.Name).Priority = i;
if( CurrentNeed.Filter ~= nil ) then
getglobal(NLNeedFrameName .. "Need" .. CurrentNeed.Name).Filter = CurrentNeed.Filter;
end
end
end
function NL_SaveNeedsConfig()
-- if the frame's priority doesn't match the need priority, update the need priority
for i = 0, NLConfig.NumNeeds - 1 do
local frame = getglobal( NLNeedFrameName .. "Need" .. NLConfig.Needs[i].Name );
-- move the frame that was
if( frame.Priority ~= i ) then
local tempNeed = NLConfig.Needs[frame.Priority];
NLConfig.Needs[frame.Priority] = NLConfig.Needs[i];
NLConfig.Needs[i] = tempNeed;
i = i - 1;
end
end
for i = 0, NLConfig.NumNeeds - 1 do
local CurrentNeed = NLConfig.Needs[i];
if( CurrentNeed == nil ) then
return;
end
if( CurrentNeed.Name == "Health" ) then
CurrentNeed.Threshold = getglobal(NLNeedFrameName .. "NeedHealth_EditBox"):GetNumber();
NLConfig.HealthNeedIndex = i;
end
if( CurrentNeed.Name == "Mana" ) then
CurrentNeed.Threshold = getglobal(NLNeedFrameName .. "NeedMana_EditBox"):GetNumber();
NLConfig.ManaNeedIndex = i;
end
if( CurrentNeed.Name == "Resurrection" ) then
NLConfig.ResurrectionNeedIndex = i;
end
if( getglobal(NLNeedFrameName .. "Need" .. CurrentNeed.Name .. "_CheckButton"):GetChecked() == nil ) then
CurrentNeed.Toggle = 0;
else
CurrentNeed.Toggle = 1;
end
local frame = getglobal( NLNeedFrameName .. "Need" .. CurrentNeed.Name );
CurrentNeed.BGColor.r = frame.r;
CurrentNeed.BGColor.g = frame.g;
CurrentNeed.BGColor.b = frame.b;
if( getglobal( NLNeedFrameName .. "Need" .. CurrentNeed.Name ).Filter ~= nil ) then
CurrentNeed.Filter = getglobal(NLNeedFrameName .. "Need" .. CurrentNeed.Name).Filter;
end
end
end
function NL_OpenColorPicker(button)
CloseMenus();
if ( not button ) then
button = this;
end
ColorPickerFrame.func = button.swatchFunc;
ColorPickerFrame:SetColorRGB(button.r, button.g, button.b);
ColorPickerFrame.previousValues = {r = button.r, g = button.g, b = button.b, opacity = button.opacity};
ColorPickerFrame.cancelFunc = button.cancelFunc;
ColorPickerFrame:Show();
end
function NLConfig_SetColor(needName)
local frame = getglobal( NLNeedFrameName .. "Need" .. needName );
local r,g,b = ColorPickerFrame:GetColorRGB();
getglobal( NLNeedFrameName .. "Need" .. needName .. "_ColorSwatchNormalTexture"):SetVertexColor(r,g,b);
frame.r = r;
frame.g = g;
frame.b = b;
end
function NLConfig_CancelColor(needName)
local frame = getglobal( NLNeedFrameName .. "Need" .. needName );
local CurrentNeed = NLConfig.Needs[frame.Priority];
frame.r = CurrentNeed.BGColor.r;
frame.g = CurrentNeed.BGColor.g;
frame.b = CurrentNeed.BGColor.b;
getglobal( NLNeedFrameName .. "Need" .. needName .. "_ColorSwatchNormalTexture"):SetVertexColor( frame.r, frame.g, frame.b );
end
function NL_SwapNeedFrames( frame1, frame2 )
-- swap these frames
local tempPriority = frame1.Priority;
frame1.Priority = frame2.Priority;
frame2.Priority = tempPriority;
frame1:ClearAllPoints();
frame1:SetPoint("TOPLEFT", NLNeedFrameName, "TOPLEFT", NL_NEED_FRAME_LEFT_INDENT, -NL_NEED_FRAME_TOP_INDENT - frame1.Priority * NL_NEED_FRAME_SPACING );
frame2:ClearAllPoints();
frame2:SetPoint("TOPLEFT", NLNeedFrameName, "TOPLEFT", NL_NEED_FRAME_LEFT_INDENT, -NL_NEED_FRAME_TOP_INDENT - frame2.Priority * NL_NEED_FRAME_SPACING );
end
function NL_PopulateUnitFilterFrame( filter )
if( filter == nil or filter.Type ~= "Units" ) then
return;
end
if( filter.Names ~= nil ) then
NLFilterListFrameUnitsSubframeNames:SetText( filter.Names );
else
NLFilterListFrameUnitsSubframeNames:SetText( "" );
end
end
function NL_PopulatePartyFilterFrame( filter )
if( filter == nil or filter.Type ~= "Multi" ) then
return;
end
if( filter.Names == nil ) then
filter.Names = {};
end
for i=1, 8 do
local frame = getglobal( "NLFilterListFrameMultiSubframeParty" .. i );
if( filter.Names["Party "..i] ) then
frame:SetBackdropColor(0.5, 0.5, 1, 1);
frame.Flagged = true;
else
frame:SetBackdropColor(0, 0, 0.5, 1);
frame.Flagged = false;
end
end
if( filter.Names["My Party"] ) then
NLFilterListFrameMultiSubframeParty9:SetBackdropColor(0.5, 0.5, 1, 1);
NLFilterListFrameMultiSubframeParty9.Flagged = true;
else
NLFilterListFrameMultiSubframeParty9:SetBackdropColor(0, 0, 0.5, 1);
NLFilterListFrameMultiSubframeParty9.Flagged = false;
end
end
function NL_SelectAllPartyFilterFrame()
for i=1, 9 do
local frame = getglobal( "NLFilterListFrameMultiSubframeParty" .. i );
frame:SetBackdropColor(0.5, 0.5, 1, 1);
frame.Flagged = true;
getglobal(NLFilterListFrame.NeedFrame).Filter.Names[ getglobal( frame:GetName() .. "Text" ):GetText() ] = true;
end
end
function NL_SelectNonePartyFilterFrame()
for i=1, 9 do
local frame = getglobal( "NLFilterListFrameMultiSubframeParty" .. i );
frame:SetBackdropColor(0, 0, 0.5, 1);
frame.Flagged = false;
getglobal(NLFilterListFrame.NeedFrame).Filter.Names[ getglobal( frame:GetName() .. "Text" ):GetText() ] = false;
end
end
function NL_PopulateClassFilterFrame( filter )
if( filter == nil or filter.Type ~= "Multi" ) then
return;
end
if( filter.Names == nil ) then
filter.Names = {};
end
for i = 1, 10 do
local frame = getglobal( "NLFilterListFrameMultiSubframeClass" .. i );
local class = NLClassLists[i][UnitFactionGroup("player")];
if( filter.Names[class] ) then
frame:SetBackdropColor(0.5, 0.5, 1, 1);
frame.Flagged = true;
else
frame:SetBackdropColor(0, 0, 0.5, 1);
frame.Flagged = false;
end
frame:Show();
end
end
function NL_SelectAllClassFilterFrame()
for i = 1, 10 do
local frame = getglobal( "NLFilterListFrameMultiSubframeClass" .. i );
frame:SetBackdropColor(0.5, 0.5, 1, 1);
frame.Flagged = true;
getglobal(NLFilterListFrame.NeedFrame).Filter.Names[ getglobal( frame:GetName() .. "Text" ):GetText() ] = true;
end
end
function NL_SelectNoneClassFilterFrame()
for i = 1, 10 do
local frame = getglobal( "NLFilterListFrameMultiSubframeClass" .. i );
frame:SetBackdropColor(0, 0, 0.5, 1);
frame.Flagged = false;
getglobal(NLFilterListFrame.NeedFrame).Filter.Names[ getglobal( frame:GetName() .. "Text" ):GetText() ] = true;
end
end