You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
4.6 KiB
128 lines
4.6 KiB
|
3 years ago
|
-- Create and update LDB launcher
|
||
|
|
local ADDON_NAME, Internal = ...
|
||
|
|
local L = Internal.L
|
||
|
|
local Settings = Internal.Settings
|
||
|
|
|
||
|
|
local launcher
|
||
|
|
function Internal.CreateLauncher()
|
||
|
|
local LDB = LibStub and LibStub("LibDataBroker-1.1", true)
|
||
|
|
if LDB then
|
||
|
|
local tempTooltip
|
||
|
|
launcher = LDB:NewDataObject(ADDON_NAME, {
|
||
|
|
type = "data source",
|
||
|
|
label = L["BtWLoadouts"],
|
||
|
|
icon = [[Interface\ICONS\Ability_marksmanship]],
|
||
|
|
OnClick = function(clickedframe, button)
|
||
|
|
if button == "LeftButton" then
|
||
|
|
BtWLoadoutsFrame:SetShown(not BtWLoadoutsFrame:IsShown());
|
||
|
|
elseif button == "RightButton" then
|
||
|
|
if tempTooltip then
|
||
|
|
tempTooltip:Hide()
|
||
|
|
end
|
||
|
|
|
||
|
|
if not BtWLoadoutsMinimapButton.Menu then
|
||
|
|
BtWLoadoutsMinimapButton.Menu = CreateFrame("Frame", BtWLoadoutsMinimapButton:GetName().."Menu", BtWLoadoutsMinimapButton, "UIDropDownMenuTemplate");
|
||
|
|
UIDropDownMenu_Initialize(BtWLoadoutsMinimapButton.Menu, BtWLoadoutsMinimapMenu_Init, "MENU");
|
||
|
|
end
|
||
|
|
|
||
|
|
ToggleDropDownMenu(1, nil, BtWLoadoutsMinimapButton.Menu, clickedframe, 0, -5);
|
||
|
|
end
|
||
|
|
end,
|
||
|
|
OnTooltipShow = function(tooltip)
|
||
|
|
tempTooltip = tooltip
|
||
|
|
|
||
|
|
tooltip:SetText(L["BtWLoadouts"], 1, 1, 1);
|
||
|
|
tooltip:AddLine(L["Click to open BtWLoadouts.\nRight Click to enable and disable settings."], nil, nil, nil, true);
|
||
|
|
if Internal.IsActivatingLoadout() then
|
||
|
|
tooltip:AddLine(" ");
|
||
|
|
tooltip:AddLine(L["Activating Loadout"], 1, 1, 1);
|
||
|
|
tooltip:AddLine(Internal.GetWaitReason())
|
||
|
|
end
|
||
|
|
|
||
|
|
if IsShiftKeyDown() then
|
||
|
|
local bossID = Internal.GetConditionBossID()
|
||
|
|
tooltip:AddLine(" ");
|
||
|
|
if bossID then
|
||
|
|
tooltip:AddLine(format(L["Current Condition Boss: %s (%d)"], EJ_GetEncounterInfo(bossID) or "Unknown", bossID), 1, 1, 1);
|
||
|
|
else
|
||
|
|
tooltip:AddLine(format(L["Current Condition Boss: %s (%d)"], "None", 0), 1, 1, 1);
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
tooltip:Show()
|
||
|
|
end,
|
||
|
|
})
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function Internal.UpdateLauncher(text)
|
||
|
|
if launcher then
|
||
|
|
launcher.text = text
|
||
|
|
end
|
||
|
|
end
|
||
|
|
local function Reanchor(button, frame)
|
||
|
|
frame:ClearAllPoints()
|
||
|
|
frame:SetPoint("CENTER", button, "CENTER", 0, 0)
|
||
|
|
frame:SetParent(button)
|
||
|
|
|
||
|
|
return frame
|
||
|
|
end
|
||
|
|
function Internal.CreateLauncherMinimapIcon()
|
||
|
|
if not launcher then
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
local icon = LibStub and LibStub("LibDBIcon-1.0", true)
|
||
|
|
if icon then
|
||
|
|
BtWLoadoutsSettings.LDBIcon = BtWLoadoutsSettings.LDBIcon or {
|
||
|
|
minimapPos = BtWLoadoutsSettings.minimapAngle,
|
||
|
|
}
|
||
|
|
|
||
|
|
BtWLoadoutsMinimapButton:SetEnabled(false)
|
||
|
|
|
||
|
|
icon:Register(ADDON_NAME, launcher, BtWLoadoutsSettings.LDBIcon)
|
||
|
|
icon:Refresh(ADDON_NAME)
|
||
|
|
|
||
|
|
if ElvUI and ElvUI[1] and ElvUI[1].GetModule then
|
||
|
|
local MB = ElvUI[1]:GetModule("MinimapButtons", true)
|
||
|
|
if MB then
|
||
|
|
MB:SkinMinimapButtons()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
local button = icon:GetMinimapButton(ADDON_NAME)
|
||
|
|
|
||
|
|
button.Progess = Reanchor(button, BtWLoadoutsMinimapButton.Progress)
|
||
|
|
button.CircleMask = Reanchor(button, BtWLoadoutsMinimapButton.CircleMask)
|
||
|
|
do
|
||
|
|
local ProgressAnim = button.Progess:CreateAnimationGroup()
|
||
|
|
|
||
|
|
local Rotation = ProgressAnim:CreateAnimation("Rotation")
|
||
|
|
Rotation:SetSmoothing("NONE")
|
||
|
|
Rotation:SetDuration(1)
|
||
|
|
Rotation:SetDegrees(-360)
|
||
|
|
|
||
|
|
ProgressAnim:SetLooping("REPEAT")
|
||
|
|
ProgressAnim:SetScript("OnPlay", function (self) self:GetParent():Show() end)
|
||
|
|
ProgressAnim:SetScript("OnStop", function (self) self:GetParent():Hide() end)
|
||
|
|
|
||
|
|
BtWLoadoutsMinimapButton.ProgressAnim = ProgressAnim
|
||
|
|
end
|
||
|
|
|
||
|
|
function Internal.ShowMinimap()
|
||
|
|
icon:Show(ADDON_NAME)
|
||
|
|
end
|
||
|
|
function Internal.HideMinimap()
|
||
|
|
icon:Hide(ADDON_NAME)
|
||
|
|
end
|
||
|
|
|
||
|
|
C_Timer.After(0, function ()
|
||
|
|
if not Settings.minimapShown then
|
||
|
|
icon:Hide(ADDON_NAME)
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
else
|
||
|
|
BtWLoadoutsMinimapButton.isSkinned = nil
|
||
|
|
end
|
||
|
|
end
|