97 lines
3 KiB
Lua
97 lines
3 KiB
Lua
-- AltSystem Core
|
|
-- Addon initialization, slash command registration, and TRP3 integration.
|
|
|
|
AltSystem = AltSystem or {}
|
|
AltSystem.State = {
|
|
selectedSkillIndex = 1,
|
|
selectedItemIndex = 1, -- 1 = No item
|
|
selectedDefenseIndex = 1, -- 1 = Base armor
|
|
shieldEnabled = false,
|
|
}
|
|
|
|
-- Initialization on ADDON_LOADED
|
|
local frame = CreateFrame("Frame")
|
|
frame:RegisterEvent("ADDON_LOADED")
|
|
frame:RegisterEvent("PLAYER_LOGIN")
|
|
|
|
frame:SetScript("OnEvent", function(self, event, arg1)
|
|
if event == "ADDON_LOADED" and arg1 == "AltSystem" then
|
|
AltSystem:Init()
|
|
elseif event == "PLAYER_LOGIN" then
|
|
AltSystem:RegisterTRP3Button()
|
|
AltSystem:RegisterMinimapButton()
|
|
end
|
|
end)
|
|
|
|
function AltSystem:Init()
|
|
-- Register slash command /altsystem
|
|
SLASH_ALTSYSTEM1 = "/altsystem"
|
|
SlashCmdList["ALTSYSTEM"] = function()
|
|
AltSystem:ToggleWindow()
|
|
end
|
|
|
|
print("|cff00ccffAltSystem|r loaded. Type /altsystem to open.")
|
|
end
|
|
|
|
function AltSystem:ToggleWindow()
|
|
if AltSystem.MainFrame then
|
|
if AltSystem.MainFrame:IsShown() then
|
|
AltSystem.MainFrame:Hide()
|
|
else
|
|
AltSystem.MainFrame:Show()
|
|
end
|
|
end
|
|
end
|
|
|
|
-- TRP3 toolbar button registration
|
|
function AltSystem:RegisterTRP3Button()
|
|
if TRP3_API and TRP3_API.toolbar then
|
|
local toolbarButton = {
|
|
id = "altsystem_toolbar_btn",
|
|
icon = "Interface\\Icons\\INV_Misc_Dice_02",
|
|
tooltip = "AltSystem",
|
|
tooltipSub = "Open the AltSystem rolling window",
|
|
onClick = function()
|
|
AltSystem:ToggleWindow()
|
|
end,
|
|
}
|
|
TRP3_API.toolbar.toolbarAddButton(toolbarButton)
|
|
end
|
|
end
|
|
|
|
-- Minimap button using LibDBIcon (lightweight fallback if not available)
|
|
function AltSystem:RegisterMinimapButton()
|
|
-- Simple minimap button without external libraries
|
|
local minimapButton = CreateFrame("Button", "AltSystemMinimapButton", Minimap)
|
|
minimapButton:SetSize(32, 32)
|
|
minimapButton:SetFrameStrata("MEDIUM")
|
|
minimapButton:SetFrameLevel(8)
|
|
minimapButton:SetPoint("TOPLEFT", Minimap, "TOPLEFT", 2, -2)
|
|
|
|
local icon = minimapButton:CreateTexture(nil, "ARTWORK")
|
|
icon:SetTexture("Interface\\Icons\\INV_Misc_Dice_02")
|
|
icon:SetSize(20, 20)
|
|
icon:SetPoint("CENTER")
|
|
|
|
local border = minimapButton:CreateTexture(nil, "OVERLAY")
|
|
border:SetTexture("Interface\\Minimap\\MiniMap-TrackingBorder")
|
|
border:SetSize(54, 54)
|
|
border:SetPoint("TOPLEFT", -2, 2)
|
|
|
|
minimapButton:SetHighlightTexture("Interface\\Minimap\\UI-Minimap-ZoomButton-Highlight")
|
|
|
|
minimapButton:SetScript("OnClick", function()
|
|
AltSystem:ToggleWindow()
|
|
end)
|
|
|
|
minimapButton:SetScript("OnEnter", function(self)
|
|
GameTooltip:SetOwner(self, "ANCHOR_LEFT")
|
|
GameTooltip:AddLine("AltSystem")
|
|
GameTooltip:AddLine("Click to toggle the rolling window", 1, 1, 1)
|
|
GameTooltip:Show()
|
|
end)
|
|
|
|
minimapButton:SetScript("OnLeave", function()
|
|
GameTooltip:Hide()
|
|
end)
|
|
end
|