vanilla-wow-addons – Rev 1
?pathlinks?
local utility = Nurfed_Utility:New();
local framelib = Nurfed_Frames:New();
local optionslib = Nurfed_Options:New();
local saved = {};
local micromenu = {
[1] = {text = NRF_MICROHEADER, isTitle = 1 },
[2] = {text = NRF_PAPERDOLL, func = function() ToggleCharacter("PaperDollFrame"); end },
[3] = {text = NRF_SPELLBOOK, func = function() ToggleSpellBook(BOOKTYPE_SPELL) end },
[4] = {text = NRF_TALENTS, func = ToggleTalentFrame },
[5] = {text = NRF_QUESTLOG, func = ToggleQuestLog },
[6] = {text = NRF_FRIENDS, func = ToggleFriendsFrame },
[7] = {text = NRF_HELPMENU, func = ToggleHelpFrame },
[8] = { text = KEYRING, func = ToggleKeyRing },
};
local addons = {
[1] = {text = NRF_ADDONHEADER, isTitle = 1, nurfed = true },
[2] = {text = NRF_OTHERADDONS, isTitle = 1 },
};
local addonlist = {
["Nurfed_ActionBars"] = { text = "Nurfed ActionBars", func = function() optionslib:GetMenu("Nurfed_ActionBars") end },
["Nurfed_General"] = { text = "Nurfed General", func = function() optionslib:GetMenu("Nurfed_General") end },
["Nurfed_Hud"] = { text = "Nurfed Hud", func = function() optionslib:GetMenu("Nurfed_Hud") end },
["Nurfed_UnitFrames"] = { text = "Nurfed UnitFrames", func = function() optionslib:GetMenu("Nurfed_UnitFrames") end },
["Nurfed_CombatLog"] = { text = "Nurfed CombatLog", func = function() optionslib:GetMenu("Nurfed_CombatLog") end },
["Nurfed_Raids"] = { text = "Nurfed Raids", func = function() optionslib:GetMenu("Nurfed_Raids") end },
["AutoBar"] = { text = "Autobar Config", func = function() AutoBar_ToggleConfig() end },
["Sct"] = { text = "SCT Menu", func = function() SCT_showMenu() end },
["AF_Tooltip"] = { text = "AF_Tooltip Menu", func = function() aftt_toggleFrames() end },
["TipBuddy"] = { text = "TipBuddy Menu", func = function() TipBuddy_ToggleOptionsFrame() end },
};
local function AddItem(text, func, nurfed)
local index = utility:GetTableIndex(addons, text);
if (index == nil) then
index = table.getn(addons) + 1;
table.setn(addons, index);
addons[index] = {};
addons[index].text = text;
addons[index].func = func;
if (string.find(text, "^Nurfed")) then
addons[index].nurfed = true;
end
end
end
local function Update_Lock_POS()
Nurfed_LockButton:ClearAllPoints();
Nurfed_LockButton:SetPoint("CENTER", "Minimap", "CENTER", saved.lockx, saved.locky);
end
local function Nurfed_Lock_OnEvent()
Nurfed_LockButton:UnregisterEvent(event);
Nurfed_LockButton:RegisterForClicks("LeftButtonUp", "RightButtonUp");
local player = UnitName("player").." - "..GetCVar("realmName");
if (not NURFED_UTILITY_SAVED) then
NURFED_UTILITY_SAVED = {};
end
if (not NURFED_UTILITY_SAVED[player]) then
NURFED_UTILITY_SAVED[player] = {
["lockx"] = 0;
["locky"] = -75;
};
end
for k, v in addonlist do
if (string.find(k, "^Nurfed")) then
if (IsAddOnLoaded(k)) then
local tbl = string.upper(k).."_SAVED";
if (not getglobal(tbl)) then
setglobal(tbl, {});
end
if (not getglobal(tbl)[player]) then
getglobal(tbl)[player] = utility:TableCopy(getglobal(string.upper(k).."_DEFAULT"));
end
local func = getglobal(k.."_Init");
if (func) then
func();
end
end
end
end
saved = NURFED_UTILITY_SAVED[player];
Update_Lock_POS();
end
local function GenerateMenu()
local frame = getglobal(this:GetName().."DropDown");
if (not frame.updated) then
for k, v in addonlist do
if (IsAddOnLoaded(k)) then
AddItem(v.text, v.func);
end
end
frame.updated = true;
frame.displayMode = "MENU";
end
frame.initialize = function ()
local info = {};
if (UIDROPDOWNMENU_MENU_VALUE == "Micro Buttons") then
for _, v in micromenu do
info = {};
info.text = v.text;
info.func = v.func;
info.isTitle = v.isTitle;
info.notCheckable = 1;
UIDropDownMenu_AddButton(info, 2);
end
elseif (UIDROPDOWNMENU_MENU_VALUE == "Other AddOns") then
for _, v in addons do
if (not v.nurfed) then
info = {};
info.text = v.text;
info.func = v.func;
info.isTitle = v.isTitle;
info.notCheckable = 1;
UIDropDownMenu_AddButton(info, 2);
end
end
else
for _, v in addons do
if (v.nurfed) then
info = {};
info.text = v.text;
info.func = v.func;
info.isTitle = v.isTitle;
info.notCheckable = 1;
info.textR = 0;
info.textG = 1;
info.textB = 0;
UIDropDownMenu_AddButton(info);
end
end
info = {};
info.text = NRF_OTHERADDONS;
info.value = "Other AddOns";
info.hasArrow = 1;
info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
info = {};
info.text = NRF_MICROHEADER;
info.value = "Micro Buttons";
info.hasArrow = 1;
info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
end
end
end
local function Nurfed_LockButton_OnClick(button)
if (IsShiftKeyDown()) then
this:SetChecked(NRF_LOCKED);
return;
end
if (button == "LeftButton") then
NRF_LOCKED = this:GetChecked();
if (NRF_LOCKED) then
this:SetNormalTexture(NRF_IMG.."nurfedlocked");
else
this:SetNormalTexture(NRF_IMG.."nurfedunlocked");
end
PlaySound("igMainMenuOption");
elseif (button == "RightButton") then
this:SetChecked(NRF_LOCKED);
local dropdown = getglobal(this:GetName().."DropDown");
GenerateMenu();
ToggleDropDownMenu(1, nil, dropdown, this:GetName(), 0, 0);
local offscreenX, offscreenY = utility:OffScreen(DropDownList1);
local point;
if (offscreenX == 1) then
point = "TOPRIGHT";
elseif (offscreenY == 1) then
point = "BOTTOMRIGHT";
else
point = "TOPLEFT";
end
DropDownList1:ClearAllPoints();
DropDownList1:SetPoint(point, this, "BOTTOMLEFT", 0, 0);
end
end
local function Nurfed_LockButton_OnUpdate()
if (this.isMoving) then
if (not IsShiftKeyDown()) then
this.isMoving = nil;
return;
end
-- Credit to Alex Brazie for this calculation
cursorX, cursorY = GetCursorPosition();
centerX, centerY = Minimap:GetCenter();
scale = Minimap:GetEffectiveScale();
cursorX = cursorX / scale;
cursorY = cursorY / scale;
local radius = (Minimap:GetWidth()/2) + (this:GetWidth()/3);
local x = math.abs(cursorX - centerX);
local y = math.abs(cursorY - centerY);
local xSign = 1;
local ySign = 1;
if (not (cursorX >= centerX)) then
xSign = -1;
end
if (not (cursorY >= centerY)) then
ySign = -1;
end
local angle = math.atan(x/y);
x = math.sin(angle)*radius;
y = math.cos(angle)*radius;
saved.lockx = xSign*x;
saved.locky = ySign*y;
Update_Lock_POS();
end
end
local function Init()
local tbl = {
type = "CheckButton",
size = { 25, 25 },
FrameStrata = "LOW",
Checked = NRF_LOCKED,
events = {
"PLAYER_LOGIN",
},
NormalTexture = NRF_IMG.."nurfedlocked",
children = {
DropDown = { type = "Frame" },
Border = {
type = "Texture",
size = { 57, 57 },
layer = "OVERLAY",
Texture = "Interface\\Minimap\\MiniMap-TrackingBorder",
Anchor = { "CENTER", "$parent", "CENTER", 11, -11 },
},
},
OnEvent = function() Nurfed_Lock_OnEvent() end,
OnClick = function() Nurfed_LockButton_OnClick(arg1) end,
OnMouseDown = function() if (IsShiftKeyDown()) then this.isMoving = true end end,
OnMouseUp = function() this.isMoving = nil end,
OnUpdate = function() Nurfed_LockButton_OnUpdate() end,
};
framelib:ObjectInit("Nurfed_LockButton", tbl, Minimap);
tbl = nil;
end
Init();
Generated by GNU Enscript 1.6.5.90.