Files
MiniMage_TWOW/MiniMage_TWOW.lua
T
2025-11-23 00:01:38 -08:00

420 lines
12 KiB
Lua

--
-- Global variable for storage of settings/options
--
MiniMageOptions = { };
--
-- Initialization functions
--
function class_OnLoad()
MM_class = UnitClass("player");
if (MM_class ~= "Mage") then
this:Hide();
end
end
function MM_Initialize()
MM_fac = UnitFactionGroup('player');
M_class = UnitClass("player");
if (M_class == "Mage") then
if (DEFAULT_CHAT_FRAME) then
DEFAULT_CHAT_FRAME:AddMessage(MINIMAGE_ANNOUNCE_GREETING..M_class..MINIMAGE_ANNOUNCE_ENABLED);
end
else
if (DEFAULT_CHAT_FRAME) then
DEFAULT_CHAT_FRAME:AddMessage(MINIMAGE_ANNOUNCE_GREETING..M_class..MINIMAGE_ANNOUNCE_DISABLED);
end
end
end
function MM_Button_Initialize()
if(event == "VARIABLES_LOADED") then
if (MiniMageOptions.MMButtonPosition == nil) then
MiniMageOptions.MMButtonPosition = 0;
end
if (MiniMageOptions.HidePortals == nil) then
MiniMageOptions.HidePortals = false;
end
end
end
function MM_DropDown_Initialize()
local dropdown;
if ( UIDROPDOWNMENU_OPEN_MENU ) then
dropdown = getglobal(UIDROPDOWNMENU_OPEN_MENU);
else
dropdown = this;
end
MM_DropDown_InitButtons();
end
function MM_DropDown_OnLoad()
UIDropDownMenu_Initialize(this, MM_DropDown_Initialize, "MENU");
end
--
-- Minimap button drag/drop functions
--
-- Thanks to Atlas for the button dragging code
function MM_Button_BeingDragged()
local xpos,ypos = GetCursorPosition();
local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom();
xpos = xmin-xpos/UIParent:GetScale()+70;
ypos = ypos/UIParent:GetScale()-ymin-70;
MM_Button_SetPosition(math.deg(math.atan2(ypos,xpos)));
end
function MM_Button_OnClick()
MM_ToggleDropDown();
end
function MM_Button_OnEnter()
GameTooltip:SetOwner(this, "ANCHOR_LEFT");
GameTooltip:SetText(MINIMAGE_BUTTON_TOOLTIP0);
GameTooltip:AddLine(MINIMAGE_BUTTON_TOOLTIP1);
GameTooltip:AddLine(MINIMAGE_BUTTON_TOOLTIP2);
GameTooltip:Show();
end
function MM_Button_SetPosition(v)
if(v < 0) then
v = v + 360;
end
MiniMageOptions.MMButtonPosition = v;
MM_Button_UpdatePosition();
end
function MM_Button_UpdatePosition()
MM_ButtonFrame:SetPoint(
"TOPLEFT",
"Minimap",
"TOPLEFT",
54 - (78 * cos(MiniMageOptions.MMButtonPosition)),
(78 * sin(MiniMageOptions.MMButtonPosition)) - 55
);
end
--
-- ADDED: REQUIRED LEVEL CHECKS
--
function MM_CanCastTeleport()
return UnitLevel("player") >= 20;
end
function MM_CanCastPortal()
return UnitLevel("player") >= 40;
end
--
-- Drop down menu functions
--
function MM_ToggleDropDown()
MM_DropDownFrame.point = "TOPRIGHT";
MM_DropDownFrame.relativePoint = "BOTTOMLEFT";
ToggleDropDownMenu(1, nil, MM_DropDownFrame);
end
function MM_DropDown_InitButtons()
local info = {};
info.text = MINIMAGE_LABEL_TITLE;
info.isTitle = 1;
info.justifyH = "CENTER";
info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
local fact = UnitFactionGroup('player');
if (fact == "Horde") then
MM_DropDown_ForTheHorde();
else
MM_DropDown_ForTheAlliance();
end
end
function MM_DropDown_ForTheHorde()
local appender = ': ';
-- PORTAL SECTION (hidden if HidePortals is true)
if not MiniMageOptions.HidePortals then
local info = { };
info.text = MINIMAGE_LABEL_PORTAL;
info.isTitle = 1;
info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
-- ORG PORTAL
info = { };
info.text = MINIMAGE_LABEL_ORG;
info.disabled = not MM_CanCastPortal();
info.func = function(msg)
if MM_CanCastPortal() then
CastSpellByName(MINIMAGE_LABEL_PORTAL..appender..MINIMAGE_LABEL_ORG);
end
end;
UIDropDownMenu_AddButton(info);
-- STONARD PORTAL
info = { };
info.text = MINIMAGE_LABEL_STONARD;
info.disabled = not MM_CanCastPortal();
info.func = function(msg)
if MM_CanCastPortal() then
CastSpellByName(MINIMAGE_LABEL_PORTAL..appender..MINIMAGE_LABEL_STONARD);
end
end;
UIDropDownMenu_AddButton(info);
-- TB PORTAL
info = { };
info.text = MINIMAGE_LABEL_TB;
info.disabled = not MM_CanCastPortal();
info.func = function(msg)
if MM_CanCastPortal() then
CastSpellByName(MINIMAGE_LABEL_PORTAL..appender..MINIMAGE_LABEL_TB);
end
end;
UIDropDownMenu_AddButton(info);
-- UC PORTAL
info = { };
info.text = MINIMAGE_LABEL_UC;
info.disabled = not MM_CanCastPortal();
info.func = function(msg)
if MM_CanCastPortal() then
CastSpellByName(MINIMAGE_LABEL_PORTAL..appender..MINIMAGE_LABEL_UC);
end
end;
UIDropDownMenu_AddButton(info);
end
-- TELEPORT SECTION
local info = { };
info.text = MINIMAGE_LABEL_TELEPORT;
info.isTitle = 1;
info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
-- ORG TELEPORT
info = { };
info.text = MINIMAGE_LABEL_ORG;
info.disabled = not MM_CanCastTeleport();
info.func = function(msg)
if MM_CanCastTeleport() then
CastSpellByName(MINIMAGE_LABEL_TELEPORT..appender..MINIMAGE_LABEL_ORG);
end
end;
UIDropDownMenu_AddButton(info);
-- STONARD TELEPORT
info = { };
info.text = MINIMAGE_LABEL_STONARD;
info.disabled = not MM_CanCastTeleport();
info.func = function(msg)
if MM_CanCastTeleport() then
CastSpellByName(MINIMAGE_LABEL_TELEPORT..appender..MINIMAGE_LABEL_STONARD);
end
end;
UIDropDownMenu_AddButton(info);
-- TB TELEPORT
info = { };
info.text = MINIMAGE_LABEL_TB;
info.disabled = not MM_CanCastTeleport();
info.func = function(msg)
if MM_CanCastTeleport() then
CastSpellByName(MINIMAGE_LABEL_TELEPORT..appender..MINIMAGE_LABEL_TB);
end
end;
UIDropDownMenu_AddButton(info);
-- UC TELEPORT
info = { };
info.text = MINIMAGE_LABEL_UC;
info.disabled = not MM_CanCastTeleport();
info.func = function(msg)
if MM_CanCastTeleport() then
CastSpellByName(MINIMAGE_LABEL_TELEPORT..appender..MINIMAGE_LABEL_UC);
end
end;
UIDropDownMenu_AddButton(info);
end
function MM_DropDown_ForTheAlliance()
local appender = ': ';
-- PORTAL SECTION (hidden if HidePortals is true)
if not MiniMageOptions.HidePortals then
local info = { };
info.text = MINIMAGE_LABEL_PORTAL;
info.isTitle = 1;
info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
-- ALAH PORTAL
info = { };
info.text = MINIMAGE_LABEL_ALAH;
info.disabled = not MM_CanCastPortal();
info.func = function(msg)
if MM_CanCastPortal() then
CastSpellByName(MINIMAGE_LABEL_PORTAL..appender..MINIMAGE_LABEL_ALAH);
end
end;
UIDropDownMenu_AddButton(info);
-- DARNASSUS PORTAL
info = { };
info.text = MINIMAGE_LABEL_DARNASSUS;
info.disabled = not MM_CanCastPortal();
info.func = function(msg)
if MM_CanCastPortal() then
CastSpellByName(MINIMAGE_LABEL_PORTAL..appender..MINIMAGE_LABEL_DARNASSUS);
end
end;
UIDropDownMenu_AddButton(info);
-- IF PORTAL
info = { };
info.text = MINIMAGE_LABEL_IF;
info.disabled = not MM_CanCastPortal();
info.func = function(msg)
if MM_CanCastPortal() then
CastSpellByName(MINIMAGE_LABEL_PORTAL..appender..MINIMAGE_LABEL_IF);
end
end;
UIDropDownMenu_AddButton(info);
-- SW PORTAL
info = { };
info.text = MINIMAGE_LABEL_SW;
info.disabled = not MM_CanCastPortal();
info.func = function(msg)
if MM_CanCastPortal() then
CastSpellByName(MINIMAGE_LABEL_PORTAL..appender..MINIMAGE_LABEL_SW);
end
end;
UIDropDownMenu_AddButton(info);
-- THERAMORE PORTAL
info = { };
info.text = MINIMAGE_LABEL_THERAMORE;
info.disabled = not MM_CanCastPortal();
info.func = function(msg)
if MM_CanCastPortal() then
CastSpellByName(MINIMAGE_LABEL_PORTAL..appender..MINIMAGE_LABEL_THERAMORE);
end
end;
UIDropDownMenu_AddButton(info);
end
-- TELEPORT SECTION
local info = { };
info.text = MINIMAGE_LABEL_TELEPORT;
info.isTitle = 1;
info.notCheckable = 1;
UIDropDownMenu_AddButton(info);
-- ALAH TELEPORT
info = { };
info.text = MINIMAGE_LABEL_ALAH;
info.disabled = not MM_CanCastTeleport();
info.func = function(msg)
if MM_CanCastTeleport() then
CastSpellByName(MINIMAGE_LABEL_TELEPORT..appender..MINIMAGE_LABEL_ALAH);
end
end;
UIDropDownMenu_AddButton(info);
-- DARN TELEPORT
info = { };
info.text = MINIMAGE_LABEL_DARNASSUS;
info.disabled = not MM_CanCastTeleport();
info.func = function(msg)
if MM_CanCastTeleport() then
CastSpellByName(MINIMAGE_LABEL_TELEPORT..appender..MINIMAGE_LABEL_DARNASSUS);
end
end;
UIDropDownMenu_AddButton(info);
-- IF TELEPORT
info = { };
info.text = MINIMAGE_LABEL_IF;
info.disabled = not MM_CanCastTeleport();
info.func = function(msg)
if MM_CanCastTeleport() then
CastSpellByName(MINIMAGE_LABEL_TELEPORT..appender..MINIMAGE_LABEL_IF);
end
end;
UIDropDownMenu_AddButton(info);
-- SW TELEPORT
info = { };
info.text = MINIMAGE_LABEL_SW;
info.disabled = not MM_CanCastTeleport();
info.func = function(msg)
if MM_CanCastTeleport() then
CastSpellByName(MINIMAGE_LABEL_TELEPORT..appender..MINIMAGE_LABEL_SW);
end
end;
UIDropDownMenu_AddButton(info);
-- THERAMORE TELEPORT
info = { };
info.text = MINIMAGE_LABEL_THERAMORE;
info.disabled = not MM_CanCastTeleport();
info.func = function(msg)
if MM_CanCastTeleport() then
CastSpellByName(MINIMAGE_LABEL_TELEPORT..appender..MINIMAGE_LABEL_THERAMORE);
end
end;
UIDropDownMenu_AddButton(info);
end
--
-- Slash Commands
--
SLASH_MINIMAGE1 = "/mmage"
SlashCmdList["MINIMAGE"] = function(msg)
msg = string.lower(msg or "")
if msg == "reset" then
MiniMageOptions = {}
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00MiniMage: options reset.|r")
elseif msg == "icon" then
if MM_ButtonFrame:IsShown() then
MM_ButtonFrame:Hide()
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00MiniMage: minimap button hidden.|r")
else
MM_ButtonFrame:Show()
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00MiniMage: minimap button shown.|r")
end
elseif msg == "portals" then
MiniMageOptions.HidePortals = not MiniMageOptions.HidePortals
if MiniMageOptions.HidePortals then
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00MiniMage: Portal hidden.|r")
else
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00MiniMage: Portal shown.|r")
end
elseif msg == "help" or msg == "" then
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00MiniMage commands:|r")
DEFAULT_CHAT_FRAME:AddMessage("/mmage help - Show this help")
DEFAULT_CHAT_FRAME:AddMessage("/mmage icon - Show/Hide minimap button")
DEFAULT_CHAT_FRAME:AddMessage("/mmage reset - Reset addon saved options")
DEFAULT_CHAT_FRAME:AddMessage("/mmage portals - Show/Hide portal in dropdown")
else
DEFAULT_CHAT_FRAME:AddMessage("|cffff0000MiniMage: unknown command.|r")
DEFAULT_CHAT_FRAME:AddMessage("Type /mmage help for options.")
end
end