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.
117 lines
4.2 KiB
117 lines
4.2 KiB
-- ------------------------------------------------------------------------------ --
|
|
-- TradeSkillMaster --
|
|
-- https://tradeskillmaster.com --
|
|
-- All Rights Reserved - Detailed license information included with addon. --
|
|
-- ------------------------------------------------------------------------------ --
|
|
|
|
local TSM = select(2, ...) ---@type TSM
|
|
local Wow = TSM.Init("Util.Wow") ---@class Util.Wow
|
|
local PLAYER_SEP = " - "
|
|
local CHARACTER = UnitName("player")
|
|
local FACTION = UnitFactionGroup("player")
|
|
local REALM = GetRealmName()
|
|
local FACTIONREALM = FACTION..PLAYER_SEP..REALM
|
|
|
|
|
|
|
|
-- ============================================================================
|
|
-- Module Functions
|
|
-- ============================================================================
|
|
|
|
---Shows a basic Wow message popup.
|
|
---@param text string The text to display
|
|
function Wow.ShowBasicMessage(text)
|
|
if BasicMessageDialog:IsShown() then
|
|
return
|
|
end
|
|
BasicMessageDialog.Text:SetText(text)
|
|
BasicMessageDialog:Show()
|
|
end
|
|
|
|
---Shows a WoW static popup dialog.
|
|
---@param name string The unique (global) name of the dialog to be shown
|
|
function Wow.ShowStaticPopupDialog(name)
|
|
StaticPopupDialogs[name].preferredIndex = 4
|
|
StaticPopup_Show(name)
|
|
for i = 1, 100 do
|
|
if _G["StaticPopup" .. i] and _G["StaticPopup" .. i].which == name then
|
|
_G["StaticPopup" .. i]:SetFrameStrata("TOOLTIP")
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
---Sets the WoW item ref frame to the specified link.
|
|
---@param link string The itemLink to show the item ref frame for
|
|
function Wow.SafeItemRef(link)
|
|
if type(link) ~= "string" then return end
|
|
-- extract the Blizzard itemString for both items and pets
|
|
local blizzItemString = strmatch(link, "^\124c[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]\124H(item:[^\124]+)\124.+$")
|
|
blizzItemString = blizzItemString or strmatch(link, "^\124c[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]\124H(battlepet:[^\124]+)\124.+$")
|
|
if blizzItemString then
|
|
SetItemRef(blizzItemString, link, "LeftButton")
|
|
end
|
|
end
|
|
|
|
---Checks if an addon is installed.
|
|
---
|
|
---This function only checks if the addon is installed, not if it's enabled.
|
|
---@param name string The name of the addon
|
|
---@return boolean @Whether or not the addon is installed
|
|
function Wow.IsAddonInstalled(name)
|
|
return select(2, GetAddOnInfo(name)) and true or false
|
|
end
|
|
|
|
---Checks if an addon is currently enabled.
|
|
---@param name string The name of the addon
|
|
---@return boolean @Whether or not the addon is enabled
|
|
function Wow.IsAddonEnabled(name)
|
|
return GetAddOnEnableState(CHARACTER, name) == 2 and select(4, GetAddOnInfo(name)) and true or false
|
|
end
|
|
|
|
---Get the name of the current character.
|
|
---@return string
|
|
function Wow.GetCharacterName()
|
|
return CHARACTER
|
|
end
|
|
|
|
---Get the name of the current faction.
|
|
---@return string
|
|
function Wow.GetFactionName()
|
|
return FACTION
|
|
end
|
|
|
|
---Get the name of the current realm.
|
|
---@return string
|
|
function Wow.GetRealmName()
|
|
return REALM
|
|
end
|
|
|
|
---Get the name of the current factionrealm.
|
|
---@return string
|
|
function Wow.GetFactionrealmName()
|
|
return FACTIONREALM
|
|
end
|
|
|
|
---Check if the specified character (and optionally factionrealm) is the current character.
|
|
---@param character string The name of the character to check
|
|
---@param factionrealm? string The name of the factionrealm which the character belongs to
|
|
---@return boolean
|
|
function Wow.IsPlayer(character, factionrealm)
|
|
return character == CHARACTER and (factionrealm == nil or factionrealm == FACTIONREALM)
|
|
end
|
|
|
|
---Formats a character name for display.
|
|
---@param character string The name of the character
|
|
---@param factionrealm string The factionrealm for the character
|
|
---@param full? boolean Use the full factionrealm even if it's the current factionrealm
|
|
function Wow.FormatCharacterName(character, factionrealm, full)
|
|
if full then
|
|
return strjoin(PLAYER_SEP, character, factionrealm)
|
|
elseif factionrealm == FACTIONREALM then
|
|
return character
|
|
else
|
|
local faction, realm = strmatch(factionrealm, "^([^ ]+) %- (.+)$")
|
|
return strjoin(PLAYER_SEP, character, realm == REALM and faction or factionrealm)
|
|
end
|
|
end
|
|
|