Compare commits

..

2 Commits

Author SHA1 Message Date
bink
83dc5a12e2 add unit name in Targets. 2022-08-24 17:24:51 +08:00
bink
1941885763 add module targets. 2022-08-24 16:51:27 +08:00
57 changed files with 1255 additions and 678 deletions

1
.gitignore vendored
View File

@ -6,6 +6,5 @@ BuffLib
Ace-Libs Ace-Libs
Images_Raw Images_Raw
Gladdy_old Gladdy_old
DoNotCommit
untracked untracked
Gladdy_TW Gladdy_TW

View File

@ -13,6 +13,7 @@ local CreateFrame = CreateFrame
local DEFAULT_CHAT_FRAME = DEFAULT_CHAT_FRAME local DEFAULT_CHAT_FRAME = DEFAULT_CHAT_FRAME
local IsAddOnLoaded = IsAddOnLoaded local IsAddOnLoaded = IsAddOnLoaded
local GetBattlefieldStatus = GetBattlefieldStatus local GetBattlefieldStatus = GetBattlefieldStatus
local IsActiveBattlefieldArena = IsActiveBattlefieldArena
local IsInInstance = IsInInstance local IsInInstance = IsInInstance
local GetNumArenaOpponents = GetNumArenaOpponents local GetNumArenaOpponents = GetNumArenaOpponents
local RELEASE_TYPES = { alpha = "Alpha", beta = "Beta", release = "Release"} local RELEASE_TYPES = { alpha = "Alpha", beta = "Beta", release = "Release"}
@ -26,11 +27,11 @@ local LibStub = LibStub
--------------------------- ---------------------------
local MAJOR, MINOR = "Gladdy", 15 local MAJOR, MINOR = "Gladdy", 11
local Gladdy = LibStub:NewLibrary(MAJOR, MINOR) local Gladdy = LibStub:NewLibrary(MAJOR, MINOR)
local L local L
Gladdy.version_major_num = 2 Gladdy.version_major_num = 2
Gladdy.version_minor_num = 0.27 Gladdy.version_minor_num = 0.22
Gladdy.version_num = Gladdy.version_major_num + Gladdy.version_minor_num Gladdy.version_num = Gladdy.version_major_num + Gladdy.version_minor_num
Gladdy.version_releaseType = RELEASE_TYPES.release Gladdy.version_releaseType = RELEASE_TYPES.release
Gladdy.version = PREFIX .. string.format("%.2f", Gladdy.version_num) .. "-" .. Gladdy.version_releaseType Gladdy.version = PREFIX .. string.format("%.2f", Gladdy.version_num) .. "-" .. Gladdy.version_releaseType
@ -432,22 +433,23 @@ end
function Gladdy:UPDATE_BATTLEFIELD_STATUS(_, index) function Gladdy:UPDATE_BATTLEFIELD_STATUS(_, index)
local status, mapName, instanceID, levelRangeMin, levelRangeMax, teamSize, isRankedArena, suspendedQueue, bool, queueType = GetBattlefieldStatus(index) local status, mapName, instanceID, levelRangeMin, levelRangeMax, teamSize, isRankedArena, suspendedQueue, bool, queueType = GetBattlefieldStatus(index)
local instanceType = select(2, IsInInstance()) local instanceType = select(2, IsInInstance())
self:Debug("INFO", "UPDATE_BATTLEFIELD_STATUS", instanceType, status, teamSize) Gladdy:Debug("INFO", "UPDATE_BATTLEFIELD_STATUS", instanceType, status, teamSize)
if ((instanceType == "arena" or GetNumArenaOpponents() > 0) and status == "active" and teamSize > 0) then if ((instanceType == "arena" or GetNumArenaOpponents() > 0) and status == "active" and teamSize > 0) then
self.curBracket = teamSize self.curBracket = teamSize
self:JoinedArena() self:JoinedArena()
elseif status == "active" then
if self.db.hideBlizzard == "always" then
self:BlizzArenaSetAlpha(0)
else
self:BlizzArenaSetAlpha(1)
end
end end
end end
function Gladdy:PLAYER_REGEN_ENABLED() function Gladdy:PLAYER_REGEN_ENABLED()
if self.showFrame then if self.showFrame then
self:InitFrames() self:UpdateFrame()
if self.startTest then
self:Test()
self.startTest = nil
end
self.frame:Show()
self:SendMessage("JOINED_ARENA")
self.showFrame = nil
end end
if self.hideFrame then if self.hideFrame then
self:Reset() self:Reset()
@ -479,8 +481,8 @@ function Gladdy:Reset()
for unit in pairs(self.buttons) do for unit in pairs(self.buttons) do
self:ResetUnit(unit) self:ResetUnit(unit)
end end
if self.db.hideBlizzard == "never" or self.db.hideBlizzard == "arena" then if Gladdy.db.hideBlizzard == "never" or Gladdy.db.hideBlizzard == "arena" then
self:BlizzArenaSetAlpha(1) Gladdy:BlizzArenaSetAlpha(1)
end end
end end
@ -523,16 +525,6 @@ end
--------------------------- ---------------------------
function Gladdy:JoinedArena() function Gladdy:JoinedArena()
if InCombatLockdown() then
self:Print("Gladdy frames show as soon as you leave combat")
self.showFrame = true
else
self:InitFrames()
end
end
function Gladdy:InitFrames()
self.showFrame = nil
if not self.curBracket then if not self.curBracket then
self.curBracket = 2 self.curBracket = 2
end end
@ -543,21 +535,19 @@ function Gladdy:InitFrames()
end end
end end
if InCombatLockdown() then
Gladdy:Print("Gladdy frames show as soon as you leave combat")
self.showFrame = true
else
self:UpdateFrame() self:UpdateFrame()
if self.startTest then
self:Test()
self.startTest = nil
end
self.frame:Show() self.frame:Show()
self:SendMessage("JOINED_ARENA") self:SendMessage("JOINED_ARENA")
end
for i=1, self.curBracket do for i=1, self.curBracket do
self.buttons["arena" .. i]:SetAlpha(1) self.buttons["arena" .. i]:SetAlpha(1)
end end
if self.db.hideBlizzard == "arena" or self.db.hideBlizzard == "always" then if Gladdy.db.hideBlizzard == "arena" or Gladdy.db.hideBlizzard == "always" then
self:BlizzArenaSetAlpha(0) Gladdy:BlizzArenaSetAlpha(0)
else
self:BlizzArenaSetAlpha(1)
end end
end end

View File

@ -1,7 +1,7 @@
## Title: Gladdy |cFFFF0000 game client not supported|r ## Title: Gladdy |cFFFF0000 game client not supported|r
## Version: 2.27-Release ## Version: 2.23-Release
## Notes: The most powerful arena AddOn for WoW Classic TBC/WotLK ## Notes: The most powerful arena AddOn for WoW Classic TBC/WotLK
## Author: XiconQoo, DnB_Junkee, Knall ## Author: XiconQoo, DnB_Junkee, Knall, Binkcn
## X-Email: contact me on discord Knall#1751 ## X-Email: contact me on discord Knall#1751
## X-Curse-Project-ID: 482332 ## X-Curse-Project-ID: 482332
## X-WoWI-ID: 26350 ## X-WoWI-ID: 26350

View File

@ -1,6 +1,6 @@
## Interface: 20504 ## Interface: 20504
## Title: Gladdy - TBC ## Title: Gladdy - TBC
## Version: 2.27-Release ## Version: 2.22-Release
## Notes: The most powerful arena AddOn for WoW 2.5.4 ## Notes: The most powerful arena AddOn for WoW 2.5.4
## Author: XiconQoo, DnB_Junkee, Knall ## Author: XiconQoo, DnB_Junkee, Knall
## X-Email: contact me on discord Knall#1751 ## X-Email: contact me on discord Knall#1751
@ -39,6 +39,7 @@ Modules\BuffsDebuffs.lua
Modules\VersionCheck.lua Modules\VersionCheck.lua
Modules\XiconProfiles.lua Modules\XiconProfiles.lua
Modules\Pets.lua Modules\Pets.lua
Modules\Targets.lua
Modules\ExportImport.lua Modules\ExportImport.lua
Modules\CombatIndicator.lua Modules\CombatIndicator.lua
Modules\RangeCheck.lua Modules\RangeCheck.lua

View File

@ -1,7 +1,7 @@
## Interface: 30402 ## Interface: 30400
## Title: Gladdy - WotLK ## Title: Gladdy - WotLK
## Version: 2.27-Release ## Version: 2.22-Release
## Notes: The most powerful arena AddOn for WoW 3.4.2 ## Notes: The most powerful arena AddOn for WoW 3.4.0
## Author: XiconQoo, DnB_Junkee, Knall ## Author: XiconQoo, DnB_Junkee, Knall
## X-Email: contact me on discord Knall#1751 ## X-Email: contact me on discord Knall#1751
## X-Curse-Project-ID: 482332 ## X-Curse-Project-ID: 482332
@ -39,6 +39,7 @@ Modules\BuffsDebuffs.lua
Modules\VersionCheck.lua Modules\VersionCheck.lua
Modules\XiconProfiles.lua Modules\XiconProfiles.lua
Modules\Pets.lua Modules\Pets.lua
Modules\Targets.lua
Modules\ExportImport.lua Modules\ExportImport.lua
Modules\CombatIndicator.lua Modules\CombatIndicator.lua
Modules\RangeCheck.lua Modules\RangeCheck.lua

View File

@ -1298,6 +1298,10 @@ elseif GetLocale() == "zhCN" then
L["Portrait"] = "头像" L["Portrait"] = "头像"
L["Health Values"] = "生命值" L["Health Values"] = "生命值"
-- Targets.lua
L["Targets"] = "敌方目标"
L["Enables Targets module"] = "启用敌方目标显示模块"
-- Powerbar.lua -- Powerbar.lua
L["Power Bar"] = "法力/能量条" L["Power Bar"] = "法力/能量条"
L["Power Bar Text"] = "法力/能量条文字" L["Power Bar Text"] = "法力/能量条文字"

View File

@ -9,7 +9,7 @@
-- make into AceComm. -- make into AceComm.
-- @class file -- @class file
-- @name AceComm-3.0 -- @name AceComm-3.0
-- @release $Id: AceComm-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ -- @release $Id: AceComm-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $
--[[ AceComm-3.0 --[[ AceComm-3.0
@ -35,6 +35,10 @@ local error, assert = error, assert
-- WoW APIs -- WoW APIs
local Ambiguate = Ambiguate local Ambiguate = Ambiguate
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: LibStub, DEFAULT_CHAT_FRAME, geterrorhandler, RegisterAddonMessagePrefix
AceComm.embeds = AceComm.embeds or {} AceComm.embeds = AceComm.embeds or {}
-- for my sanity and yours, let's give the message type bytes some names -- for my sanity and yours, let's give the message type bytes some names

View File

@ -75,7 +75,7 @@ local next = next
local strlen = string.len local strlen = string.len
local GetFramerate = GetFramerate local GetFramerate = GetFramerate
local strlower = string.lower local strlower = string.lower
local unpack,type,pairs,wipe = unpack,type,pairs,table.wipe local unpack,type,pairs,wipe = unpack,type,pairs,wipe
local UnitInRaid,UnitInParty = UnitInRaid,UnitInParty local UnitInRaid,UnitInParty = UnitInRaid,UnitInParty

View File

@ -1,7 +1,7 @@
--- AceConfigCmd-3.0 handles access to an options table through the "command line" interface via the ChatFrames. --- AceConfigCmd-3.0 handles access to an options table through the "command line" interface via the ChatFrames.
-- @class file -- @class file
-- @name AceConfigCmd-3.0 -- @name AceConfigCmd-3.0
-- @release $Id: AceConfigCmd-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ -- @release $Id: AceConfigCmd-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $
--[[ --[[
AceConfigCmd-3.0 AceConfigCmd-3.0
@ -37,10 +37,17 @@ local error, assert = error, assert
-- WoW APIs -- WoW APIs
local _G = _G local _G = _G
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: LibStub, SELECTED_CHAT_FRAME, DEFAULT_CHAT_FRAME
local L = setmetatable({}, { -- TODO: replace with proper locale local L = setmetatable({}, { -- TODO: replace with proper locale
__index = function(self,k) return k end __index = function(self,k) return k end
}) })
local function print(msg) local function print(msg)
(SELECTED_CHAT_FRAME or DEFAULT_CHAT_FRAME):AddMessage(msg) (SELECTED_CHAT_FRAME or DEFAULT_CHAT_FRAME):AddMessage(msg)
end end
@ -394,7 +401,7 @@ local function handle(info, inputpos, tab, depth, retfalse)
return return
end end
local strInput = strsub(info.input,inputpos); local str = strsub(info.input,inputpos);
if tab.type=="execute" then if tab.type=="execute" then
------------ execute -------------------------------------------- ------------ execute --------------------------------------------
@ -407,21 +414,21 @@ local function handle(info, inputpos, tab, depth, retfalse)
local res = true local res = true
if tab.pattern then if tab.pattern then
if type(tab.pattern)~="string" then err(info, inputpos, "'pattern' - expected a string") end if not(type(tab.pattern)=="string") then err(info, inputpos, "'pattern' - expected a string") end
if not strmatch(strInput, tab.pattern) then if not strmatch(str, tab.pattern) then
usererr(info, inputpos, "'"..strInput.."' - " .. L["invalid input"]) usererr(info, inputpos, "'"..str.."' - " .. L["invalid input"])
return return
end end
end end
do_final(info, inputpos, tab, "set", strInput) do_final(info, inputpos, tab, "set", str)
elseif tab.type=="toggle" then elseif tab.type=="toggle" then
------------ toggle -------------------------------------------- ------------ toggle --------------------------------------------
local b local b
local str = strtrim(strlower(strInput)) local str = strtrim(strlower(str))
if str=="" then if str=="" then
b = callmethod(info, inputpos, tab, "get") b = callmethod(info, inputpos, tab, "get")
@ -458,9 +465,9 @@ local function handle(info, inputpos, tab, depth, retfalse)
elseif tab.type=="range" then elseif tab.type=="range" then
------------ range -------------------------------------------- ------------ range --------------------------------------------
local val = tonumber(strInput) local val = tonumber(str)
if not val then if not val then
usererr(info, inputpos, "'"..strInput.."' - "..L["expected number"]) usererr(info, inputpos, "'"..str.."' - "..L["expected number"])
return return
end end
if type(info.step)=="number" then if type(info.step)=="number" then
@ -480,7 +487,7 @@ local function handle(info, inputpos, tab, depth, retfalse)
elseif tab.type=="select" then elseif tab.type=="select" then
------------ select ------------------------------------ ------------ select ------------------------------------
local str = strtrim(strlower(strInput)) local str = strtrim(strlower(str))
local values = tab.values local values = tab.values
if type(values) == "function" or type(values) == "string" then if type(values) == "function" or type(values) == "string" then
@ -521,7 +528,7 @@ local function handle(info, inputpos, tab, depth, retfalse)
elseif tab.type=="multiselect" then elseif tab.type=="multiselect" then
------------ multiselect ------------------------------------------- ------------ multiselect -------------------------------------------
local str = strtrim(strlower(strInput)) local str = strtrim(strlower(str))
local values = tab.values local values = tab.values
if type(values) == "function" or type(values) == "string" then if type(values) == "function" or type(values) == "string" then
@ -558,7 +565,7 @@ local function handle(info, inputpos, tab, depth, retfalse)
--check that the opt is valid --check that the opt is valid
local ok local ok
for k in pairs(values) do for k,v in pairs(values) do
if strlower(k)==opt then if strlower(k)==opt then
opt = k -- overwrite with key (in case of case mismatches) opt = k -- overwrite with key (in case of case mismatches)
ok = true ok = true
@ -627,7 +634,7 @@ local function handle(info, inputpos, tab, depth, retfalse)
elseif tab.type=="color" then elseif tab.type=="color" then
------------ color -------------------------------------------- ------------ color --------------------------------------------
local str = strtrim(strlower(strInput)) local str = strtrim(strlower(str))
if str == "" then if str == "" then
--TODO: Show current value --TODO: Show current value
return return
@ -699,7 +706,7 @@ local function handle(info, inputpos, tab, depth, retfalse)
elseif tab.type=="keybinding" then elseif tab.type=="keybinding" then
------------ keybinding -------------------------------------------- ------------ keybinding --------------------------------------------
local str = strtrim(strlower(strInput)) local str = strtrim(strlower(str))
if str == "" then if str == "" then
--TODO: Show current value --TODO: Show current value
return return

View File

@ -1,13 +1,13 @@
--- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables. --- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables.
-- @class file -- @class file
-- @name AceConfigDialog-3.0 -- @name AceConfigDialog-3.0
-- @release $Id: AceConfigDialog-3.0.lua 1296 2022-11-04 18:50:10Z nevcairiel $ -- @release $Id: AceConfigDialog-3.0.lua 1232 2020-04-14 22:21:22Z nevcairiel $
local LibStub = LibStub local LibStub = LibStub
local gui = LibStub("AceGUI-3.0") local gui = LibStub("AceGUI-3.0")
local reg = LibStub("AceConfigRegistry-3.0") local reg = LibStub("AceConfigRegistry-3.0")
local MAJOR, MINOR = "AceConfigDialog-3.0", 86 local MAJOR, MINOR = "AceConfigDialog-3.0", 79
local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
if not AceConfigDialog then return end if not AceConfigDialog then return end
@ -22,13 +22,19 @@ AceConfigDialog.frame.closing = AceConfigDialog.frame.closing or {}
AceConfigDialog.frame.closeAllOverride = AceConfigDialog.frame.closeAllOverride or {} AceConfigDialog.frame.closeAllOverride = AceConfigDialog.frame.closeAllOverride or {}
-- Lua APIs -- Lua APIs
local tinsert, tsort, tremove, wipe = table.insert, table.sort, table.remove, table.wipe local tinsert, tsort, tremove = table.insert, table.sort, table.remove
local strmatch, format = string.match, string.format local strmatch, format = string.match, string.format
local error = error local error = error
local pairs, next, select, type, unpack, ipairs = pairs, next, select, type, unpack, ipairs local pairs, next, select, type, unpack, wipe, ipairs = pairs, next, select, type, unpack, wipe, ipairs
local tostring, tonumber = tostring, tonumber local tostring, tonumber = tostring, tonumber
local math_min, math_max, math_floor = math.min, math.max, math.floor local math_min, math_max, math_floor = math.min, math.max, math.floor
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: NORMAL_FONT_COLOR, ACCEPT, CANCEL
-- GLOBALS: PlaySound, GameFontHighlight, GameFontHighlightSmall, GameFontHighlightLarge
-- GLOBALS: CloseSpecialWindows, InterfaceOptions_AddCategory, geterrorhandler
local emptyTbl = {} local emptyTbl = {}
--[[ --[[
@ -147,7 +153,6 @@ local stringIsLiteral = {
width = true, width = true,
image = true, image = true,
fontSize = true, fontSize = true,
tooltipHyperlink = true
} }
--Is Never a function or method --Is Never a function or method
@ -189,8 +194,9 @@ local function GetOptionsMemberValue(membername, option, options, path, appName,
--We have a function to call --We have a function to call
local info = new() local info = new()
--traverse the options table, picking up the handler and filling the info with the path --traverse the options table, picking up the handler and filling the info with the path
local handler
local group = options local group = options
local handler = group.handler handler = group.handler or handler
for i = 1, #path do for i = 1, #path do
group = GetSubOption(group, path[i]) group = GetSubOption(group, path[i])
@ -502,14 +508,6 @@ local function OptionOnMouseOver(widget, event)
local tooltip = AceConfigDialog.tooltip local tooltip = AceConfigDialog.tooltip
tooltip:SetOwner(widget.frame, "ANCHOR_TOPRIGHT") tooltip:SetOwner(widget.frame, "ANCHOR_TOPRIGHT")
local tooltipHyperlink = GetOptionsMemberValue("tooltipHyperlink", opt, options, path, appName)
if tooltipHyperlink then
tooltip:SetHyperlink(tooltipHyperlink)
tooltip:Show()
return
end
local name = GetOptionsMemberValue("name", opt, options, path, appName) local name = GetOptionsMemberValue("name", opt, options, path, appName)
local desc = GetOptionsMemberValue("desc", opt, options, path, appName) local desc = GetOptionsMemberValue("desc", opt, options, path, appName)
local usage = GetOptionsMemberValue("usage", opt, options, path, appName) local usage = GetOptionsMemberValue("usage", opt, options, path, appName)
@ -537,7 +535,8 @@ local function OptionOnMouseLeave(widget, event)
end end
local function GetFuncName(option) local function GetFuncName(option)
if option.type == "execute" then local type = option.type
if type == "execute" then
return "func" return "func"
else else
return "set" return "set"
@ -545,15 +544,13 @@ local function GetFuncName(option)
end end
do do
local frame = AceConfigDialog.popup local frame = AceConfigDialog.popup
if not frame or oldminor < 81 then if not frame then
frame = CreateFrame("Frame", nil, UIParent) frame = CreateFrame("Frame", nil, UIParent)
AceConfigDialog.popup = frame AceConfigDialog.popup = frame
frame:Hide() frame:Hide()
frame:SetPoint("CENTER", UIParent, "CENTER") frame:SetPoint("CENTER", UIParent, "CENTER")
frame:SetSize(320, 72) frame:SetSize(320, 72)
frame:EnableMouse(true) -- Do not allow click-through on the frame
frame:SetFrameStrata("TOOLTIP") frame:SetFrameStrata("TOOLTIP")
frame:SetFrameLevel(100) -- Lots of room to draw under it
frame:SetScript("OnKeyDown", function(self, key) frame:SetScript("OnKeyDown", function(self, key)
if key == "ESCAPE" then if key == "ESCAPE" then
self:SetPropagateKeyboardInput(false) self:SetPropagateKeyboardInput(false)
@ -567,17 +564,26 @@ do
end end
end) end)
local border = CreateFrame("Frame", nil, frame, "DialogBorderOpaqueTemplate") if WOW_PROJECT_ID == WOW_PROJECT_CLASSIC then
frame:SetBackdrop({
bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]],
edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]],
tile = true,
tileSize = 32,
edgeSize = 32,
insets = { left = 11, right = 11, top = 11, bottom = 11 },
})
else
local border = CreateFrame("Frame", nil, frame, "DialogBorderDarkTemplate")
border:SetAllPoints(frame) border:SetAllPoints(frame)
frame:SetFixedFrameStrata(true) end
frame:SetFixedFrameLevel(true)
local text = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight") local text = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight")
text:SetSize(290, 0) text:SetSize(290, 0)
text:SetPoint("TOP", 0, -16) text:SetPoint("TOP", 0, -16)
frame.text = text frame.text = text
local function newButton(newText) local function newButton(text)
local button = CreateFrame("Button", nil, frame) local button = CreateFrame("Button", nil, frame)
button:SetSize(128, 21) button:SetSize(128, 21)
button:SetNormalFontObject(GameFontNormal) button:SetNormalFontObject(GameFontNormal)
@ -588,7 +594,7 @@ do
button:GetPushedTexture():SetTexCoord(0.0, 1.0, 0.0, 0.71875) button:GetPushedTexture():SetTexCoord(0.0, 1.0, 0.0, 0.71875)
button:SetHighlightTexture(130762) -- "Interface\\Buttons\\UI-DialogBox-Button-Highlight" button:SetHighlightTexture(130762) -- "Interface\\Buttons\\UI-DialogBox-Button-Highlight"
button:GetHighlightTexture():SetTexCoord(0.0, 1.0, 0.0, 0.71875) button:GetHighlightTexture():SetTexCoord(0.0, 1.0, 0.0, 0.71875)
button:SetText(newText) button:SetText(text)
return button return button
end end
@ -675,7 +681,7 @@ local function ActivateControl(widget, event, ...)
if group[funcname] ~= nil then if group[funcname] ~= nil then
func = group[funcname] func = group[funcname]
end end
handler = group.handler handler = group.handler or handler
confirm = group.confirm confirm = group.confirm
validate = group.validate validate = group.validate
for i = 1, #path do for i = 1, #path do
@ -739,6 +745,7 @@ local function ActivateControl(widget, event, ...)
end end
end end
local rootframe = user.rootframe
if not validated or type(validated) == "string" then if not validated or type(validated) == "string" then
if not validated then if not validated then
if usage then if usage then
@ -753,8 +760,8 @@ local function ActivateControl(widget, event, ...)
end end
-- show validate message -- show validate message
if user.rootframe.SetStatusText then if rootframe.SetStatusText then
user.rootframe:SetStatusText(validated) rootframe:SetStatusText(validated)
else else
validationErrorPopup(validated) validationErrorPopup(validated)
end end
@ -791,14 +798,14 @@ local function ActivateControl(widget, event, ...)
if type(confirm) == "boolean" then if type(confirm) == "boolean" then
if confirm then if confirm then
if not confirmText then if not confirmText then
local option_name, desc = option.name, option.desc local name, desc = option.name, option.desc
if type(option_name) == "function" then if type(name) == "function" then
option_name = option_name(info) name = name(info)
end end
if type(desc) == "function" then if type(desc) == "function" then
desc = desc(info) desc = desc(info)
end end
confirmText = option_name confirmText = name
if desc then if desc then
confirmText = confirmText.." - "..desc confirmText = confirmText.." - "..desc
end end
@ -1140,6 +1147,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
--Control to feed --Control to feed
local control local control
local name = GetOptionsMemberValue("name", v, options, path, appName)
if v.type == "execute" then if v.type == "execute" then
local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName) local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName)
@ -1242,7 +1251,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
end end
tsort(sorting, sortTblAsStrings) tsort(sorting, sortTblAsStrings)
end end
for _, value in ipairs(sorting) do for k, value in ipairs(sorting) do
local text = values[value] local text = values[value]
local radio = gui:Create("CheckBox") local radio = gui:Create("CheckBox")
radio:SetLabel(text) radio:SetLabel(text)
@ -1324,8 +1333,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
control:SetWidth(width_multiplier) control:SetWidth(width_multiplier)
end end
--check:SetTriState(v.tristate) --check:SetTriState(v.tristate)
for s = 1, #valuesort do for i = 1, #valuesort do
local key = valuesort[s] local key = valuesort[i]
local value = GetOptionsMemberValue("get",v, options, path, appName, key) local value = GetOptionsMemberValue("get",v, options, path, appName, key)
control:SetItemValue(key,value) control:SetItemValue(key,value)
end end
@ -1337,8 +1346,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
control:PauseLayout() control:PauseLayout()
local width = GetOptionsMemberValue("width",v,options,path,appName) local width = GetOptionsMemberValue("width",v,options,path,appName)
for s = 1, #valuesort do for i = 1, #valuesort do
local value = valuesort[s] local value = valuesort[i]
local text = values[value] local text = values[value]
local check = gui:Create("CheckBox") local check = gui:Create("CheckBox")
check:SetLabel(text) check:SetLabel(text)
@ -1355,7 +1364,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
elseif width == "half" then elseif width == "half" then
check:SetWidth(width_multiplier / 2) check:SetWidth(width_multiplier / 2)
elseif (type(width) == "number") then elseif (type(width) == "number") then
check:SetWidth(width_multiplier * width) control:SetWidth(width_multiplier * width)
elseif width == "full" then elseif width == "full" then
check.width = "fill" check.width = "fill"
else else
@ -1425,8 +1434,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
end end
control:SetImageSize(width, height) control:SetImageSize(width, height)
end end
local controlWidth = GetOptionsMemberValue("width",v,options,path,appName) local width = GetOptionsMemberValue("width",v,options,path,appName)
control.width = not controlWidth and "fill" control.width = not width and "fill"
end end
--Common Init --Common Init
@ -1681,29 +1690,29 @@ function AceConfigDialog:FeedGroup(appName,options,container,rootframe,path, isR
elseif grouptype == "select" then elseif grouptype == "select" then
local selectGroup = gui:Create("DropdownGroup") local select = gui:Create("DropdownGroup")
selectGroup:SetTitle(name) select:SetTitle(name)
InjectInfo(selectGroup, options, group, path, rootframe, appName) InjectInfo(select, options, group, path, rootframe, appName)
selectGroup:SetCallback("OnGroupSelected", GroupSelected) select:SetCallback("OnGroupSelected", GroupSelected)
local status = AceConfigDialog:GetStatusTable(appName, path) local status = AceConfigDialog:GetStatusTable(appName, path)
if not status.groups then if not status.groups then
status.groups = {} status.groups = {}
end end
selectGroup:SetStatusTable(status.groups) select:SetStatusTable(status.groups)
local grouplist, orderlist = BuildSelect(group, options, path, appName) local grouplist, orderlist = BuildSelect(group, options, path, appName)
selectGroup:SetGroupList(grouplist, orderlist) select:SetGroupList(grouplist, orderlist)
selectGroup:SetUserData("grouplist", grouplist) select:SetUserData("grouplist", grouplist)
selectGroup:SetUserData("orderlist", orderlist) select:SetUserData("orderlist", orderlist)
local firstgroup = orderlist[1] local firstgroup = orderlist[1]
if firstgroup then if firstgroup then
selectGroup:SetGroup((GroupExists(appName, options, path,status.groups.selected) and status.groups.selected) or firstgroup) select:SetGroup((GroupExists(appName, options, path,status.groups.selected) and status.groups.selected) or firstgroup)
end end
selectGroup.width = "fill" select.width = "fill"
selectGroup.height = "fill" select.height = "fill"
container:AddChild(selectGroup) container:AddChild(select)
--assume tree group by default --assume tree group by default
--if parenttype is tree then this group is already a node on that tree --if parenttype is tree then this group is already a node on that tree
@ -1931,13 +1940,13 @@ end
-- convert pre-39 BlizOptions structure to the new format -- convert pre-39 BlizOptions structure to the new format
if oldminor and oldminor < 39 and AceConfigDialog.BlizOptions then if oldminor and oldminor < 39 and AceConfigDialog.BlizOptions then
local old = AceConfigDialog.BlizOptions local old = AceConfigDialog.BlizOptions
local newOpt = {} local new = {}
for key, widget in pairs(old) do for key, widget in pairs(old) do
local appName = widget:GetUserData("appName") local appName = widget:GetUserData("appName")
if not newOpt[appName] then newOpt[appName] = {} end if not new[appName] then new[appName] = {} end
newOpt[appName][key] = widget new[appName][key] = widget
end end
AceConfigDialog.BlizOptions = newOpt AceConfigDialog.BlizOptions = new
else else
AceConfigDialog.BlizOptions = AceConfigDialog.BlizOptions or {} AceConfigDialog.BlizOptions = AceConfigDialog.BlizOptions or {}
end end
@ -1970,7 +1979,6 @@ end
-- @param parent The parent to use in the interface options tree. -- @param parent The parent to use in the interface options tree.
-- @param ... The path in the options table to feed into the interface options panel. -- @param ... The path in the options table to feed into the interface options panel.
-- @return The reference to the frame registered into the Interface Options. -- @return The reference to the frame registered into the Interface Options.
-- @return The category ID to pass to Settings.OpenToCategory (or InterfaceOptionsFrame_OpenToCategory)
function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...) function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...)
local BlizOptions = AceConfigDialog.BlizOptions local BlizOptions = AceConfigDialog.BlizOptions
@ -1986,6 +1994,7 @@ function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...)
if not BlizOptions[appName][key] then if not BlizOptions[appName][key] then
local group = gui:Create("BlizOptionsGroup") local group = gui:Create("BlizOptionsGroup")
BlizOptions[appName][key] = group BlizOptions[appName][key] = group
group:SetName(name or appName, parent)
group:SetTitle(name or appName) group:SetTitle(name or appName)
group:SetUserData("appName", appName) group:SetUserData("appName", appName)
@ -1998,30 +2007,8 @@ function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...)
end end
group:SetCallback("OnShow", FeedToBlizPanel) group:SetCallback("OnShow", FeedToBlizPanel)
group:SetCallback("OnHide", ClearBlizPanel) group:SetCallback("OnHide", ClearBlizPanel)
if Settings and Settings.RegisterCanvasLayoutCategory then
local categoryName = name or appName
if parent then
local category = Settings.GetCategory(parent)
if not category then
error(("The parent category '%s' was not found"):format(parent), 2)
end
local subcategory = Settings.RegisterCanvasLayoutSubcategory(category, group.frame, categoryName)
-- force the generated ID to be used for subcategories, as these can have very simple names like "Profiles"
group:SetName(subcategory.ID, parent)
else
local category = Settings.RegisterCanvasLayoutCategory(group.frame, categoryName)
-- using appName here would be cleaner, but would not be 100% compatible
-- but for top-level categories it should be fine, as these are typically addon names
category.ID = categoryName
group:SetName(categoryName, parent)
Settings.RegisterAddOnCategory(category)
end
else
group:SetName(name or appName, parent)
InterfaceOptions_AddCategory(group.frame) InterfaceOptions_AddCategory(group.frame)
end return group.frame
return group.frame, group.frame.name
else else
error(("%s has already been added to the Blizzard Options Window with the given path"):format(appName), 2) error(("%s has already been added to the Blizzard Options Window with the given path"):format(appName), 2)
end end

View File

@ -8,10 +8,10 @@
-- :IterateOptionsTables() (and :GetOptionsTable() if only given one argument) return a function reference that the requesting config handling addon must call with valid "uiType", "uiName". -- :IterateOptionsTables() (and :GetOptionsTable() if only given one argument) return a function reference that the requesting config handling addon must call with valid "uiType", "uiName".
-- @class file -- @class file
-- @name AceConfigRegistry-3.0 -- @name AceConfigRegistry-3.0
-- @release $Id: AceConfigRegistry-3.0.lua 1296 2022-11-04 18:50:10Z nevcairiel $ -- @release $Id: AceConfigRegistry-3.0.lua 1207 2019-06-23 12:08:33Z nevcairiel $
local CallbackHandler = LibStub("CallbackHandler-1.0") local CallbackHandler = LibStub("CallbackHandler-1.0")
local MAJOR, MINOR = "AceConfigRegistry-3.0", 21 local MAJOR, MINOR = "AceConfigRegistry-3.0", 20
local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR) local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR)
if not AceConfigRegistry then return end if not AceConfigRegistry then return end
@ -83,7 +83,6 @@ local basekeys={
dialogHidden=optmethodbool, dialogHidden=optmethodbool,
dropdownHidden=optmethodbool, dropdownHidden=optmethodbool,
cmdHidden=optmethodbool, cmdHidden=optmethodbool,
tooltipHyperlink=optstringfunc,
icon=optstringnumberfunc, icon=optstringnumberfunc,
iconCoords=optmethodtable, iconCoords=optmethodtable,
handler=opttable, handler=opttable,

View File

@ -40,8 +40,8 @@
-- end -- end
-- @class file -- @class file
-- @name AceDB-3.0.lua -- @name AceDB-3.0.lua
-- @release $Id: AceDB-3.0.lua 1306 2023-06-23 14:55:09Z nevcairiel $ -- @release $Id: AceDB-3.0.lua 1217 2019-07-11 03:06:18Z funkydude $
local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 28 local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 27
local AceDB = LibStub:NewLibrary(ACEDB_MAJOR, ACEDB_MINOR) local AceDB = LibStub:NewLibrary(ACEDB_MAJOR, ACEDB_MINOR)
if not AceDB then return end -- No upgrade needed if not AceDB then return end -- No upgrade needed
@ -53,6 +53,10 @@ local setmetatable, rawset, rawget = setmetatable, rawset, rawget
-- WoW APIs -- WoW APIs
local _G = _G local _G = _G
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: LibStub
AceDB.db_registry = AceDB.db_registry or {} AceDB.db_registry = AceDB.db_registry or {}
AceDB.frame = AceDB.frame or CreateFrame("Frame") AceDB.frame = AceDB.frame or CreateFrame("Frame")
@ -94,11 +98,11 @@ local function copyDefaults(dest, src)
-- This is a metatable used for table defaults -- This is a metatable used for table defaults
local mt = { local mt = {
-- This handles the lookup and creation of new subtables -- This handles the lookup and creation of new subtables
__index = function(t,k2) __index = function(t,k)
if k2 == nil then return nil end if k == nil then return nil end
local tbl = {} local tbl = {}
copyDefaults(tbl, v) copyDefaults(tbl, v)
rawset(t, k2, tbl) rawset(t, k, tbl)
return tbl return tbl
end, end,
} }
@ -111,7 +115,7 @@ local function copyDefaults(dest, src)
end end
else else
-- Values are not tables, so this is just a simple return -- Values are not tables, so this is just a simple return
local mt = {__index = function(t,k2) return k2~=nil and v or nil end} local mt = {__index = function(t,k) return k~=nil and v or nil end}
setmetatable(dest, mt) setmetatable(dest, mt)
end end
elseif type(v) == "table" then elseif type(v) == "table" then
@ -260,7 +264,7 @@ local factionrealmKey = factionKey .. " - " .. realmKey
local localeKey = GetLocale():lower() local localeKey = GetLocale():lower()
local regionTable = { "US", "KR", "EU", "TW", "CN" } local regionTable = { "US", "KR", "EU", "TW", "CN" }
local regionKey = regionTable[GetCurrentRegion()] or GetCurrentRegionName() or "TR" local regionKey = regionTable[GetCurrentRegion()]
local factionrealmregionKey = factionrealmKey .. " - " .. regionKey local factionrealmregionKey = factionrealmKey .. " - " .. regionKey
-- Actual database initialization function -- Actual database initialization function

View File

@ -1,7 +1,7 @@
--- AceDBOptions-3.0 provides a universal AceConfig options screen for managing AceDB-3.0 profiles. --- AceDBOptions-3.0 provides a universal AceConfig options screen for managing AceDB-3.0 profiles.
-- @class file -- @class file
-- @name AceDBOptions-3.0 -- @name AceDBOptions-3.0
-- @release $Id: AceDBOptions-3.0.lua 1304 2023-05-19 19:50:10Z nevcairiel $ -- @release $Id: AceDBOptions-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $
local ACEDBO_MAJOR, ACEDBO_MINOR = "AceDBOptions-3.0", 15 local ACEDBO_MAJOR, ACEDBO_MINOR = "AceDBOptions-3.0", 15
local AceDBOptions = LibStub:NewLibrary(ACEDBO_MAJOR, ACEDBO_MINOR) local AceDBOptions = LibStub:NewLibrary(ACEDBO_MAJOR, ACEDBO_MINOR)
@ -13,6 +13,10 @@ local pairs, next = pairs, next
-- WoW APIs -- WoW APIs
local UnitClass = UnitClass local UnitClass = UnitClass
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: NORMAL_FONT_COLOR_CODE, FONT_COLOR_CODE_CLOSE
AceDBOptions.optionTables = AceDBOptions.optionTables or {} AceDBOptions.optionTables = AceDBOptions.optionTables or {}
AceDBOptions.handlers = AceDBOptions.handlers or {} AceDBOptions.handlers = AceDBOptions.handlers or {}
@ -84,25 +88,25 @@ elseif LOCALE == "frFR" then
L["reset_desc"] = "Réinitialise le profil actuel au cas où votre configuration est corrompue ou si vous voulez tout simplement faire table rase." L["reset_desc"] = "Réinitialise le profil actuel au cas où votre configuration est corrompue ou si vous voulez tout simplement faire table rase."
L["reset_sub"] = "Réinitialise le profil actuel avec les paramètres par défaut." L["reset_sub"] = "Réinitialise le profil actuel avec les paramètres par défaut."
elseif LOCALE == "koKR" then elseif LOCALE == "koKR" then
L["choose"] = "기존 프로필" L["choose"] = "저장 중인 프로필"
L["choose_desc"] = "편집 상자에 이름을 입력하여 새로운 프로필을 만들거나 이미 존재하는 프로필 중 하나를 선택할 수 있습니다." L["choose_desc"] = "입력창에 새로운 이름을 입력하거나 저장 중인 프로필 중 하나를 선택하여 새로운 프로필을 만들 수 있습니다."
L["choose_sub"] = "현재 이용할 수 있는 프로필 중 하나를 선택합니다." L["choose_sub"] = "현재 이용할 수 있는 프로필 중 하나를 선택합니다."
L["copy"] = "복사해 올 프로필" L["copy"] = "복사해오기"
L["copy_desc"] = "기존 프로필의 설정을 현재 활성화된 프로필로 복사합니다." L["copy_desc"] = "현재 사용 중인 프로필에 선택한 프로필의 설정을 복사합니다."
L["current"] = "현재 프로필:" L["current"] = "현재 프로필:"
L["default"] = "기본값" L["default"] = "기본값"
L["delete"] = "프로필 삭제" L["delete"] = "프로필 삭제"
L["delete_confirm"] = "선택한 프로필을 삭제하시겠습니까?" L["delete_confirm"] = "정말로 선택한 프로필을 삭제할까요?"
L["delete_desc"] = "데이터베이스에서 기존 프로필과 사용하지 않는 프로필을 삭제하여 공간을 절약하고 SavedVariables 파일을 정리합니다." L["delete_desc"] = "저장 공간 절약과 SavedVariables 파일의 정리를 위해 데이터베이스에서 사용하지 않는 프로필을 삭제하세요."
L["delete_sub"] = "데이터베이스에서 프로필을 삭제합니다." L["delete_sub"] = "데이터베이스 프로필을 삭제합니다."
L["intro"] = "활성 데이터베이스 프로필을 변경할 수 있으며, 모든 캐릭터마다 서로 다른 설정을 지정할 수 있습니다." L["intro"] = "활성 데이터베이스 프로필을 변경할 수 있고, 각 캐릭터 별로 다른 설정을 할 수 있습니다."
L["new"] = "새로운 프로필" L["new"] = "새로운 프로필"
L["new_sub"] = "비어 있는 프로필을 새로 만듭니다." L["new_sub"] = "새로운 프로필을 만듭니다."
L["profiles"] = "프로필" L["profiles"] = "프로필"
L["profiles_sub"] = "프로필 관리" L["profiles_sub"] = "프로필 관리"
L["reset"] = "프로필 재설정" L["reset"] = "프로필 초기화"
L["reset_desc"] = "구성이 손상되었거나 처음부터 다시 시작하고 싶은 경우 현재 프로필을 기본값으로 재설정하세요." L["reset_desc"] = "설정이 깨졌거나 처음부터 다시 설정을 원하는 경우, 현재 프로필을 기본값으로 초기화하세요."
L["reset_sub"] = "현재 프로필을 기본값으로 재설정합니다" L["reset_sub"] = "현재 프로필을 기본값으로 초기화합니다"
elseif LOCALE == "esES" or LOCALE == "esMX" then elseif LOCALE == "esES" or LOCALE == "esMX" then
L["choose"] = "Perfiles existentes" L["choose"] = "Perfiles existentes"
L["choose_desc"] = "Puedes crear un nuevo perfil introduciendo un nombre en el recuadro o puedes seleccionar un perfil de los ya existentes." L["choose_desc"] = "Puedes crear un nuevo perfil introduciendo un nombre en el recuadro o puedes seleccionar un perfil de los ya existentes."
@ -166,31 +170,31 @@ elseif LOCALE == "zhCN" then
elseif LOCALE == "ruRU" then elseif LOCALE == "ruRU" then
L["choose"] = "Существующие профили" L["choose"] = "Существующие профили"
L["choose_desc"] = "Вы можете создать новый профиль, введя название в поле ввода, или выбрать один из уже существующих профилей." L["choose_desc"] = "Вы можете создать новый профиль, введя название в поле ввода, или выбрать один из уже существующих профилей."
L["choose_sub"] = "Выбор одного из уже доступных профилей." L["choose_sub"] = "Выбор одиного из уже доступных профилей"
L["copy"] = "Скопировать из" L["copy"] = "Скопировать из"
L["copy_desc"] = "Копирование настроек из выбранного профиля в активный." L["copy_desc"] = "Скопировать настройки из выбранного профиля в активный."
L["current"] = "Текущий профиль:" L["current"] = "Текущий профиль:"
L["default"] = "По умолчанию" L["default"] = "По умолчанию"
L["delete"] = "Удалить профиль" L["delete"] = "Удалить профиль"
L["delete_confirm"] = "Вы уверены, что хотите удалить выбранный профиль?" L["delete_confirm"] = "Вы уверены, что вы хотите удалить выбранный профиль?"
L["delete_desc"] = "Удаление существующего и неиспользуемого профиля из базы данных для сохранения места, и очистка файла SavedVariables." L["delete_desc"] = "Удалить существующий и неиспользуемый профиль из БД для сохранения места, и очистить SavedVariables файл."
L["delete_sub"] = "Удаление профиля из базы данных." L["delete_sub"] = "Удаление профиля из БД"
L["intro"] = "Изменяя активный профиль, Вы можете задать разные настройки для каждого персонажа." L["intro"] = "Изменяя активный профиль, вы можете задать различные настройки модификаций для каждого персонажа."
L["new"] = "Новый" L["new"] = "Новый"
L["new_sub"] = "Создание нового чистого профиля." L["new_sub"] = "Создать новый чистый профиль"
L["profiles"] = "Профили" L["profiles"] = "Профили"
L["profiles_sub"] = "Управление профилями" L["profiles_sub"] = "Управление профилями"
L["reset"] = "Сбросить профиль" L["reset"] = "Сброс профиля"
L["reset_desc"] = "Сброс текущего профиля к стандартным настройкам, если Ваша конфигурация испорчена или Вы хотите настроить все заново." L["reset_desc"] = "Сбросить текущий профиль к стандартным настройкам, если ваша конфигурация испорчена или вы хотите настроить всё заново."
L["reset_sub"] = "Сброс текущего профиля на стандартный" L["reset_sub"] = "Сброс текущего профиля на стандартный"
elseif LOCALE == "itIT" then elseif LOCALE == "itIT" then
L["choose"] = "Profili Esistenti" L["choose"] = "Profili Esistenti"
L["choose_desc"] = "Puoi creare un nuovo profilo digitando il nome della casella di testo, oppure scegliendone uno tra i profili già esistenti." L["choose_desc"] = "Puoi creare un nuovo profilo digitando il nome della casella di testo, oppure scegliendone uno tra i profili già esistenti."
L["choose_sub"] = "Seleziona uno dei profili attualmente disponibili." L["choose_sub"] = "Seleziona uno dei profili attualmente disponibili."
L["copy"] = "Copia Da" L["copy"] = "Copia Da"
L["copy_desc"] = "Copia le impostazioni da un profilo esistente nel profilo attivo in questo momento." L["copy_desc"] = "Copia le impostazioni da un profilo esistente, nel profilo attivo in questo momento."
L["current"] = "Profilo Attivo:" L["current"] = "Profilo Attivo:"
L["default"] = "Predefinito" L["default"] = "Standard"
L["delete"] = "Cancella un Profilo" L["delete"] = "Cancella un Profilo"
L["delete_confirm"] = "Sei sicuro di voler cancellare il profilo selezionato?" L["delete_confirm"] = "Sei sicuro di voler cancellare il profilo selezionato?"
L["delete_desc"] = "Cancella i profili non utilizzati dal database per risparmiare spazio e mantenere puliti i file di configurazione SavedVariables." L["delete_desc"] = "Cancella i profili non utilizzati dal database per risparmiare spazio e mantenere puliti i file di configurazione SavedVariables."

View File

@ -24,22 +24,28 @@
-- f:AddChild(btn) -- f:AddChild(btn)
-- @class file -- @class file
-- @name AceGUI-3.0 -- @name AceGUI-3.0
-- @release $Id: AceGUI-3.0.lua 1288 2022-09-25 14:19:00Z funkehdude $ -- @release $Id: AceGUI-3.0.lua 1231 2020-04-14 22:20:36Z nevcairiel $
local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 41 local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 41
local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR) local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR)
if not AceGUI then return end -- No upgrade needed if not AceGUI then return end -- No upgrade needed
-- Lua APIs -- Lua APIs
local tinsert, wipe = table.insert, table.wipe local tinsert = table.insert
local select, pairs, next, type = select, pairs, next, type local select, pairs, next, type = select, pairs, next, type
local error, assert = error, assert local error, assert = error, assert
local setmetatable, rawget = setmetatable, rawget local setmetatable, rawget = setmetatable, rawget
local math_max, math_min, math_ceil = math.max, math.min, math.ceil local math_max = math.max
-- WoW APIs -- WoW APIs
local UIParent = UIParent local UIParent = UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: geterrorhandler, LibStub
--local con = LibStub("AceConsole-3.0",true)
AceGUI.WidgetRegistry = AceGUI.WidgetRegistry or {} AceGUI.WidgetRegistry = AceGUI.WidgetRegistry or {}
AceGUI.LayoutRegistry = AceGUI.LayoutRegistry or {} AceGUI.LayoutRegistry = AceGUI.LayoutRegistry or {}
AceGUI.WidgetBase = AceGUI.WidgetBase or {} AceGUI.WidgetBase = AceGUI.WidgetBase or {}
@ -88,38 +94,38 @@ do
AceGUI.objPools = AceGUI.objPools or {} AceGUI.objPools = AceGUI.objPools or {}
local objPools = AceGUI.objPools local objPools = AceGUI.objPools
--Returns a new instance, if none are available either returns a new table or calls the given contructor --Returns a new instance, if none are available either returns a new table or calls the given contructor
function newWidget(widgetType) function newWidget(type)
if not WidgetRegistry[widgetType] then if not WidgetRegistry[type] then
error("Attempt to instantiate unknown widget type", 2) error("Attempt to instantiate unknown widget type", 2)
end end
if not objPools[widgetType] then if not objPools[type] then
objPools[widgetType] = {} objPools[type] = {}
end end
local newObj = next(objPools[widgetType]) local newObj = next(objPools[type])
if not newObj then if not newObj then
newObj = WidgetRegistry[widgetType]() newObj = WidgetRegistry[type]()
newObj.AceGUIWidgetVersion = WidgetVersions[widgetType] newObj.AceGUIWidgetVersion = WidgetVersions[type]
else else
objPools[widgetType][newObj] = nil objPools[type][newObj] = nil
-- if the widget is older then the latest, don't even try to reuse it -- if the widget is older then the latest, don't even try to reuse it
-- just forget about it, and grab a new one. -- just forget about it, and grab a new one.
if not newObj.AceGUIWidgetVersion or newObj.AceGUIWidgetVersion < WidgetVersions[widgetType] then if not newObj.AceGUIWidgetVersion or newObj.AceGUIWidgetVersion < WidgetVersions[type] then
return newWidget(widgetType) return newWidget(type)
end end
end end
return newObj return newObj
end end
-- Releases an instance to the Pool -- Releases an instance to the Pool
function delWidget(obj,widgetType) function delWidget(obj,type)
if not objPools[widgetType] then if not objPools[type] then
objPools[widgetType] = {} objPools[type] = {}
end end
if objPools[widgetType][obj] then if objPools[type][obj] then
error("Attempt to Release Widget that is already released", 2) error("Attempt to Release Widget that is already released", 2)
end end
objPools[widgetType][obj] = true objPools[type][obj] = true
end end
end end
@ -135,9 +141,9 @@ end
-- OnAcquire function on it, before returning. -- OnAcquire function on it, before returning.
-- @param type The type of the widget. -- @param type The type of the widget.
-- @return The newly created widget. -- @return The newly created widget.
function AceGUI:Create(widgetType) function AceGUI:Create(type)
if WidgetRegistry[widgetType] then if WidgetRegistry[type] then
local widget = newWidget(widgetType) local widget = newWidget(type)
if rawget(widget, "Acquire") then if rawget(widget, "Acquire") then
widget.OnAcquire = widget.Acquire widget.OnAcquire = widget.Acquire
@ -155,7 +161,7 @@ function AceGUI:Create(widgetType)
if widget.OnAcquire then if widget.OnAcquire then
widget:OnAcquire() widget:OnAcquire()
else else
error(("Widget type %s doesn't supply an OnAcquire Function"):format(widgetType)) error(("Widget type %s doesn't supply an OnAcquire Function"):format(type))
end end
-- Set the default Layout ("List") -- Set the default Layout ("List")
safecall(widget.SetLayout, widget, "List") safecall(widget.SetLayout, widget, "List")
@ -583,25 +589,25 @@ AceGUI.counts = AceGUI.counts or {}
-- This is used by widgets that require a named frame, e.g. when a Blizzard -- This is used by widgets that require a named frame, e.g. when a Blizzard
-- Template requires it. -- Template requires it.
-- @param type The widget type -- @param type The widget type
function AceGUI:GetNextWidgetNum(widgetType) function AceGUI:GetNextWidgetNum(type)
if not self.counts[widgetType] then if not self.counts[type] then
self.counts[widgetType] = 0 self.counts[type] = 0
end end
self.counts[widgetType] = self.counts[widgetType] + 1 self.counts[type] = self.counts[type] + 1
return self.counts[widgetType] return self.counts[type]
end end
--- Return the number of created widgets for this type. --- Return the number of created widgets for this type.
-- In contrast to GetNextWidgetNum, the number is not incremented. -- In contrast to GetNextWidgetNum, the number is not incremented.
-- @param widgetType The widget type -- @param type The widget type
function AceGUI:GetWidgetCount(widgetType) function AceGUI:GetWidgetCount(type)
return self.counts[widgetType] or 0 return self.counts[type] or 0
end end
--- Return the version of the currently registered widget type. --- Return the version of the currently registered widget type.
-- @param widgetType The widget type -- @param type The widget type
function AceGUI:GetWidgetVersion(widgetType) function AceGUI:GetWidgetVersion(type)
return WidgetVersions[widgetType] return WidgetVersions[type]
end end
------------- -------------
@ -764,6 +770,7 @@ AceGUI:RegisterLayout("Flow",
usedwidth = 0 usedwidth = 0
rowstart = frame rowstart = frame
rowstartoffset = frameoffset
if child.DoLayout then if child.DoLayout then
child:DoLayout() child:DoLayout()
@ -806,8 +813,7 @@ local GetCellAlign = function (dir, tableObj, colObj, cellObj, cell, child)
or colObj and (colObj["align" .. dir] or colObj.align) or colObj and (colObj["align" .. dir] or colObj.align)
or tableObj["align" .. dir] or tableObj.align or tableObj["align" .. dir] or tableObj.align
or "CENTERLEFT" or "CENTERLEFT"
local val local child, cell, val = child or 0, cell or 0, nil
child, cell = child or 0, cell or 0
if type(fn) == "string" then if type(fn) == "string" then
fn = fn:lower() fn = fn:lower()
@ -821,7 +827,7 @@ local GetCellAlign = function (dir, tableObj, colObj, cellObj, cell, child)
val = fn val = fn
end end
return fn, math_max(0, math_min(val, cell)) return fn, max(0, min(val, cell))
end end
-- Get width or height for multiple cells combined -- Get width or height for multiple cells combined
@ -830,7 +836,7 @@ local GetCellDimension = function (dir, laneDim, from, to, space)
for cell=from,to do for cell=from,to do
dim = dim + (laneDim[cell] or 0) dim = dim + (laneDim[cell] or 0)
end end
return dim + math_max(0, to - from) * (space or 0) return dim + max(0, to - from) * (space or 0)
end end
--[[ Options --[[ Options
@ -876,7 +882,7 @@ AceGUI:RegisterLayout("Table",
repeat repeat
n = n + 1 n = n + 1
local col = (n - 1) % #cols + 1 local col = (n - 1) % #cols + 1
local row = math_ceil(n / #cols) local row = ceil(n / #cols)
local rowspan = rowspans[col] local rowspan = rowspans[col]
local cell = rowspan and rowspan.child or child local cell = rowspan and rowspan.child or child
local cellObj = cell:GetUserData("cell") local cellObj = cell:GetUserData("cell")
@ -892,7 +898,7 @@ AceGUI:RegisterLayout("Table",
end end
-- Colspan -- Colspan
local colspan = math_max(0, math_min((cellObj and cellObj.colspan or 1) - 1, #cols - col)) local colspan = max(0, min((cellObj and cellObj.colspan or 1) - 1, #cols - col))
n = n + colspan n = n + colspan
-- Place the cell -- Place the cell
@ -909,7 +915,7 @@ AceGUI:RegisterLayout("Table",
end end
end end
local rows = math_ceil(n / #cols) local rows = ceil(n / #cols)
-- Determine fixed size cols and collect weights -- Determine fixed size cols and collect weights
local extantH, totalWeight = totalH, 0 local extantH, totalWeight = totalH, 0
@ -934,16 +940,16 @@ AceGUI:RegisterLayout("Table",
f:ClearAllPoints() f:ClearAllPoints()
local childH = f:GetWidth() or 0 local childH = f:GetWidth() or 0
laneH[col] = math_max(laneH[col], childH - GetCellDimension("H", laneH, colStart[child], col - 1, spaceH)) laneH[col] = max(laneH[col], childH - GetCellDimension("H", laneH, colStart[child], col - 1, spaceH))
end end
end end
laneH[col] = math_max(colObj.min or colObj[1] or 0, math_min(laneH[col], colObj.max or colObj[2] or laneH[col])) laneH[col] = max(colObj.min or colObj[1] or 0, min(laneH[col], colObj.max or colObj[2] or laneH[col]))
else else
-- Rel./Abs. width -- Rel./Abs. width
laneH[col] = colObj.width < 1 and colObj.width * totalH or colObj.width laneH[col] = colObj.width < 1 and colObj.width * totalH or colObj.width
end end
extantH = math_max(0, extantH - laneH[col]) extantH = max(0, extantH - laneH[col])
end end
end end
@ -982,7 +988,7 @@ AceGUI:RegisterLayout("Table",
child:DoLayout() child:DoLayout()
end end
rowV = math_max(rowV, (f:GetHeight() or 0) - GetCellDimension("V", laneV, rowStart[child], row - 1, spaceV)) rowV = max(rowV, (f:GetHeight() or 0) - GetCellDimension("V", laneV, rowStart[child], row - 1, spaceV))
end end
end end

View File

@ -2,7 +2,7 @@
BlizOptionsGroup Container BlizOptionsGroup Container
Simple container widget for the integration of AceGUI into the Blizzard Interface Options Simple container widget for the integration of AceGUI into the Blizzard Interface Options
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
local Type, Version = "BlizOptionsGroup", 26 local Type, Version = "BlizOptionsGroup", 21
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
@ -99,7 +99,7 @@ local methods = {
Constructor Constructor
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
local function Constructor() local function Constructor()
local frame = CreateFrame("Frame", nil, InterfaceOptionsFramePanelContainer) local frame = CreateFrame("Frame")
frame:Hide() frame:Hide()
-- support functions for the Blizzard Interface Options -- support functions for the Blizzard Interface Options
@ -108,11 +108,6 @@ local function Constructor()
frame.default = default frame.default = default
frame.refresh = refresh frame.refresh = refresh
-- 10.0 support function aliases (cancel has been removed)
frame.OnCommit = okay
frame.OnDefault = default
frame.OnRefresh = refresh
frame:SetScript("OnHide", OnHide) frame:SetScript("OnHide", OnHide)
frame:SetScript("OnShow", OnShow) frame:SetScript("OnShow", OnShow)

View File

@ -125,7 +125,7 @@ local function Constructor()
dropdown.frame:Show() dropdown.frame:Show()
dropdown:SetLabel("") dropdown:SetLabel("")
local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
border:SetPoint("TOPLEFT", 0, -26) border:SetPoint("TOPLEFT", 0, -26)
border:SetPoint("BOTTOMRIGHT", 0, 3) border:SetPoint("BOTTOMRIGHT", 0, 3)
border:SetBackdrop(PaneBackdrop) border:SetBackdrop(PaneBackdrop)

View File

@ -1,7 +1,7 @@
--[[----------------------------------------------------------------------------- --[[-----------------------------------------------------------------------------
Frame Container Frame Container
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
local Type, Version = "Frame", 30 local Type, Version = "Frame", 27
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
@ -13,6 +13,10 @@ local wipe = table.wipe
local PlaySound = PlaySound local PlaySound = PlaySound
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: CLOSE
--[[----------------------------------------------------------------------------- --[[-----------------------------------------------------------------------------
Scripts Scripts
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
@ -79,7 +83,6 @@ local methods = {
["OnAcquire"] = function(self) ["OnAcquire"] = function(self)
self.frame:SetParent(UIParent) self.frame:SetParent(UIParent)
self.frame:SetFrameStrata("FULLSCREEN_DIALOG") self.frame:SetFrameStrata("FULLSCREEN_DIALOG")
self.frame:SetFrameLevel(100) -- Lots of room to draw under it
self:SetTitle() self:SetTitle()
self:SetStatusText() self:SetStatusText()
self:ApplyStatus() self:ApplyStatus()
@ -176,21 +179,16 @@ local PaneBackdrop = {
} }
local function Constructor() local function Constructor()
local frame = CreateFrame("Frame", nil, UIParent, "BackdropTemplate") local frame = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil)
frame:Hide() frame:Hide()
frame:EnableMouse(true) frame:EnableMouse(true)
frame:SetMovable(true) frame:SetMovable(true)
frame:SetResizable(true) frame:SetResizable(true)
frame:SetFrameStrata("FULLSCREEN_DIALOG") frame:SetFrameStrata("FULLSCREEN_DIALOG")
frame:SetFrameLevel(100) -- Lots of room to draw under it
frame:SetBackdrop(FrameBackdrop) frame:SetBackdrop(FrameBackdrop)
frame:SetBackdropColor(0, 0, 0, 1) frame:SetBackdropColor(0, 0, 0, 1)
if frame.SetResizeBounds then -- WoW 10.0
frame:SetResizeBounds(400, 200)
else
frame:SetMinResize(400, 200) frame:SetMinResize(400, 200)
end
frame:SetToplevel(true) frame:SetToplevel(true)
frame:SetScript("OnShow", Frame_OnShow) frame:SetScript("OnShow", Frame_OnShow)
frame:SetScript("OnHide", Frame_OnClose) frame:SetScript("OnHide", Frame_OnClose)
@ -203,7 +201,7 @@ local function Constructor()
closebutton:SetWidth(100) closebutton:SetWidth(100)
closebutton:SetText(CLOSE) closebutton:SetText(CLOSE)
local statusbg = CreateFrame("Button", nil, frame, "BackdropTemplate") local statusbg = CreateFrame("Button", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
statusbg:SetPoint("BOTTOMLEFT", 15, 15) statusbg:SetPoint("BOTTOMLEFT", 15, 15)
statusbg:SetPoint("BOTTOMRIGHT", -132, 15) statusbg:SetPoint("BOTTOMRIGHT", -132, 15)
statusbg:SetHeight(24) statusbg:SetHeight(24)
@ -271,7 +269,7 @@ local function Constructor()
line2:SetHeight(8) line2:SetHeight(8)
line2:SetPoint("BOTTOMRIGHT", -8, 8) line2:SetPoint("BOTTOMRIGHT", -8, 8)
line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border
x = 0.1 * 8/17 local x = 0.1 * 8/17
line2:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) line2:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5)
local sizer_s = CreateFrame("Frame", nil, frame) local sizer_s = CreateFrame("Frame", nil, frame)

View File

@ -75,7 +75,7 @@ local function Constructor()
titletext:SetJustifyH("LEFT") titletext:SetJustifyH("LEFT")
titletext:SetHeight(18) titletext:SetHeight(18)
local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
border:SetPoint("TOPLEFT", 0, -17) border:SetPoint("TOPLEFT", 0, -17)
border:SetPoint("BOTTOMRIGHT", -1, 3) border:SetPoint("BOTTOMRIGHT", -1, 3)
border:SetBackdrop(PaneBackdrop) border:SetBackdrop(PaneBackdrop)

View File

@ -2,18 +2,22 @@
TabGroup Container TabGroup Container
Container that uses tabs on top to switch between groups. Container that uses tabs on top to switch between groups.
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
local Type, Version = "TabGroup", 38 local Type, Version = "TabGroup", 37
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs -- Lua APIs
local pairs, ipairs, assert, type, wipe = pairs, ipairs, assert, type, table.wipe local pairs, ipairs, assert, type, wipe = pairs, ipairs, assert, type, wipe
-- WoW APIs -- WoW APIs
local PlaySound = PlaySound local PlaySound = PlaySound
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
local _G = _G local _G = _G
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: PanelTemplates_TabResize, PanelTemplates_SetDisabledTabState, PanelTemplates_SelectTab, PanelTemplates_DeselectTab
-- local upvalue storage used by BuildTabs -- local upvalue storage used by BuildTabs
local widths = {} local widths = {}
local rowwidths = {} local rowwidths = {}
@ -22,143 +26,6 @@ local rowends = {}
--[[----------------------------------------------------------------------------- --[[-----------------------------------------------------------------------------
Support functions Support functions
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
local function PanelTemplates_TabResize(tab, padding, absoluteSize, minWidth, maxWidth, absoluteTextSize)
local tabName = tab:GetName();
local buttonMiddle = tab.Middle or tab.middleTexture or _G[tabName.."Middle"];
local buttonMiddleDisabled = tab.MiddleDisabled or (tabName and _G[tabName.."MiddleDisabled"]);
local left = tab.Left or tab.leftTexture or _G[tabName.."Left"];
local sideWidths = 2 * left:GetWidth();
local tabText = tab.Text or _G[tab:GetName().."Text"];
local highlightTexture = tab.HighlightTexture or (tabName and _G[tabName.."HighlightTexture"]);
local width, tabWidth;
local textWidth;
if ( absoluteTextSize ) then
textWidth = absoluteTextSize;
else
tabText:SetWidth(0);
textWidth = tabText:GetWidth();
end
-- If there's an absolute size specified then use it
if ( absoluteSize ) then
if ( absoluteSize < sideWidths) then
width = 1;
tabWidth = sideWidths
else
width = absoluteSize - sideWidths;
tabWidth = absoluteSize
end
tabText:SetWidth(width);
else
-- Otherwise try to use padding
if ( padding ) then
width = textWidth + padding;
else
width = textWidth + 24;
end
-- If greater than the maxWidth then cap it
if ( maxWidth and width > maxWidth ) then
if ( padding ) then
width = maxWidth + padding;
else
width = maxWidth + 24;
end
tabText:SetWidth(width);
else
tabText:SetWidth(0);
end
if (minWidth and width < minWidth) then
width = minWidth;
end
tabWidth = width + sideWidths;
end
if ( buttonMiddle ) then
buttonMiddle:SetWidth(width);
end
if ( buttonMiddleDisabled ) then
buttonMiddleDisabled:SetWidth(width);
end
tab:SetWidth(tabWidth);
if ( highlightTexture ) then
highlightTexture:SetWidth(tabWidth);
end
end
local function PanelTemplates_DeselectTab(tab)
local name = tab:GetName();
local left = tab.Left or _G[name.."Left"];
local middle = tab.Middle or _G[name.."Middle"];
local right = tab.Right or _G[name.."Right"];
left:Show();
middle:Show();
right:Show();
--tab:UnlockHighlight();
tab:Enable();
local text = tab.Text or _G[name.."Text"];
text:SetPoint("CENTER", tab, "CENTER", (tab.deselectedTextX or 0), (tab.deselectedTextY or 2));
local leftDisabled = tab.LeftDisabled or _G[name.."LeftDisabled"];
local middleDisabled = tab.MiddleDisabled or _G[name.."MiddleDisabled"];
local rightDisabled = tab.RightDisabled or _G[name.."RightDisabled"];
leftDisabled:Hide();
middleDisabled:Hide();
rightDisabled:Hide();
end
local function PanelTemplates_SelectTab(tab)
local name = tab:GetName();
local left = tab.Left or _G[name.."Left"];
local middle = tab.Middle or _G[name.."Middle"];
local right = tab.Right or _G[name.."Right"];
left:Hide();
middle:Hide();
right:Hide();
--tab:LockHighlight();
tab:Disable();
tab:SetDisabledFontObject(GameFontHighlightSmall);
local text = tab.Text or _G[name.."Text"];
text:SetPoint("CENTER", tab, "CENTER", (tab.selectedTextX or 0), (tab.selectedTextY or -3));
local leftDisabled = tab.LeftDisabled or _G[name.."LeftDisabled"];
local middleDisabled = tab.MiddleDisabled or _G[name.."MiddleDisabled"];
local rightDisabled = tab.RightDisabled or _G[name.."RightDisabled"];
leftDisabled:Show();
middleDisabled:Show();
rightDisabled:Show();
if GameTooltip:IsOwned(tab) then
GameTooltip:Hide();
end
end
local function PanelTemplates_SetDisabledTabState(tab)
local name = tab:GetName();
local left = tab.Left or _G[name.."Left"];
local middle = tab.Middle or _G[name.."Middle"];
local right = tab.Right or _G[name.."Right"];
left:Show();
middle:Show();
right:Show();
--tab:UnlockHighlight();
tab:Disable();
tab.text = tab:GetText();
-- Gray out text
tab:SetDisabledFontObject(GameFontDisableSmall);
local leftDisabled = tab.LeftDisabled or _G[name.."LeftDisabled"];
local middleDisabled = tab.MiddleDisabled or _G[name.."MiddleDisabled"];
local rightDisabled = tab.RightDisabled or _G[name.."RightDisabled"];
leftDisabled:Hide();
middleDisabled:Hide();
rightDisabled:Hide();
end
local function UpdateTabLook(frame) local function UpdateTabLook(frame)
if frame.disabled then if frame.disabled then
PanelTemplates_SetDisabledTabState(frame) PanelTemplates_SetDisabledTabState(frame)
@ -236,64 +103,11 @@ local methods = {
["CreateTab"] = function(self, id) ["CreateTab"] = function(self, id)
local tabname = ("AceGUITabGroup%dTab%d"):format(self.num, id) local tabname = ("AceGUITabGroup%dTab%d"):format(self.num, id)
local tab = CreateFrame("Button", tabname, self.border) local tab = CreateFrame("Button", tabname, self.border, "OptionsFrameTabButtonTemplate")
tab:SetSize(115, 24)
tab.deselectedTextY = -3
tab.selectedTextY = -2
tab.LeftDisabled = tab:CreateTexture(tabname .. "LeftDisabled", "BORDER")
tab.LeftDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab")
tab.LeftDisabled:SetSize(20, 24)
tab.LeftDisabled:SetPoint("BOTTOMLEFT", 0, -3)
tab.LeftDisabled:SetTexCoord(0, 0.15625, 0, 1.0)
tab.MiddleDisabled = tab:CreateTexture(tabname .. "MiddleDisabled", "BORDER")
tab.MiddleDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab")
tab.MiddleDisabled:SetSize(88, 24)
tab.MiddleDisabled:SetPoint("LEFT", tab.LeftDisabled, "RIGHT")
tab.MiddleDisabled:SetTexCoord(0.15625, 0.84375, 0, 1.0)
tab.RightDisabled = tab:CreateTexture(tabname .. "RightDisabled", "BORDER")
tab.RightDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab")
tab.RightDisabled:SetSize(20, 24)
tab.RightDisabled:SetPoint("LEFT", tab.MiddleDisabled, "RIGHT")
tab.RightDisabled:SetTexCoord(0.84375, 1.0, 0, 1.0)
tab.Left = tab:CreateTexture(tabname .. "Left", "BORDER")
tab.Left:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab")
tab.Left:SetSize(20, 24)
tab.Left:SetPoint("TOPLEFT")
tab.Left:SetTexCoord(0, 0.15625, 0, 1.0)
tab.Middle = tab:CreateTexture(tabname .. "Middle", "BORDER")
tab.Middle:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab")
tab.Middle:SetSize(88, 24)
tab.Middle:SetPoint("LEFT", tab.Left, "RIGHT")
tab.Middle:SetTexCoord(0.15625, 0.84375, 0, 1.0)
tab.Right = tab:CreateTexture(tabname .. "Right", "BORDER")
tab.Right:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab")
tab.Right:SetSize(20, 24)
tab.Right:SetPoint("LEFT", tab.Middle, "RIGHT")
tab.Right:SetTexCoord(0.84375, 1.0, 0, 1.0)
tab.Text = tab:CreateFontString(tabname .. "Text")
tab:SetFontString(tab.Text)
tab:SetNormalFontObject(GameFontNormalSmall)
tab:SetHighlightFontObject(GameFontHighlightSmall)
tab:SetDisabledFontObject(GameFontHighlightSmall)
tab:SetHighlightTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight", "ADD")
tab.HighlightTexture = tab:GetHighlightTexture()
tab.HighlightTexture:ClearAllPoints()
tab.HighlightTexture:SetPoint("LEFT", tab, "LEFT", 10, -4)
tab.HighlightTexture:SetPoint("RIGHT", tab, "RIGHT", -10, -4)
_G[tabname .. "HighlightTexture"] = tab.HighlightTexture
tab.obj = self tab.obj = self
tab.id = id tab.id = id
tab.text = tab.Text -- compat tab.text = _G[tabname .. "Text"]
tab.text:ClearAllPoints() tab.text:ClearAllPoints()
tab.text:SetPoint("LEFT", 14, -3) tab.text:SetPoint("LEFT", 14, -3)
tab.text:SetPoint("RIGHT", -12, -3) tab.text:SetPoint("RIGHT", -12, -3)
@ -502,7 +316,7 @@ local function Constructor()
titletext:SetHeight(18) titletext:SetHeight(18)
titletext:SetText("") titletext:SetText("")
local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
border:SetPoint("TOPLEFT", 1, -27) border:SetPoint("TOPLEFT", 1, -27)
border:SetPoint("BOTTOMRIGHT", -1, 3) border:SetPoint("BOTTOMRIGHT", -1, 3)
border:SetBackdrop(PaneBackdrop) border:SetBackdrop(PaneBackdrop)

View File

@ -2,18 +2,22 @@
TreeGroup Container TreeGroup Container
Container that uses a tree control to switch between groups. Container that uses a tree control to switch between groups.
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
local Type, Version = "TreeGroup", 47 local Type, Version = "TreeGroup", 45
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs -- Lua APIs
local next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type local next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type
local math_min, math_max, floor = math.min, math.max, math.floor local math_min, math_max, floor = math.min, math.max, floor
local select, tremove, unpack, tconcat = select, table.remove, unpack, table.concat local select, tremove, unpack, tconcat = select, table.remove, unpack, table.concat
-- WoW APIs -- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: FONT_COLOR_CODE_CLOSE
-- Recycling functions -- Recycling functions
local new, del local new, del
do do
@ -563,11 +567,7 @@ local methods = {
if maxtreewidth > 100 and status.treewidth > maxtreewidth then if maxtreewidth > 100 and status.treewidth > maxtreewidth then
self:SetTreeWidth(maxtreewidth, status.treesizable) self:SetTreeWidth(maxtreewidth, status.treesizable)
end end
if treeframe.SetResizeBounds then
treeframe:SetResizeBounds(100, 1, maxtreewidth, 1600)
else
treeframe:SetMaxResize(maxtreewidth, 1600) treeframe:SetMaxResize(maxtreewidth, 1600)
end
end, end,
["OnHeightSet"] = function(self, height) ["OnHeightSet"] = function(self, height)
@ -637,7 +637,7 @@ local function Constructor()
local num = AceGUI:GetNextWidgetNum(Type) local num = AceGUI:GetNextWidgetNum(Type)
local frame = CreateFrame("Frame", nil, UIParent) local frame = CreateFrame("Frame", nil, UIParent)
local treeframe = CreateFrame("Frame", nil, frame, "BackdropTemplate") local treeframe = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
treeframe:SetPoint("TOPLEFT") treeframe:SetPoint("TOPLEFT")
treeframe:SetPoint("BOTTOMLEFT") treeframe:SetPoint("BOTTOMLEFT")
treeframe:SetWidth(DEFAULT_TREE_WIDTH) treeframe:SetWidth(DEFAULT_TREE_WIDTH)
@ -646,17 +646,13 @@ local function Constructor()
treeframe:SetBackdropColor(0.1, 0.1, 0.1, 0.5) treeframe:SetBackdropColor(0.1, 0.1, 0.1, 0.5)
treeframe:SetBackdropBorderColor(0.4, 0.4, 0.4) treeframe:SetBackdropBorderColor(0.4, 0.4, 0.4)
treeframe:SetResizable(true) treeframe:SetResizable(true)
if treeframe.SetResizeBounds then -- WoW 10.0
treeframe:SetResizeBounds(100, 1, 400, 1600)
else
treeframe:SetMinResize(100, 1) treeframe:SetMinResize(100, 1)
treeframe:SetMaxResize(400, 1600) treeframe:SetMaxResize(400, 1600)
end
treeframe:SetScript("OnUpdate", FirstFrameUpdate) treeframe:SetScript("OnUpdate", FirstFrameUpdate)
treeframe:SetScript("OnSizeChanged", Tree_OnSizeChanged) treeframe:SetScript("OnSizeChanged", Tree_OnSizeChanged)
treeframe:SetScript("OnMouseWheel", Tree_OnMouseWheel) treeframe:SetScript("OnMouseWheel", Tree_OnMouseWheel)
local dragger = CreateFrame("Frame", nil, treeframe, "BackdropTemplate") local dragger = CreateFrame("Frame", nil, treeframe, BackdropTemplateMixin and "BackdropTemplate" or nil)
dragger:SetWidth(8) dragger:SetWidth(8)
dragger:SetPoint("TOP", treeframe, "TOPRIGHT") dragger:SetPoint("TOP", treeframe, "TOPRIGHT")
dragger:SetPoint("BOTTOM", treeframe, "BOTTOMRIGHT") dragger:SetPoint("BOTTOM", treeframe, "BOTTOMRIGHT")
@ -681,7 +677,7 @@ local function Constructor()
scrollbg:SetAllPoints(scrollbar) scrollbg:SetAllPoints(scrollbar)
scrollbg:SetColorTexture(0,0,0,0.4) scrollbg:SetColorTexture(0,0,0,0.4)
local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
border:SetPoint("TOPLEFT", treeframe, "TOPRIGHT") border:SetPoint("TOPLEFT", treeframe, "TOPRIGHT")
border:SetPoint("BOTTOMRIGHT") border:SetPoint("BOTTOMRIGHT")
border:SetBackdrop(PaneBackdrop) border:SetBackdrop(PaneBackdrop)

View File

@ -7,6 +7,10 @@ local pairs, assert, type = pairs, assert, type
local PlaySound = PlaySound local PlaySound = PlaySound
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: GameFontNormal
---------------- ----------------
-- Main Frame -- -- Main Frame --
---------------- ----------------
@ -17,7 +21,7 @@ local CreateFrame, UIParent = CreateFrame, UIParent
]] ]]
do do
local Type = "Window" local Type = "Window"
local Version = 8 local Version = 6
local function frameOnShow(this) local function frameOnShow(this)
this.obj:Fire("OnShow") this.obj:Fire("OnShow")
@ -182,11 +186,7 @@ do
frame:SetScript("OnShow",frameOnShow) frame:SetScript("OnShow",frameOnShow)
frame:SetScript("OnHide",frameOnClose) frame:SetScript("OnHide",frameOnClose)
if frame.SetResizeBounds then -- WoW 10.0
frame:SetResizeBounds(240,240)
else
frame:SetMinResize(240,240) frame:SetMinResize(240,240)
end
frame:SetToplevel(true) frame:SetToplevel(true)
local titlebg = frame:CreateTexture(nil, "BACKGROUND") local titlebg = frame:CreateTexture(nil, "BACKGROUND")
@ -300,7 +300,7 @@ do
line2:SetHeight(8) line2:SetHeight(8)
line2:SetPoint("BOTTOMRIGHT", -8, 8) line2:SetPoint("BOTTOMRIGHT", -8, 8)
line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border
x = 0.1 * 8/17 local x = 0.1 * 8/17
line2:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) line2:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5)
local sizer_s = CreateFrame("Frame",nil,frame) local sizer_s = CreateFrame("Frame",nil,frame)

View File

@ -12,6 +12,10 @@ local select, pairs = select, pairs
local PlaySound = PlaySound local PlaySound = PlaySound
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: SetDesaturation, GameFontHighlight
--[[----------------------------------------------------------------------------- --[[-----------------------------------------------------------------------------
Support functions Support functions
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
@ -195,14 +199,14 @@ local methods = {
["SetDescription"] = function(self, desc) ["SetDescription"] = function(self, desc)
if desc then if desc then
if not self.desc then if not self.desc then
local f = self.frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall") local desc = self.frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall")
f:ClearAllPoints() desc:ClearAllPoints()
f:SetPoint("TOPLEFT", self.checkbg, "TOPRIGHT", 5, -21) desc:SetPoint("TOPLEFT", self.checkbg, "TOPRIGHT", 5, -21)
f:SetWidth(self.frame.width - 30) desc:SetWidth(self.frame.width - 30)
f:SetPoint("RIGHT", self.frame, "RIGHT", -30, 0) desc:SetPoint("RIGHT", self.frame, "RIGHT", -30, 0)
f:SetJustifyH("LEFT") desc:SetJustifyH("LEFT")
f:SetJustifyV("TOP") desc:SetJustifyV("TOP")
self.desc = f self.desc = desc
end end
self.desc:Show() self.desc:Show()
--self.text:SetFontObject(GameFontNormal) --self.text:SetFontObject(GameFontNormal)

View File

@ -11,6 +11,10 @@ local pairs = pairs
-- WoW APIs -- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: ColorPickerFrame, OpacitySliderFrame
--[[----------------------------------------------------------------------------- --[[-----------------------------------------------------------------------------
Support functions Support functions
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]

View File

@ -1,4 +1,4 @@
--[[ $Id: AceGUIWidget-DropDown-Items.lua 1272 2022-08-29 15:56:35Z nevcairiel $ ]]-- --[[ $Id: AceGUIWidget-DropDown-Items.lua 1202 2019-05-15 23:11:22Z nevcairiel $ ]]--
local AceGUI = LibStub("AceGUI-3.0") local AceGUI = LibStub("AceGUI-3.0")
@ -41,7 +41,7 @@ local ItemBase = {
-- NOTE: The ItemBase version is added to each item's version number -- NOTE: The ItemBase version is added to each item's version number
-- to ensure proper updates on ItemBase changes. -- to ensure proper updates on ItemBase changes.
-- Use at least 1000er steps. -- Use at least 1000er steps.
version = 2000, version = 1000,
counter = 0, counter = 0,
} }
@ -178,7 +178,7 @@ function ItemBase.Create(type)
highlight:Hide() highlight:Hide()
self.highlight = highlight self.highlight = highlight
local check = frame:CreateTexture(nil, "OVERLAY") local check = frame:CreateTexture("OVERLAY")
check:SetWidth(16) check:SetWidth(16)
check:SetHeight(16) check:SetHeight(16)
check:SetPoint("LEFT",frame,"LEFT",3,-1) check:SetPoint("LEFT",frame,"LEFT",3,-1)
@ -186,7 +186,7 @@ function ItemBase.Create(type)
check:Hide() check:Hide()
self.check = check self.check = check
local sub = frame:CreateTexture(nil, "OVERLAY") local sub = frame:CreateTexture("OVERLAY")
sub:SetWidth(16) sub:SetWidth(16)
sub:SetHeight(16) sub:SetHeight(16)
sub:SetPoint("RIGHT",frame,"RIGHT",-3,-1) sub:SetPoint("RIGHT",frame,"RIGHT",-3,-1)

View File

@ -1,4 +1,4 @@
--[[ $Id: AceGUIWidget-DropDown.lua 1284 2022-09-25 09:15:30Z nevcairiel $ ]]-- --[[ $Id: AceGUIWidget-DropDown.lua 1239 2020-09-20 10:22:02Z nevcairiel $ ]]--
local AceGUI = LibStub("AceGUI-3.0") local AceGUI = LibStub("AceGUI-3.0")
-- Lua APIs -- Lua APIs
@ -11,6 +11,10 @@ local PlaySound = PlaySound
local UIParent, CreateFrame = UIParent, CreateFrame local UIParent, CreateFrame = UIParent, CreateFrame
local _G = _G local _G = _G
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: CLOSE
local function fixlevels(parent,...) local function fixlevels(parent,...)
local i = 1 local i = 1
local child = select(i, ...) local child = select(i, ...)
@ -249,7 +253,7 @@ do
local function Constructor() local function Constructor()
local count = AceGUI:GetNextWidgetNum(widgetType) local count = AceGUI:GetNextWidgetNum(widgetType)
local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent, "BackdropTemplate") local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil)
local self = {} local self = {}
self.count = count self.count = count
self.type = widgetType self.type = widgetType
@ -300,7 +304,7 @@ do
scrollFrame.obj = self scrollFrame.obj = self
itemFrame.obj = self itemFrame.obj = self
local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame, "BackdropTemplate") local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame, BackdropTemplateMixin and "BackdropTemplate" or nil)
slider:SetOrientation("VERTICAL") slider:SetOrientation("VERTICAL")
slider:SetHitRectInsets(0, 0, -10, 0) slider:SetHitRectInsets(0, 0, -10, 0)
slider:SetBackdrop(sliderBackdrop) slider:SetBackdrop(sliderBackdrop)
@ -347,7 +351,7 @@ end
do do
local widgetType = "Dropdown" local widgetType = "Dropdown"
local widgetVersion = 36 local widgetVersion = 35
--[[ Static data ]]-- --[[ Static data ]]--
@ -372,6 +376,7 @@ do
local function Dropdown_TogglePullout(this) local function Dropdown_TogglePullout(this)
local self = this.obj local self = this.obj
PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON
if self.open then if self.open then
self.open = nil self.open = nil
self.pullout:Close() self.pullout:Close()

View File

@ -14,6 +14,10 @@ local GetCursorInfo, ClearCursor, GetSpellInfo = GetCursorInfo, ClearCursor, Get
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
local _G = _G local _G = _G
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: AceGUIEditBoxInsertLink, ChatFontNormal, OKAY
--[[----------------------------------------------------------------------------- --[[-----------------------------------------------------------------------------
Support functions Support functions
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]

View File

@ -13,6 +13,10 @@ local pairs = pairs
local IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown = IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown local IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown = IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: NOT_BOUND
--[[----------------------------------------------------------------------------- --[[-----------------------------------------------------------------------------
Scripts Scripts
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
@ -210,7 +214,7 @@ local function Constructor()
label:SetJustifyH("CENTER") label:SetJustifyH("CENTER")
label:SetHeight(18) label:SetHeight(18)
local msgframe = CreateFrame("Frame", nil, UIParent, "BackdropTemplate") local msgframe = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil)
msgframe:SetHeight(30) msgframe:SetHeight(30)
msgframe:SetBackdrop(ControlBackdrop) msgframe:SetBackdrop(ControlBackdrop)
msgframe:SetBackdropColor(0,0,0) msgframe:SetBackdropColor(0,0,0)

View File

@ -2,7 +2,7 @@
Label Widget Label Widget
Displays text and optionally an icon. Displays text and optionally an icon.
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
local Type, Version = "Label", 28 local Type, Version = "Label", 27
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
@ -12,6 +12,10 @@ local max, select, pairs = math.max, select, pairs
-- WoW APIs -- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: GameFontHighlightSmall
--[[----------------------------------------------------------------------------- --[[-----------------------------------------------------------------------------
Support functions Support functions
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
@ -125,16 +129,12 @@ local methods = {
end, end,
["SetFont"] = function(self, font, height, flags) ["SetFont"] = function(self, font, height, flags)
if not self.fontObject then self.label:SetFont(font, height, flags)
self.fontObject = CreateFont("AceGUI30LabelFont" .. AceGUI:GetNextWidgetNum(Type)) UpdateImageAnchor(self)
end
self.fontObject:SetFont(font, height, flags)
self:SetFontObject(self.fontObject)
end, end,
["SetFontObject"] = function(self, font) ["SetFontObject"] = function(self, font)
self.label:SetFontObject(font or GameFontHighlightSmall) self:SetFont((font or GameFontHighlightSmall):GetFont())
UpdateImageAnchor(self)
end, end,
["SetImageSize"] = function(self, width, height) ["SetImageSize"] = function(self, width, height)

View File

@ -1,4 +1,4 @@
local Type, Version = "MultiLineEditBox", 32 local Type, Version = "MultiLineEditBox", 29
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
@ -10,6 +10,10 @@ local GetCursorInfo, GetSpellInfo, ClearCursor = GetCursorInfo, GetSpellInfo, Cl
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
local _G = _G local _G = _G
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: ACCEPT, ChatFontNormal
--[[----------------------------------------------------------------------------- --[[-----------------------------------------------------------------------------
Support functions Support functions
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
@ -141,14 +145,6 @@ local function OnVerticalScroll(self, offset)
editBox:SetHitRectInsets(0, 0, offset, editBox:GetHeight() - offset - self:GetHeight()) editBox:SetHitRectInsets(0, 0, offset, editBox:GetHeight() - offset - self:GetHeight())
end end
local function OnScrollRangeChanged(self, xrange, yrange)
if yrange == 0 then
self.obj.editBox:SetHitRectInsets(0, 0, 0, 0)
else
OnVerticalScroll(self, self:GetVerticalScroll())
end
end
local function OnShowFocus(frame) local function OnShowFocus(frame)
frame.obj.editBox:SetFocus() frame.obj.editBox:SetFocus()
frame:SetScript("OnShow", nil) frame:SetScript("OnShow", nil)
@ -261,6 +257,8 @@ local methods = {
["SetCursorPosition"] = function(self, ...) ["SetCursorPosition"] = function(self, ...)
return self.editBox:SetCursorPosition(...) return self.editBox:SetCursorPosition(...)
end, end,
} }
--[[----------------------------------------------------------------------------- --[[-----------------------------------------------------------------------------
@ -299,7 +297,7 @@ local function Constructor()
text:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -5, 1) text:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -5, 1)
text:SetJustifyV("MIDDLE") text:SetJustifyV("MIDDLE")
local scrollBG = CreateFrame("Frame", nil, frame, "BackdropTemplate") local scrollBG = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
scrollBG:SetBackdrop(backdrop) scrollBG:SetBackdrop(backdrop)
scrollBG:SetBackdropColor(0, 0, 0) scrollBG:SetBackdropColor(0, 0, 0)
scrollBG:SetBackdropBorderColor(0.4, 0.4, 0.4) scrollBG:SetBackdropBorderColor(0.4, 0.4, 0.4)
@ -323,7 +321,6 @@ local function Constructor()
scrollFrame:SetScript("OnReceiveDrag", OnReceiveDrag) scrollFrame:SetScript("OnReceiveDrag", OnReceiveDrag)
scrollFrame:SetScript("OnSizeChanged", OnSizeChanged) scrollFrame:SetScript("OnSizeChanged", OnSizeChanged)
scrollFrame:HookScript("OnVerticalScroll", OnVerticalScroll) scrollFrame:HookScript("OnVerticalScroll", OnVerticalScroll)
scrollFrame:HookScript("OnScrollRangeChanged", OnScrollRangeChanged)
local editBox = CreateFrame("EditBox", ("%s%dEdit"):format(Type, widgetNum), scrollFrame) local editBox = CreateFrame("EditBox", ("%s%dEdit"):format(Type, widgetNum), scrollFrame)
editBox:SetAllPoints() editBox:SetAllPoints()

View File

@ -14,6 +14,10 @@ local tonumber, pairs = tonumber, pairs
local PlaySound = PlaySound local PlaySound = PlaySound
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: GameFontHighlightSmall
--[[----------------------------------------------------------------------------- --[[-----------------------------------------------------------------------------
Support functions Support functions
-------------------------------------------------------------------------------]] -------------------------------------------------------------------------------]]
@ -27,13 +31,13 @@ local function UpdateText(self)
end end
local function UpdateLabels(self) local function UpdateLabels(self)
local min_value, max_value = (self.min or 0), (self.max or 100) local min, max = (self.min or 0), (self.max or 100)
if self.ispercent then if self.ispercent then
self.lowtext:SetFormattedText("%s%%", (min_value * 100)) self.lowtext:SetFormattedText("%s%%", (min * 100))
self.hightext:SetFormattedText("%s%%", (max_value * 100)) self.hightext:SetFormattedText("%s%%", (max * 100))
else else
self.lowtext:SetText(min_value) self.lowtext:SetText(min)
self.hightext:SetText(max_value) self.hightext:SetText(max)
end end
end end
@ -171,13 +175,13 @@ local methods = {
self.label:SetText(text) self.label:SetText(text)
end, end,
["SetSliderValues"] = function(self, min_value, max_value, step) ["SetSliderValues"] = function(self, min, max, step)
local frame = self.slider local frame = self.slider
frame.setup = true frame.setup = true
self.min = min_value self.min = min
self.max = max_value self.max = max
self.step = step self.step = step
frame:SetMinMaxValues(min_value or 0,max_value or 100) frame:SetMinMaxValues(min or 0,max or 100)
UpdateLabels(self) UpdateLabels(self)
frame:SetValueStep(step or 1) frame:SetValueStep(step or 1)
if self.value then if self.value then
@ -221,7 +225,7 @@ local function Constructor()
label:SetJustifyH("CENTER") label:SetJustifyH("CENTER")
label:SetHeight(15) label:SetHeight(15)
local slider = CreateFrame("Slider", nil, frame, "BackdropTemplate") local slider = CreateFrame("Slider", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
slider:SetOrientation("HORIZONTAL") slider:SetOrientation("HORIZONTAL")
slider:SetHeight(15) slider:SetHeight(15)
slider:SetHitRectInsets(0, 0, -10, 0) slider:SetHitRectInsets(0, 0, -10, 0)
@ -243,7 +247,7 @@ local function Constructor()
local hightext = slider:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall") local hightext = slider:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall")
hightext:SetPoint("TOPRIGHT", slider, "BOTTOMRIGHT", -2, 3) hightext:SetPoint("TOPRIGHT", slider, "BOTTOMRIGHT", -2, 3)
local editbox = CreateFrame("EditBox", nil, frame, "BackdropTemplate") local editbox = CreateFrame("EditBox", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil)
editbox:SetAutoFocus(false) editbox:SetAutoFocus(false)
editbox:SetFontObject(GameFontHighlightSmall) editbox:SetFontObject(GameFontHighlightSmall)
editbox:SetPoint("TOP", slider, "BOTTOM") editbox:SetPoint("TOP", slider, "BOTTOM")

View File

@ -9,8 +9,8 @@
-- make into AceHook. -- make into AceHook.
-- @class file -- @class file
-- @name AceHook-3.0 -- @name AceHook-3.0
-- @release $Id: AceHook-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ -- @release $Id: AceHook-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $
local ACEHOOK_MAJOR, ACEHOOK_MINOR = "AceHook-3.0", 9 local ACEHOOK_MAJOR, ACEHOOK_MINOR = "AceHook-3.0", 8
local AceHook, oldminor = LibStub:NewLibrary(ACEHOOK_MAJOR, ACEHOOK_MINOR) local AceHook, oldminor = LibStub:NewLibrary(ACEHOOK_MAJOR, ACEHOOK_MINOR)
if not AceHook then return end -- No upgrade needed if not AceHook then return end -- No upgrade needed
@ -195,6 +195,7 @@ function hook(self, obj, method, handler, script, secure, raw, forceSecure, usag
registry[self][method] = nil registry[self][method] = nil
end end
handlers[uid], actives[uid], scripts[uid] = nil, nil, nil handlers[uid], actives[uid], scripts[uid] = nil, nil, nil
uid = nil
end end
local orig local orig
@ -477,10 +478,10 @@ function AceHook:UnhookAll()
for key, value in pairs(registry[self]) do for key, value in pairs(registry[self]) do
if type(key) == "table" then if type(key) == "table" then
for method in pairs(value) do for method in pairs(value) do
AceHook.Unhook(self, key, method) self:Unhook(key, method)
end end
else else
AceHook.Unhook(self, key) self:Unhook(key)
end end
end end
end end

View File

@ -10,7 +10,7 @@
-- make into AceSerializer. -- make into AceSerializer.
-- @class file -- @class file
-- @name AceSerializer-3.0 -- @name AceSerializer-3.0
-- @release $Id: AceSerializer-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ -- @release $Id: AceSerializer-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $
local MAJOR,MINOR = "AceSerializer-3.0", 5 local MAJOR,MINOR = "AceSerializer-3.0", 5
local AceSerializer, oldminor = LibStub:NewLibrary(MAJOR, MINOR) local AceSerializer, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
@ -83,9 +83,9 @@ local function SerializeValue(v, res, nres)
elseif t=="table" then -- ^T...^t = table (list of key,value pairs) elseif t=="table" then -- ^T...^t = table (list of key,value pairs)
nres=nres+1 nres=nres+1
res[nres] = "^T" res[nres] = "^T"
for key,value in pairs(v) do for k,v in pairs(v) do
nres = SerializeValue(key, res, nres) nres = SerializeValue(k, res, nres)
nres = SerializeValue(value, res, nres) nres = SerializeValue(v, res, nres)
end end
nres=nres+1 nres=nres+1
res[nres] = "^t" res[nres] = "^t"

View File

@ -15,7 +15,7 @@
-- make into AceTimer. -- make into AceTimer.
-- @class file -- @class file
-- @name AceTimer-3.0 -- @name AceTimer-3.0
-- @release $Id: AceTimer-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ -- @release $Id: AceTimer-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $
local MAJOR, MINOR = "AceTimer-3.0", 17 -- Bump minor on changes local MAJOR, MINOR = "AceTimer-3.0", 17 -- Bump minor on changes
local AceTimer, oldminor = LibStub:NewLibrary(MAJOR, MINOR) local AceTimer, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
@ -61,11 +61,11 @@ local function new(self, loop, func, delay, ...)
-- Compensate delay to get a perfect average delay, even if individual times don't match up perfectly -- Compensate delay to get a perfect average delay, even if individual times don't match up perfectly
-- due to fps differences -- due to fps differences
local time = GetTime() local time = GetTime()
local ndelay = timer.delay - (time - timer.ends) local delay = timer.delay - (time - timer.ends)
-- Ensure the delay doesn't go below the threshold -- Ensure the delay doesn't go below the threshold
if ndelay < 0.01 then ndelay = 0.01 end if delay < 0.01 then delay = 0.01 end
C_TimerAfter(ndelay, timer.callback) C_TimerAfter(delay, timer.callback)
timer.ends = time + ndelay timer.ends = time + delay
else else
activeTimers[timer.handle or timer] = nil activeTimers[timer.handle or timer] = nil
end end

View File

@ -1,26 +1,61 @@
--[[ $Id: CallbackHandler-1.0.lua 1298 2022-12-12 15:10:10Z nevcairiel $ ]] --[[ $Id: CallbackHandler-1.0.lua 3 2008-09-29 16:54:20Z nevcairiel $ ]]
local MAJOR, MINOR = "CallbackHandler-1.0", 8 local MAJOR, MINOR = "CallbackHandler-1.0", 3
local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR) local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR)
if not CallbackHandler then return end -- No upgrade needed if not CallbackHandler then return end -- No upgrade needed
local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end} local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end}
-- Lua APIs local type = type
local securecallfunction, error = securecallfunction, error local pcall = pcall
local setmetatable, rawget = setmetatable, rawget local pairs = pairs
local next, select, pairs, type, tostring = next, select, pairs, type, tostring local assert = assert
local concat = table.concat
local loadstring = loadstring
local next = next
local select = select
local type = type
local xpcall = xpcall
local function errorhandler(err)
return geterrorhandler()(err)
end
local function Dispatch(handlers, ...) local function CreateDispatcher(argCount)
local index, method = next(handlers) local code = [[
local next, xpcall, eh = ...
local method, ARGS
local function call() method(ARGS) end
local function dispatch(handlers, ...)
local index
index, method = next(handlers)
if not method then return end if not method then return end
local OLD_ARGS = ARGS
ARGS = ...
repeat repeat
securecallfunction(method, ...) xpcall(call, eh)
index, method = next(handlers, index) index, method = next(handlers, index)
until not method until not method
ARGS = OLD_ARGS
end
return dispatch
]]
local ARGS, OLD_ARGS = {}, {}
for i = 1, argCount do ARGS[i], OLD_ARGS[i] = "arg"..i, "old_arg"..i end
code = code:gsub("OLD_ARGS", concat(OLD_ARGS, ", ")):gsub("ARGS", concat(ARGS, ", "))
return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(next, xpcall, errorhandler)
end end
local Dispatchers = setmetatable({}, {__index=function(self, argCount)
local dispatcher = CreateDispatcher(argCount)
rawset(self, argCount, dispatcher)
return dispatcher
end})
-------------------------------------------------------------------------- --------------------------------------------------------------------------
-- CallbackHandler:New -- CallbackHandler:New
-- --
@ -29,7 +64,9 @@ end
-- UnregisterName - name of the callback unregistration API, default "UnregisterCallback" -- UnregisterName - name of the callback unregistration API, default "UnregisterCallback"
-- UnregisterAllName - name of the API to unregister all callbacks, default "UnregisterAllCallbacks". false == don't publish this API. -- UnregisterAllName - name of the API to unregister all callbacks, default "UnregisterAllCallbacks". false == don't publish this API.
function CallbackHandler.New(_self, target, RegisterName, UnregisterName, UnregisterAllName) function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName, OnUsed, OnUnused)
-- TODO: Remove this after beta has gone out
assert(not OnUsed and not OnUnused, "ACE-80: OnUsed/OnUnused are deprecated. Callbacks are now done to registry.OnUsed and registry.OnUnused")
RegisterName = RegisterName or "RegisterCallback" RegisterName = RegisterName or "RegisterCallback"
UnregisterName = UnregisterName or "UnregisterCallback" UnregisterName = UnregisterName or "UnregisterCallback"
@ -51,19 +88,19 @@ function CallbackHandler.New(_self, target, RegisterName, UnregisterName, Unregi
local oldrecurse = registry.recurse local oldrecurse = registry.recurse
registry.recurse = oldrecurse + 1 registry.recurse = oldrecurse + 1
Dispatch(events[eventname], eventname, ...) Dispatchers[select('#', ...) + 1](events[eventname], eventname, ...)
registry.recurse = oldrecurse registry.recurse = oldrecurse
if registry.insertQueue and oldrecurse==0 then if registry.insertQueue and oldrecurse==0 then
-- Something in one of our callbacks wanted to register more callbacks; they got queued -- Something in one of our callbacks wanted to register more callbacks; they got queued
for event,callbacks in pairs(registry.insertQueue) do for eventname,callbacks in pairs(registry.insertQueue) do
local first = not rawget(events, event) or not next(events[event]) -- test for empty before. not test for one member after. that one member may have been overwritten. local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten.
for object,func in pairs(callbacks) do for self,func in pairs(callbacks) do
events[event][object] = func events[eventname][self] = func
-- fire OnUsed callback? -- fire OnUsed callback?
if first and registry.OnUsed then if first and registry.OnUsed then
registry.OnUsed(registry, target, event) registry.OnUsed(registry, target, eventname)
first = nil first = nil
end end
end end
@ -109,9 +146,9 @@ function CallbackHandler.New(_self, target, RegisterName, UnregisterName, Unregi
regfunc = function(...) self[method](self,...) end regfunc = function(...) self[method](self,...) end
end end
else else
-- function ref with self=object or self="addonId" or self=thread -- function ref with self=object or self="addonId"
if type(self)~="table" and type(self)~="string" and type(self)~="thread" then if type(self)~="table" and type(self)~="string" then
error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string or thread expected.", 2) error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string expected.", 2)
end end
if select("#",...)>=1 then -- this is not the same as testing for arg==nil! if select("#",...)>=1 then -- this is not the same as testing for arg==nil!

View File

@ -9,7 +9,7 @@ License: MIT
--- DRList-1.0 --- DRList-1.0
-- @module DRList-1.0 -- @module DRList-1.0
local MAJOR, MINOR = "DRList-1.0", 54 -- Don't forget to change this in Spells.lua aswell! local MAJOR, MINOR = "DRList-1.0", 42 -- Don't forget to change this in Spells.lua aswell!
local Lib = assert(LibStub, MAJOR .. " requires LibStub."):NewLibrary(MAJOR, MINOR) local Lib = assert(LibStub, MAJOR .. " requires LibStub."):NewLibrary(MAJOR, MINOR)
if not Lib then return end -- already loaded if not Lib then return end -- already loaded
@ -30,7 +30,7 @@ L["TAUNTS"] = "Taunts"
L["FEARS"] = "Fears" L["FEARS"] = "Fears"
L["RANDOM_ROOTS"] = "Random roots" L["RANDOM_ROOTS"] = "Random roots"
L["RANDOM_STUNS"] = "Random stuns" L["RANDOM_STUNS"] = "Random stuns"
L["OPENER_STUN"] = "Opener stuns" L["OPENER_STUN"] = "Opener Stuns"
L["HORROR"] = "Horrors" L["HORROR"] = "Horrors"
L["SCATTERS"] = "Scatters" L["SCATTERS"] = "Scatters"
L["SLEEPS"] = GetSpellInfo(1090) or "Sleep" L["SLEEPS"] = GetSpellInfo(1090) or "Sleep"
@ -129,30 +129,34 @@ Lib.gameExpansion = ({
[WOW_PROJECT_MAINLINE] = "retail", [WOW_PROJECT_MAINLINE] = "retail",
[WOW_PROJECT_CLASSIC] = "classic", [WOW_PROJECT_CLASSIC] = "classic",
[WOW_PROJECT_BURNING_CRUSADE_CLASSIC or 5] = "tbc", [WOW_PROJECT_BURNING_CRUSADE_CLASSIC or 5] = "tbc",
[WOW_PROJECT_WRATH_CLASSIC or 11] = "wotlk",
})[WOW_PROJECT_ID] })[WOW_PROJECT_ID]
local tocVersion = select(4, GetBuildInfo())
if tocVersion >= 30400 and tocVersion < 40000 then
Lib.gameExpansion = "wotlk" -- temporary check for wotlk build until new constant is added
end
-- How long it takes for a DR to expire, in seconds. -- How long it takes for a DR to expire, in seconds.
Lib.resetTimes = { Lib.resetTimes = {
retail = { retail = {
["default"] = 18.5, -- static 18 sec + 0.5 latency ["default"] = 18.5, -- 18 sec + 0.5 latency
["npc"] = 21, -- Against mobs it seems to last slightly longer, depending on server load ["npc"] = 23, -- Against mobs it seems to last slightly longer, depending on server load
["knockback"] = 10.5, -- Knockbacks are immediately immune and only DRs for 10s ["knockback"] = 10, -- Knockbacks are immediately immune and only DRs for 10s
}, },
classic = { classic = {
["default"] = 20, -- dynamic between 15 and 20s ["default"] = 19, -- dynamic between 15 and 20s
["npc"] = 21, ["npc"] = 23,
}, },
tbc = { tbc = {
["default"] = 20, -- dynamic between 15 and 20s ["default"] = 19, -- dynamic between 15 and 20s
["npc"] = 21, ["npc"] = 23,
}, },
wotlk = { wotlk = {
["default"] = 20, -- dynamic between 15 and 20s ["default"] = 19, -- dynamic between 15 and 20s
["npc"] = 21, ["npc"] = 23,
}, },
} }
@ -199,7 +203,7 @@ Lib.categoryNames = {
["counterattack"] = L.COUNTERATTACK, ["counterattack"] = L.COUNTERATTACK,
}, },
wotlk = { wotlk = { -- WORK IN PROGRESS
["incapacitate"] = L.INCAPACITATES, ["incapacitate"] = L.INCAPACITATES,
["stun"] = L.STUNS, ["stun"] = L.STUNS,
["random_stun"] = L.RANDOM_STUNS, ["random_stun"] = L.RANDOM_STUNS,
@ -219,12 +223,13 @@ Lib.categoryNames = {
} }
-- Categories that have DR against normal mobs. -- Categories that have DR against normal mobs.
-- Note that for retail some special mobs have DR on all categories, -- Note that this is only for normal mobs on retail. Special mobs or pets have DR on all categories,
-- see UnitClassification() and UnitIsQuestBoss(). -- see UnitClassification() and UnitIsQuestBoss().
Lib.categoriesPvE = { Lib.categoriesPvE = {
retail = { retail = {
["taunt"] = L.TAUNTS, ["taunt"] = L.TAUNTS, -- Lib.categoryNames.retail.taunt
["stun"] = L.STUNS, ["stun"] = L.STUNS,
["root"] = L.ROOTS,
}, },
classic = { classic = {
@ -291,9 +296,9 @@ function Lib:GetCategories()
return Lib.categoryNames[Lib.gameExpansion] return Lib.categoryNames[Lib.gameExpansion]
end end
--- Get table of all categories that DRs in PvE. --- Get table of all categories that DRs in PvE only.
-- Key is unlocalized name used for API functions, value is localized name used for UI. -- Key is unlocalized name used for API functions, value is localized name used for UI.
-- Note that for retail some special mobs have DR on all categories, -- Note that this is only for normal mobs on retail. Special mobs or pets have DR on all categories,
-- see UnitClassification() and UnitIsQuestBoss(). -- see UnitClassification() and UnitIsQuestBoss().
-- Tip: you can combine :GetPvECategories() and :IterateSpellsByCategory() to get spellIDs only for PvE aswell. -- Tip: you can combine :GetPvECategories() and :IterateSpellsByCategory() to get spellIDs only for PvE aswell.
-- @treturn table {string=string} -- @treturn table {string=string}
@ -336,7 +341,7 @@ function Lib:GetCategoryLocalization(category)
end end
--- Check if a category has DR against mobs. --- Check if a category has DR against mobs.
-- Note that for retail some special mobs have DR on all categories, you need to check for this yourself; -- Note that this is only for normal mobs on retail. Special mobs or pets have DR on all categories,
-- see UnitClassification() and UnitIsQuestBoss(). -- see UnitClassification() and UnitIsQuestBoss().
-- @tparam string category Unlocalized category name -- @tparam string category Unlocalized category name
-- @treturn bool -- @treturn bool
@ -377,6 +382,7 @@ do
--- Iterate through the spells of a given category. --- Iterate through the spells of a given category.
-- @tparam string category Unlocalized category name -- @tparam string category Unlocalized category name
-- @usage for spellID in DRList:IterateSpellsByCategory("root") do print(spellID) end -- @usage for spellID in DRList:IterateSpellsByCategory("root") do print(spellID) end
-- @warning Slow function, do not use for frequent combat related stuff unless you cache results.
-- @return Iterator function -- @return Iterator function
function Lib:IterateSpellsByCategory(category) function Lib:IterateSpellsByCategory(category)
assert(Lib.categoryNames[Lib.gameExpansion][category], "invalid category") assert(Lib.categoryNames[Lib.gameExpansion][category], "invalid category")
@ -389,6 +395,6 @@ Lib.GetCategoryName = Lib.GetCategoryLocalization
Lib.IsPVE = Lib.IsPvECategory Lib.IsPVE = Lib.IsPvECategory
Lib.NextDR = Lib.GetNextDR Lib.NextDR = Lib.GetNextDR
Lib.GetSpellCategory = Lib.GetCategoryBySpellID Lib.GetSpellCategory = Lib.GetCategoryBySpellID
Lib.IterateSpells = Lib.IterateSpellsByCategory
Lib.RESET_TIME = Lib.resetTimes[Lib.gameExpansion].default Lib.RESET_TIME = Lib.resetTimes[Lib.gameExpansion].default
Lib.pveDR = Lib.categoriesPvE Lib.pveDR = Lib.categoriesPvE
Lib.IterateSpells = function(cat) if cat then return Lib.IterateSpellsByCategory(cat) else return next, Lib.spellList end end

View File

@ -1,8 +1,7 @@
## Interface: 100105 ## Interface: 90205
## Interface-Classic: 11403 ## Interface-Classic: 11402
## Interface-BCC: 20504 ## Interface-BCC: 20504
## Interface-Wrath: 30402 ## Interface-Wrath: 30400
## IconTexture: Interface\Icons\Spell_nature_heavypolymorph1
## Title: Lib: DRList-1.0 ## Title: Lib: DRList-1.0
## Version: @project-version@ ## Version: @project-version@
## X-Category: Library ## X-Category: Library
@ -15,7 +14,6 @@ libs\LibStub\LibStub.lua
#@end-no-lib-strip@ #@end-no-lib-strip@
DRList-1.0.xml DRList-1.0.xml
#@do-not-package@ #@do-not-package@
tests\engine.lua tests\engine.lua
tests\test-retail.lua tests\test-retail.lua

View File

@ -1,4 +1,4 @@
local MAJOR, MINOR = "DRList-1.0", 54 -- Don't forget to change this in DRList-1.0.lua aswell! local MAJOR, MINOR = "DRList-1.0", 42 -- Don't forget to change this in DRList-1.0.lua aswell!
local Lib = LibStub(MAJOR) local Lib = LibStub(MAJOR)
if Lib.spellListVersion and Lib.spellListVersion >= MINOR then if Lib.spellListVersion and Lib.spellListVersion >= MINOR then
return return
@ -13,20 +13,17 @@ if Lib.gameExpansion == "retail" then
[207167] = "disorient", -- Blinding Sleet [207167] = "disorient", -- Blinding Sleet
[207685] = "disorient", -- Sigil of Misery [207685] = "disorient", -- Sigil of Misery
[33786] = "disorient", -- Cyclone [33786] = "disorient", -- Cyclone
[360806] = "disorient", -- Sleep Walk
[1513] = "disorient", -- Scare Beast [1513] = "disorient", -- Scare Beast
[31661] = "disorient", -- Dragon's Breath [31661] = "disorient", -- Dragon's Breath
[198909] = "disorient", -- Song of Chi-ji [198909] = "disorient", -- Song of Chi-ji
[202274] = "disorient", -- Hot Trub [202274] = "disorient", -- Incendiary Brew
[105421] = "disorient", -- Blinding Light [105421] = "disorient", -- Blinding Light
[10326] = "disorient", -- Turn Evil [10326] = "disorient", -- Turn Evil
[205364] = "disorient", -- Dominate Mind
[605] = "disorient", -- Mind Control [605] = "disorient", -- Mind Control
[8122] = "disorient", -- Psychic Scream [8122] = "disorient", -- Psychic Scream
[226943] = "disorient", -- Mind Bomb [226943] = "disorient", -- Mind Bomb
[2094] = "disorient", -- Blind [2094] = "disorient", -- Blind
[118699] = "disorient", -- Fear [118699] = "disorient", -- Fear
[130616] = "disorient", -- Fear (Horrify)
[5484] = "disorient", -- Howl of Terror [5484] = "disorient", -- Howl of Terror
[261589] = "disorient", -- Seduction (Grimoire of Sacrifice) [261589] = "disorient", -- Seduction (Grimoire of Sacrifice)
[6358] = "disorient", -- Seduction (Succubus) [6358] = "disorient", -- Seduction (Succubus)
@ -39,11 +36,9 @@ if Lib.gameExpansion == "retail" then
[221527] = "incapacitate", -- Imprison (Honor talent) [221527] = "incapacitate", -- Imprison (Honor talent)
[2637] = "incapacitate", -- Hibernate [2637] = "incapacitate", -- Hibernate
[99] = "incapacitate", -- Incapacitating Roar [99] = "incapacitate", -- Incapacitating Roar
[378441] = "incapacitate", -- Time Stop
[3355] = "incapacitate", -- Freezing Trap [3355] = "incapacitate", -- Freezing Trap
[203337] = "incapacitate", -- Freezing Trap (Honor talent) [203337] = "incapacitate", -- Freezing Trap (Honor talent)
[213691] = "incapacitate", -- Scatter Shot [213691] = "incapacitate", -- Scatter Shot
[383121] = "incapacitate", -- Mass Polymorph
[118] = "incapacitate", -- Polymorph [118] = "incapacitate", -- Polymorph
[28271] = "incapacitate", -- Polymorph (Turtle) [28271] = "incapacitate", -- Polymorph (Turtle)
[28272] = "incapacitate", -- Polymorph (Pig) [28272] = "incapacitate", -- Polymorph (Pig)
@ -58,11 +53,8 @@ if Lib.gameExpansion == "retail" then
[161372] = "incapacitate", -- Polymorph (Peacock) [161372] = "incapacitate", -- Polymorph (Peacock)
[277787] = "incapacitate", -- Polymorph (Baby Direhorn) [277787] = "incapacitate", -- Polymorph (Baby Direhorn)
[277792] = "incapacitate", -- Polymorph (Bumblebee) [277792] = "incapacitate", -- Polymorph (Bumblebee)
[321395] = "incapacitate", -- Polymorph (Mawrat)
[391622] = "incapacitate", -- Polymorph (Duck)
[82691] = "incapacitate", -- Ring of Frost [82691] = "incapacitate", -- Ring of Frost
[115078] = "incapacitate", -- Paralysis [115078] = "incapacitate", -- Paralysis
[357768] = "incapacitate", -- Paralysis 2 (Perpetual Paralysis?)
[20066] = "incapacitate", -- Repentance [20066] = "incapacitate", -- Repentance
[9484] = "incapacitate", -- Shackle Undead [9484] = "incapacitate", -- Shackle Undead
[200196] = "incapacitate", -- Holy Word: Chastise [200196] = "incapacitate", -- Holy Word: Chastise
@ -86,11 +78,8 @@ if Lib.gameExpansion == "retail" then
[47476] = "silence", -- Strangulate [47476] = "silence", -- Strangulate
[204490] = "silence", -- Sigil of Silence [204490] = "silence", -- Sigil of Silence
-- [78675] = "silence", -- Solar Beam (has no DR) -- [78675] = "silence", -- Solar Beam (has no DR)
[410065] = "silence", -- Reactive Resin
[202933] = "silence", -- Spider Sting [202933] = "silence", -- Spider Sting
[356727] = "silence", -- Spider Venom [356727] = "silence", -- Spider Venom
[354831] = "silence", -- Wailing Arrow 1
[355596] = "silence", -- Wailing Arrow 2
[217824] = "silence", -- Shield of Virtue [217824] = "silence", -- Shield of Virtue
[15487] = "silence", -- Silence [15487] = "silence", -- Silence
[1330] = "silence", -- Garrote [1330] = "silence", -- Garrote
@ -113,14 +102,10 @@ if Lib.gameExpansion == "retail" then
[5211] = "stun", -- Mighty Bash [5211] = "stun", -- Mighty Bash
[202244] = "stun", -- Overrun [202244] = "stun", -- Overrun
[325321] = "stun", -- Wild Hunt's Charge [325321] = "stun", -- Wild Hunt's Charge
[372245] = "stun", -- Terror of the Skies
[117526] = "stun", -- Binding Shot
[357021] = "stun", -- Consecutive Concussion [357021] = "stun", -- Consecutive Concussion
[24394] = "stun", -- Intimidation [24394] = "stun", -- Intimidation
[389831] = "stun", -- Snowdrift
[119381] = "stun", -- Leg Sweep [119381] = "stun", -- Leg Sweep
[202346] = "stun", -- Double Barrel [202346] = "stun", -- Double Barrel
[385149] = "stun", -- Exorcism
[853] = "stun", -- Hammer of Justice [853] = "stun", -- Hammer of Justice
[255941] = "stun", -- Wake of Ashes [255941] = "stun", -- Wake of Ashes
[64044] = "stun", -- Psychic Horror [64044] = "stun", -- Psychic Horror
@ -134,7 +119,6 @@ if Lib.gameExpansion == "retail" then
[171017] = "stun", -- Meteor Strike (Infernal) [171017] = "stun", -- Meteor Strike (Infernal)
[171018] = "stun", -- Meteor Strike (Abyssal) [171018] = "stun", -- Meteor Strike (Abyssal)
[30283] = "stun", -- Shadowfury [30283] = "stun", -- Shadowfury
[385954] = "stun", -- Shield Charge
[46968] = "stun", -- Shockwave [46968] = "stun", -- Shockwave
[132168] = "stun", -- Shockwave (Protection) [132168] = "stun", -- Shockwave (Protection)
[145047] = "stun", -- Shockwave (Proving Grounds PvE) [145047] = "stun", -- Shockwave (Proving Grounds PvE)
@ -144,16 +128,13 @@ if Lib.gameExpansion == "retail" then
[255723] = "stun", -- Bull Rush (Highmountain Tauren) [255723] = "stun", -- Bull Rush (Highmountain Tauren)
[287712] = "stun", -- Haymaker (Kul Tiran) [287712] = "stun", -- Haymaker (Kul Tiran)
[332423] = "stun", -- Sparkling Driftglobe Core (Kyrian Covenant) [332423] = "stun", -- Sparkling Driftglobe Core (Kyrian Covenant)
-- TODO: Inferal Awakening?
[204085] = "root", -- Deathchill (Chains of Ice) [204085] = "root", -- Deathchill (Chains of Ice)
[233395] = "root", -- Deathchill (Remorseless Winter) [233395] = "root", -- Deathchill (Remorseless Winter)
[339] = "root", -- Entangling Roots [339] = "root", -- Entangling Roots
[235963] = "root", -- Entangling Roots (Earthen Grasp)
[170855] = "root", -- Entangling Roots (Nature's Grasp) [170855] = "root", -- Entangling Roots (Nature's Grasp)
[102359] = "root", -- Mass Entanglement [102359] = "root", -- Mass Entanglement
[355689] = "root", -- Landslide [117526] = "root", -- Binding Shot
[393456] = "root", -- Entrapment (Tar Trap)
[162480] = "root", -- Steel Trap [162480] = "root", -- Steel Trap
[273909] = "root", -- Steelclaw Trap [273909] = "root", -- Steelclaw Trap
-- [190927] = "root_harpoon", -- Harpoon (TODO: confirm) -- [190927] = "root_harpoon", -- Harpoon (TODO: confirm)
@ -161,26 +142,19 @@ if Lib.gameExpansion == "retail" then
[201158] = "root", -- Super Sticky Tar [201158] = "root", -- Super Sticky Tar
[122] = "root", -- Frost Nova [122] = "root", -- Frost Nova
[33395] = "root", -- Freeze [33395] = "root", -- Freeze
[386770] = "root", -- Freezing Cold
[198121] = "root", -- Frostbite [198121] = "root", -- Frostbite
[114404] = "root", -- Void Tendril's Grasp
[342375] = "root", -- Tormenting Backlash (Torghast PvE) [342375] = "root", -- Tormenting Backlash (Torghast PvE)
[233582] = "root", -- Entrenched in Flame [233582] = "root", -- Entrenched in Flame
[116706] = "root", -- Disable [116706] = "root", -- Disable
[324382] = "root", -- Clash [324382] = "root", -- Clash
[64695] = "root", -- Earthgrab (Totem effect) [64695] = "root", -- Earthgrab (Totem effect)
-- [356738] = "root", -- Earth Unleashed (doesn't seem to DR)
[285515] = "root", -- Surge of Power [285515] = "root", -- Surge of Power
[199042] = "root", -- Thunderstruck (Protection PvP Talent)
--[356356] = "root", -- Warbringer TODO: has DR?
[39965] = "root", -- Frost Grenade (Item) [39965] = "root", -- Frost Grenade (Item)
[75148] = "root", -- Embersilk Net (Item) [75148] = "root", -- Embersilk Net (Item)
[55536] = "root", -- Frostweave Net (Item) [55536] = "root", -- Frostweave Net (Item)
[268966] = "root", -- Hooked Deep Sea Net (Item) [268966] = "root", -- Hooked Deep Sea Net (Item)
[209749] = "disarm", -- Faerie Swarm (Balance Honor Talent) [209749] = "disarm", -- Faerie Swarm (Balance Honor Talent)
[407032] = "disarm", -- Sticky Tar Bomb 1
[407031] = "disarm", -- Sticky Tar Bomb 2
[207777] = "disarm", -- Dismantle [207777] = "disarm", -- Dismantle
[233759] = "disarm", -- Grapple Weapon [233759] = "disarm", -- Grapple Weapon
[236077] = "disarm", -- Disarm [236077] = "disarm", -- Disarm
@ -386,7 +360,7 @@ elseif Lib.gameExpansion == "tbc" then
[27067] = "counterattack", -- Counterattack (Rank 4) [27067] = "counterattack", -- Counterattack (Rank 4)
} }
elseif Lib.gameExpansion == "wotlk" then elseif Lib.gameExpansion == "wotlk" then -- STILL WORK IN PROGRESS, I DON'T HAVE BETA ACCESS
-- SpellID list for Wrath of the Lich King. -- SpellID list for Wrath of the Lich King.
-- spellID for every rank is used over spell name to avoid name collisions, and faster lookups -- spellID for every rank is used over spell name to avoid name collisions, and faster lookups
@ -441,9 +415,6 @@ elseif Lib.gameExpansion == "wotlk" then
[30216] = "incapacitate", -- Fel Iron Bomb [30216] = "incapacitate", -- Fel Iron Bomb
[30461] = "incapacitate", -- The Bigger One [30461] = "incapacitate", -- The Bigger One
[30217] = "incapacitate", -- Adamantite Grenade [30217] = "incapacitate", -- Adamantite Grenade
[67769] = "incapacitate", -- Cobalt Frag Bomb
[67890] = "incapacitate", -- Cobalt Frag Bomb (Frag Belt)
[54466] = "incapacitate", -- Saronite Grenade
[47481] = "stun", -- Gnaw (Ghoul Pet) [47481] = "stun", -- Gnaw (Ghoul Pet)
[5211] = "stun", -- Bash (Rank 1) [5211] = "stun", -- Bash (Rank 1)
@ -533,7 +504,6 @@ elseif Lib.gameExpansion == "wotlk" then
[9853] = "root", -- Entangling Roots (Rank 6) [9853] = "root", -- Entangling Roots (Rank 6)
[26989] = "root", -- Entangling Roots (Rank 7) [26989] = "root", -- Entangling Roots (Rank 7)
[53308] = "root", -- Entangling Roots (Rank 8) [53308] = "root", -- Entangling Roots (Rank 8)
[65857] = "root", -- Entangling Roots (Rank 8) (TODO: Not sure which ID is correct)
[19975] = "root", -- Nature's Grasp (Rank 1) [19975] = "root", -- Nature's Grasp (Rank 1)
[19974] = "root", -- Nature's Grasp (Rank 2) [19974] = "root", -- Nature's Grasp (Rank 2)
[19973] = "root", -- Nature's Grasp (Rank 3) [19973] = "root", -- Nature's Grasp (Rank 3)
@ -541,8 +511,7 @@ elseif Lib.gameExpansion == "wotlk" then
[19971] = "root", -- Nature's Grasp (Rank 5) [19971] = "root", -- Nature's Grasp (Rank 5)
[19970] = "root", -- Nature's Grasp (Rank 6) [19970] = "root", -- Nature's Grasp (Rank 6)
[27010] = "root", -- Nature's Grasp (Rank 7) [27010] = "root", -- Nature's Grasp (Rank 7)
[53313] = "root", -- Nature's Grasp (Rank 8) [53312] = "root", -- Nature's Grasp (Rank 8)
[66070] = "root", -- Nature's Grasp (Rank 8) (TODO: Not sure which ID is correct)
[50245] = "root", -- Pin (Rank 1) [50245] = "root", -- Pin (Rank 1)
[53544] = "root", -- Pin (Rank 2) [53544] = "root", -- Pin (Rank 2)
[53545] = "root", -- Pin (Rank 3) [53545] = "root", -- Pin (Rank 3)
@ -556,10 +525,8 @@ elseif Lib.gameExpansion == "wotlk" then
[10230] = "root", -- Frost Nova (Rank 4) [10230] = "root", -- Frost Nova (Rank 4)
[27088] = "root", -- Frost Nova (Rank 5) [27088] = "root", -- Frost Nova (Rank 5)
[42917] = "root", -- Frost Nova (Rank 6) [42917] = "root", -- Frost Nova (Rank 6)
[64695] = "root", -- Earthgrab
[39965] = "root", -- Frost Grenade (Item) [39965] = "root", -- Frost Grenade (Item)
[63685] = "root", -- Freeze (Frost Shock) [63685] = "root", -- Freeze (Frost Shock)
[55536] = "root", -- Frostweave Net (Item)
[12494] = "random_root", -- Frostbite [12494] = "random_root", -- Frostbite
[55080] = "random_root", -- Shattered Barrier [55080] = "random_root", -- Shattered Barrier
@ -575,7 +542,6 @@ elseif Lib.gameExpansion == "wotlk" then
[53540] = "disarm", -- Snatch (Rank 4) [53540] = "disarm", -- Snatch (Rank 4)
[53542] = "disarm", -- Snatch (Rank 5) [53542] = "disarm", -- Snatch (Rank 5)
[53543] = "disarm", -- Snatch (Rank 6) [53543] = "disarm", -- Snatch (Rank 6)
[64346] = "disarm", -- Fiery Payback
[64058] = "disarm", -- Psychic Horror Disarm Effect [64058] = "disarm", -- Psychic Horror Disarm Effect
[51722] = "disarm", -- Dismantle [51722] = "disarm", -- Dismantle
[676] = "disarm", -- Disarm [676] = "disarm", -- Disarm
@ -626,7 +592,6 @@ elseif Lib.gameExpansion == "wotlk" then
[33786] = "cyclone", -- Cyclone [33786] = "cyclone", -- Cyclone
[605] = "mind_control", -- Mind Control [605] = "mind_control", -- Mind Control
[13181] = "mind_control", -- Gnomish Mind Control Cap [13181] = "mind_control", -- Gnomish Mind Control Cap
[67799] = "mind_control", -- Mind Amplification Dish
[7922] = "charge", -- Charge Stun [7922] = "charge", -- Charge Stun
[19306] = "counterattack", -- Counterattack 1 [19306] = "counterattack", -- Counterattack 1
[20909] = "counterattack", -- Counterattack 2 [20909] = "counterattack", -- Counterattack 2
@ -634,6 +599,9 @@ elseif Lib.gameExpansion == "wotlk" then
[27067] = "counterattack", -- Counterattack 4 [27067] = "counterattack", -- Counterattack 4
[48998] = "counterattack", -- Counterattack 5 [48998] = "counterattack", -- Counterattack 5
[48999] = "counterattack", -- Counterattack 6 [48999] = "counterattack", -- Counterattack 6
--Storm, Earth and Fire has no DR
-- TODO: profession stuff
} }
elseif Lib.gameExpansion == "classic" then elseif Lib.gameExpansion == "classic" then

View File

@ -51,7 +51,7 @@ GlowMaskPool.parent = GlowParent
local TexPoolResetter = function(pool,tex) local TexPoolResetter = function(pool,tex)
local maskNum = tex:GetNumMaskTextures() local maskNum = tex:GetNumMaskTextures()
for i = maskNum , 1, -1 do for i = maskNum,1 do
tex:RemoveMaskTexture(tex:GetMaskTexture(i)) tex:RemoveMaskTexture(tex:GetMaskTexture(i))
end end
tex:Hide() tex:Hide()

View File

@ -1,7 +1,6 @@
--@curseforge-project-slug: libsharedmedia-3-0@
--[[ --[[
Name: LibSharedMedia-3.0 Name: LibSharedMedia-3.0
Revision: $Revision: 128 $ Revision: $Revision: 114 $
Author: Elkano (elkano@gmx.de) Author: Elkano (elkano@gmx.de)
Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com) Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com)
Website: http://www.wowace.com/projects/libsharedmedia-3-0/ Website: http://www.wowace.com/projects/libsharedmedia-3-0/

View File

@ -10,7 +10,7 @@ if not LibStub or LibStub.minor < LIBSTUB_MINOR then
function LibStub:NewLibrary(major, minor) function LibStub:NewLibrary(major, minor)
assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)") assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
minor = assert(tonumber(string.match(minor, "%d+")), "Minor version must either be a number or contain a number.") minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
local oldminor = self.minors[major] local oldminor = self.minors[major]
if oldminor and oldminor >= minor then return nil end if oldminor and oldminor >= minor then return nil end

View File

@ -27,19 +27,19 @@ function ACDFrame:Initialize()
self.ACDNumFrame:SetPoint("CENTER", 0, 128) self.ACDNumFrame:SetPoint("CENTER", 0, 128)
self.ACDNumFrame:Hide() self.ACDNumFrame:Hide()
local ACDNumTens = ACDNumFrame:CreateTexture("ACDNumTens", "OVERLAY") local ACDNumTens = ACDNumFrame:CreateTexture("ACDNumTens", "HIGH")
self.ACDNumTens = ACDNumTens self.ACDNumTens = ACDNumTens
self.ACDNumTens:SetWidth(Gladdy.db.arenaCountdownSize) self.ACDNumTens:SetWidth(Gladdy.db.arenaCountdownSize)
self.ACDNumTens:SetHeight(Gladdy.db.arenaCountdownSize) self.ACDNumTens:SetHeight(Gladdy.db.arenaCountdownSize)
self.ACDNumTens:SetPoint("CENTER", self.ACDNumFrame, "CENTER", -(Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0) self.ACDNumTens:SetPoint("CENTER", self.ACDNumFrame, "CENTER", -(Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0)
local ACDNumOnes = ACDNumFrame:CreateTexture("ACDNumOnes", "OVERLAY") local ACDNumOnes = ACDNumFrame:CreateTexture("ACDNumOnes", "HIGH")
self.ACDNumOnes = ACDNumOnes self.ACDNumOnes = ACDNumOnes
self.ACDNumOnes:SetWidth(Gladdy.db.arenaCountdownSize) self.ACDNumOnes:SetWidth(Gladdy.db.arenaCountdownSize)
self.ACDNumOnes:SetHeight(Gladdy.db.arenaCountdownSize) self.ACDNumOnes:SetHeight(Gladdy.db.arenaCountdownSize)
self.ACDNumOnes:SetPoint("CENTER", self.ACDNumFrame, "CENTER", (Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0) self.ACDNumOnes:SetPoint("CENTER", self.ACDNumFrame, "CENTER", (Gladdy.db.arenaCountdownSize/8 + Gladdy.db.arenaCountdownSize/8/2), 0)
local ACDNumOne = ACDNumFrame:CreateTexture("ACDNumOne", "OVERLAY") local ACDNumOne = ACDNumFrame:CreateTexture("ACDNumOne", "HIGH")
self.ACDNumOne = ACDNumOne self.ACDNumOne = ACDNumOne
self.ACDNumOne:SetWidth(Gladdy.db.arenaCountdownSize) self.ACDNumOne:SetWidth(Gladdy.db.arenaCountdownSize)
self.ACDNumOne:SetHeight(Gladdy.db.arenaCountdownSize) self.ACDNumOne:SetHeight(Gladdy.db.arenaCountdownSize)

View File

@ -331,13 +331,13 @@ function Auras:UpdateFrame(unit)
if Gladdy.db.auraIconZoomed then if Gladdy.db.auraIconZoomed then
if auraFrame.icon.masked then if auraFrame.icon.masked then
auraFrame.icon:SetMask("") auraFrame.icon:SetMask(nil)
auraFrame.icon:SetTexCoord(0.1,0.9,0.1,0.9) auraFrame.icon:SetTexCoord(0.1,0.9,0.1,0.9)
auraFrame.icon.masked = nil auraFrame.icon.masked = nil
end end
else else
if not auraFrame.icon.masked then if not auraFrame.icon.masked then
auraFrame.icon:SetMask("") auraFrame.icon:SetMask(nil)
auraFrame.icon:SetTexCoord(0,1,0,1) auraFrame.icon:SetTexCoord(0,1,0,1)
auraFrame.icon:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask") auraFrame.icon:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
auraFrame.icon.masked = true auraFrame.icon.masked = true
@ -479,13 +479,13 @@ function Auras:UpdateInterruptFrame(unit)
if Gladdy.db.auraInterruptIconZoomed then if Gladdy.db.auraInterruptIconZoomed then
if interruptFrame.icon.masked then if interruptFrame.icon.masked then
interruptFrame.icon:SetMask("") interruptFrame.icon:SetMask(nil)
interruptFrame.icon:SetTexCoord(0.1,0.9,0.1,0.9) interruptFrame.icon:SetTexCoord(0.1,0.9,0.1,0.9)
interruptFrame.icon.masked = nil interruptFrame.icon.masked = nil
end end
else else
if not interruptFrame.icon.masked then if not interruptFrame.icon.masked then
interruptFrame.icon:SetMask("") interruptFrame.icon:SetMask(nil)
interruptFrame.icon:SetTexCoord(0,1,0,1) interruptFrame.icon:SetTexCoord(0,1,0,1)
interruptFrame.icon:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask") interruptFrame.icon:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
interruptFrame.icon.masked = true interruptFrame.icon.masked = true

View File

@ -300,13 +300,13 @@ local function styleIcon(aura, auraType)
if zoomedOption then if zoomedOption then
if aura.texture.masked then if aura.texture.masked then
aura.texture:SetMask("") aura.texture:SetMask(nil)
aura.texture:SetTexCoord(0.1,0.9,0.1,0.9) aura.texture:SetTexCoord(0.1,0.9,0.1,0.9)
aura.texture.masked = nil aura.texture.masked = nil
end end
else else
if not aura.texture.masked then if not aura.texture.masked then
aura.texture:SetMask("") aura.texture:SetMask(nil)
aura.texture:SetTexCoord(0,1,0,1) aura.texture:SetTexCoord(0,1,0,1)
aura.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask") aura.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
aura.texture.masked = true aura.texture.masked = true

View File

@ -123,7 +123,7 @@ function Castbar:CreateFrame(unit)
castBar.icon:SetPoint("LEFT", castBar, "RIGHT", 3, 0) -- Icon of castbar castBar.icon:SetPoint("LEFT", castBar, "RIGHT", 3, 0) -- Icon of castbar
end end
castBar.spellText = castBar:CreateFontString(nil, "OVERLAY") castBar.spellText = castBar:CreateFontString(nil, "LOW")
castBar.spellText:SetFont(Gladdy:SMFetch("font", "auraFont"), Gladdy.db.castBarFontSize, Gladdy.db.castBarFontOutline and "OUTLINE") castBar.spellText:SetFont(Gladdy:SMFetch("font", "auraFont"), Gladdy.db.castBarFontSize, Gladdy.db.castBarFontOutline and "OUTLINE")
castBar.spellText:SetTextColor(Gladdy:SetColor(Gladdy.db.castBarFontColor)) castBar.spellText:SetTextColor(Gladdy:SetColor(Gladdy.db.castBarFontColor))
castBar.spellText:SetShadowOffset(1, -1) castBar.spellText:SetShadowOffset(1, -1)
@ -131,7 +131,7 @@ function Castbar:CreateFrame(unit)
castBar.spellText:SetJustifyH("CENTER") castBar.spellText:SetJustifyH("CENTER")
castBar.spellText:SetPoint("LEFT", 10, 0) -- Text of the spell castBar.spellText:SetPoint("LEFT", 10, 0) -- Text of the spell
castBar.timeText = castBar:CreateFontString(nil, "OVERLAY") castBar.timeText = castBar:CreateFontString(nil, "LOW")
castBar.timeText:SetFont(Gladdy:SMFetch("font", "auraFont"), Gladdy.db.castBarFontSize, Gladdy.db.castBarFontOutline and "OUTLINE") castBar.timeText:SetFont(Gladdy:SMFetch("font", "auraFont"), Gladdy.db.castBarFontSize, Gladdy.db.castBarFontOutline and "OUTLINE")
castBar.timeText:SetTextColor(Gladdy:SetColor(Gladdy.db.castBarFontColor)) castBar.timeText:SetTextColor(Gladdy:SetColor(Gladdy.db.castBarFontColor))
castBar.timeText:SetShadowOffset(1, -1) castBar.timeText:SetShadowOffset(1, -1)
@ -197,13 +197,13 @@ function Castbar:UpdateFrame(unit)
castBar.icon.texture:SetAllPoints(castBar.icon) castBar.icon.texture:SetAllPoints(castBar.icon)
if Gladdy.db.castBarIconZoomed then if Gladdy.db.castBarIconZoomed then
if castBar.icon.texture.masked then if castBar.icon.texture.masked then
castBar.icon.texture:SetMask("") castBar.icon.texture:SetMask(nil)
castBar.icon.texture:SetTexCoord(0.1,0.9,0.1,0.9) castBar.icon.texture:SetTexCoord(0.1,0.9,0.1,0.9)
castBar.icon.texture.masked = nil castBar.icon.texture.masked = nil
end end
else else
if not castBar.icon.texture.masked then if not castBar.icon.texture.masked then
castBar.icon.texture:SetMask("") castBar.icon.texture:SetMask(nil)
castBar.icon.texture:SetTexCoord(0,1,0,1) castBar.icon.texture:SetTexCoord(0,1,0,1)
castBar.icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask") castBar.icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
castBar.icon.texture.masked = true castBar.icon.texture.masked = true

View File

@ -145,13 +145,13 @@ function Classicon:UpdateFrame(unit)
if Gladdy.db.classIconZoomed then if Gladdy.db.classIconZoomed then
if classIcon.texture.masked then if classIcon.texture.masked then
classIcon.texture:SetMask("") classIcon.texture:SetMask(nil)
classIcon.texture:SetTexCoord(0.1,0.9,0.1,0.9) classIcon.texture:SetTexCoord(0.1,0.9,0.1,0.9)
classIcon.texture.masked = nil classIcon.texture.masked = nil
end end
else else
if not classIcon.texture.masked then if not classIcon.texture.masked then
classIcon.texture:SetMask("") classIcon.texture:SetMask(nil)
classIcon.texture:SetTexCoord(0,1,0,1) classIcon.texture:SetTexCoord(0,1,0,1)
classIcon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask") classIcon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
classIcon.texture.masked = true classIcon.texture.masked = true

View File

@ -196,13 +196,13 @@ function Cooldowns:UpdateIcon(icon)
if Gladdy.db.cooldownIconZoomed then if Gladdy.db.cooldownIconZoomed then
if icon.texture.masked then if icon.texture.masked then
icon.texture:SetMask("") icon.texture:SetMask(nil)
icon.texture:SetTexCoord(0.1,0.9,0.1,0.9) icon.texture:SetTexCoord(0.1,0.9,0.1,0.9)
icon.texture.masked = nil icon.texture.masked = nil
end end
else else
if not icon.texture.masked then if not icon.texture.masked then
icon.texture:SetMask("") icon.texture:SetMask(nil)
icon.texture:SetTexCoord(0,1,0,1) icon.texture:SetTexCoord(0,1,0,1)
icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask") icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
icon.texture.masked = true icon.texture.masked = true

View File

@ -294,13 +294,13 @@ function Diminishings:UpdateFrame(unit)
if Gladdy.db.drIconZoomed then if Gladdy.db.drIconZoomed then
if icon.texture.masked then if icon.texture.masked then
icon.texture:SetMask("") icon.texture:SetMask(nil)
icon.texture:SetTexCoord(0.1,0.9,0.1,0.9) icon.texture:SetTexCoord(0.1,0.9,0.1,0.9)
icon.texture.masked = nil icon.texture.masked = nil
end end
else else
if not icon.texture.masked then if not icon.texture.masked then
icon.texture:SetMask("") icon.texture:SetMask(nil)
icon.texture:SetTexCoord(0,1,0,1) icon.texture:SetTexCoord(0,1,0,1)
icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask") icon.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
icon.texture.masked = true icon.texture.masked = true

View File

@ -79,7 +79,7 @@ function Healthbar:CreateFrame(unit)
healthBar.bg:SetAlpha(1) healthBar.bg:SetAlpha(1)
healthBar.bg:SetVertexColor(Gladdy:SetColor(Gladdy.db.healthBarBgColor)) healthBar.bg:SetVertexColor(Gladdy:SetColor(Gladdy.db.healthBarBgColor))
healthBar.nameText = healthBar:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall") healthBar.nameText = healthBar:CreateFontString(nil, "LOW", "GameFontNormalSmall")
if (Gladdy.db.healthBarNameFontSize < 1) then if (Gladdy.db.healthBarNameFontSize < 1) then
healthBar.nameText:SetFont(Gladdy:SMFetch("font", "healthBarNameFont"), 1) healthBar.nameText:SetFont(Gladdy:SMFetch("font", "healthBarNameFont"), 1)
healthBar.nameText:Hide() healthBar.nameText:Hide()
@ -93,7 +93,7 @@ function Healthbar:CreateFrame(unit)
healthBar.nameText:SetJustifyH("CENTER") healthBar.nameText:SetJustifyH("CENTER")
healthBar.nameText:SetPoint("LEFT", Gladdy.db.healthTextLeftHOffset, Gladdy.db.healthTextLeftVOffset) healthBar.nameText:SetPoint("LEFT", Gladdy.db.healthTextLeftHOffset, Gladdy.db.healthTextLeftVOffset)
healthBar.healthText = healthBar:CreateFontString(nil, "OVERLAY") healthBar.healthText = healthBar:CreateFontString(nil, "LOW")
if (Gladdy.db.healthBarHealthFontSize < 1) then if (Gladdy.db.healthBarHealthFontSize < 1) then
healthBar.healthText:SetFont(Gladdy:SMFetch("font", "healthBarFont"), 1) healthBar.healthText:SetFont(Gladdy:SMFetch("font", "healthBarFont"), 1)
healthBar.healthText:Hide() healthBar.healthText:Hide()

View File

@ -215,7 +215,7 @@ function Pets:CreateFrame(unitId)
healthBar.bg:SetAlpha(1) healthBar.bg:SetAlpha(1)
healthBar.bg:SetVertexColor(Gladdy:SetColor(Gladdy.db.petHealthBarBgColor)) healthBar.bg:SetVertexColor(Gladdy:SetColor(Gladdy.db.petHealthBarBgColor))
healthBar.nameText = healthBar:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall") healthBar.nameText = healthBar:CreateFontString(nil, "LOW", "GameFontNormalSmall")
if (Gladdy.db.petHealthBarFontSize < 1) then if (Gladdy.db.petHealthBarFontSize < 1) then
healthBar.nameText:SetFont(Gladdy:SMFetch("font", "petHealthBarFont"), 1) healthBar.nameText:SetFont(Gladdy:SMFetch("font", "petHealthBarFont"), 1)
healthBar.nameText:Hide() healthBar.nameText:Hide()
@ -229,7 +229,7 @@ function Pets:CreateFrame(unitId)
healthBar.nameText:SetJustifyH("CENTER") healthBar.nameText:SetJustifyH("CENTER")
healthBar.nameText:SetPoint("LEFT", 5, 0) healthBar.nameText:SetPoint("LEFT", 5, 0)
healthBar.healthText = healthBar:CreateFontString(nil, "OVERLAY") healthBar.healthText = healthBar:CreateFontString(nil, "LOW")
if (Gladdy.db.petHealthBarFontSize < 1) then if (Gladdy.db.petHealthBarFontSize < 1) then
healthBar.healthText:SetFont(Gladdy:SMFetch("font", "petHealthBarFont"), 1) healthBar.healthText:SetFont(Gladdy:SMFetch("font", "petHealthBarFont"), 1)
healthBar.healthText:Hide() healthBar.healthText:Hide()

View File

@ -81,7 +81,7 @@ function Powerbar:CreateFrame(unit)
powerBar.bg:SetAllPoints(powerBar.energy) powerBar.bg:SetAllPoints(powerBar.energy)
powerBar.bg:SetVertexColor(Gladdy:SetColor(Gladdy.db.powerBarBgColor)) powerBar.bg:SetVertexColor(Gladdy:SetColor(Gladdy.db.powerBarBgColor))
powerBar.raceText = powerBar:CreateFontString(nil, "OVERLAY") powerBar.raceText = powerBar:CreateFontString(nil, "LOW")
powerBar.raceText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarRaceFontSize, Gladdy.db.powerTextLeftOutline and "OUTLINE") powerBar.raceText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarRaceFontSize, Gladdy.db.powerTextLeftOutline and "OUTLINE")
powerBar.raceText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor)) powerBar.raceText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor))
powerBar.raceText:SetShadowOffset(1, -1) powerBar.raceText:SetShadowOffset(1, -1)
@ -89,7 +89,7 @@ function Powerbar:CreateFrame(unit)
powerBar.raceText:SetJustifyH("CENTER") powerBar.raceText:SetJustifyH("CENTER")
powerBar.raceText:SetPoint("LEFT", Gladdy.db.powerTextLeftHOffset, Gladdy.db.powerTextLeftVOffset) powerBar.raceText:SetPoint("LEFT", Gladdy.db.powerTextLeftHOffset, Gladdy.db.powerTextLeftVOffset)
powerBar.powerText = powerBar:CreateFontString(nil, "OVERLAY") powerBar.powerText = powerBar:CreateFontString(nil, "LOW")
powerBar.powerText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarPowerFontSize, Gladdy.db.powerTextRightOutline and "OUTLINE") powerBar.powerText:SetFont(Gladdy:SMFetch("font", "powerBarFont"), Gladdy.db.powerBarPowerFontSize, Gladdy.db.powerTextRightOutline and "OUTLINE")
powerBar.powerText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor)) powerBar.powerText:SetTextColor(Gladdy:SetColor(Gladdy.db.powerBarFontColor))
powerBar.powerText:SetShadowOffset(1, -1) powerBar.powerText:SetShadowOffset(1, -1)

View File

@ -169,13 +169,13 @@ function Racial:UpdateFrame(unit)
if Gladdy.db.racialIconZoomed then if Gladdy.db.racialIconZoomed then
if racial.texture.masked then if racial.texture.masked then
racial.texture:SetMask("") racial.texture:SetMask(nil)
racial.texture:SetTexCoord(0.1,0.9,0.1,0.9) racial.texture:SetTexCoord(0.1,0.9,0.1,0.9)
racial.texture.masked = nil racial.texture.masked = nil
end end
else else
if not racial.texture.masked then if not racial.texture.masked then
racial.texture:SetMask("") racial.texture:SetMask(nil)
racial.texture:SetTexCoord(0,1,0,1) racial.texture:SetTexCoord(0,1,0,1)
racial.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask") racial.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
racial.texture.masked = true racial.texture.masked = true

756
Modules/Targets.lua Normal file
View File

@ -0,0 +1,756 @@
local string_gsub, floor, pairs = string.gsub, math.floor, pairs
local CreateFrame, SetPortraitTexture = CreateFrame, SetPortraitTexture
local UnitHealthMax, UnitHealth, UnitName, UnitClass, UnitGUID, UnitExists = UnitHealthMax, UnitHealth, UnitName, UnitClass, UnitGUID, UnitExists
local RAID_CLASS_COLORS = RAID_CLASS_COLORS
local Gladdy = LibStub("Gladdy")
local L = Gladdy.L
local Targets = Gladdy:NewModule("Targets", nil, {
targetEnabled = true,
targetWidth = 128,
targetHeight = 40,
targetPortraitEnabled = true,
targetPortraitBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp",
targetHealthBarFont = "DorisPP",
targetHealthBarHeight = 60,
targetHealthBarTexture = "Smooth",
targetHealthBarBorderStyle = "Gladdy Tooltip round",
targetHealthBarBorderSize = 9,
targetHealthBarBorderColor = { r = 0, g = 0, b = 0, a = 1 },
targetHealthBarColor = { r = 0, g = 1, b = 0, a = 1 },
targetHealthBarBgColor = { r = 0, g = 0, b = 0, a = 0.4 },
targetHealthBarFontColor = { r = 1, g = 1, b = 1, a = 1 },
targetHealthBarFontSize = 12,
targetHealthUnitName = true,
targetHealthPercentage = true,
targetHealthBarClassColored = true,
targetXOffset = 286,
targetYOffset = 0,
targetGroup = false,
targetMargin = 1,
targetFrameStrata = "MEDIUM",
targetFrameLevel = 5,
})
function Targets:Initialize()
self.frames = {}
if Gladdy.db.targetEnabled then
self:RegisterMessage("JOINED_ARENA")
self:RegisterMessage("ENEMY_SPOTTED")
self:RegisterMessage("UNIT_DESTROYED")
self:RegisterMessage("UNIT_DEATH")
-- self:RegisterMessage("ENEMY_STEALTH")
-- self:RegisterMessage("UNIT_SPEC")
end
end
function Targets:UpdateFrameOnce()
if Gladdy.db.targetEnabled then
self:RegisterMessage("JOINED_ARENA")
self:RegisterMessage("ENEMY_SPOTTED")
self:RegisterMessage("UNIT_DESTROYED")
self:RegisterMessage("UNIT_DEATH")
else
self:UnregisterAllMessages()
end
end
function Targets:JOINED_ARENA()
for _,v in pairs(self.frames) do
v.healthBar:SetAlpha(0)
end
if Gladdy.db.targetEnabled then
self:RegisterEvent("UNIT_TARGET")
self:SetScript("OnEvent", function(_, event, unitId)
if event == "UNIT_TARGET" then
Targets:CheckUnitTarget(unitId)
end
end)
end
end
function Targets:UNIT_DEATH(unitId)
local unit = string_gsub(unitId, "%d$", "%1target")
local healthBar = self.frames[unit].healthBar
if (not healthBar) then
return
end
healthBar:SetAlpha(0)
healthBar:SetScript("OnUpdate", nil)
healthBar.portrait:SetTexture(nil)
end
function Targets:UNIT_DESTROYED(unitId)
local unit = string_gsub(unitId, "%d$", "%1target")
local healthBar = self.frames[unit].healthBar
if (not healthBar) then
return
end
healthBar:SetAlpha(0)
healthBar:SetScript("OnUpdate", nil)
healthBar.portrait:SetTexture(nil)
end
function Targets:ENEMY_SPOTTED(unit)
if Gladdy.db.targetEnabled then
self:CheckUnitTarget(unit)
end
end
local targetsHealth = {}
function Targets:CheckUnitTarget(unitId)
if (not unitId) then
return
end
local unitPrefix = string_gsub(unitId, "%d$", "")
local unit = string_gsub(unitId, "%d$", "%1target")
if unitPrefix ~= "arena" then
return
end
local targetsFrame = self.frames[unit]
if (not targetsFrame) then
return
end
if ( UnitGUID(unit)) then
-- print(unit .. "'s name:" .. UnitName(unit))
-- print(unit .. "'s HP:" .. UnitHealth(unit) .."/"..UnitHealthMax(unit))
targetsFrame.healthBar:SetAlpha(1)
targetsFrame.healthBar.hp:SetMinMaxValues(0, UnitHealthMax(unit))
targetsFrame.healthBar.hp:SetValue(UnitHealth(unit))
Targets:SetHealthText(targetsFrame.healthBar, UnitHealth(unit), UnitHealthMax(unit))
SetPortraitTexture(targetsFrame.healthBar.portrait, unit)
targetsFrame.healthBar:SetScript("OnUpdate", function(self)
if targetsHealth[self.unit] ~= UnitHealth(self.unit) then
-- print("OnUpdate Unit HP:" .. self.unit .. " -> " .. UnitHealth(self.unit) .. "/" .. UnitHealthMax(self.unit))
self.hp:SetValue(UnitHealth(self.unit))
Targets:SetHealthText(self, UnitHealth(self.unit), UnitHealthMax(self.unit))
targetsHealth[self.unit] = UnitHealth(self.unit)
end
end)
Targets:SetText(unit)
Targets:SetHealthStatusBarColor(unit)
else
targetsHealth[unit] = nil
targetsFrame.healthBar:SetAlpha(0)
targetsFrame.healthBar:SetScript("OnUpdate", nil)
targetsFrame.healthBar.portrait:SetTexture(nil)
end
end
function Targets:Test(unitId)
if Gladdy.db.targetEnabled then
local unit = string_gsub(unitId, "%d$", "%1target")
local targetsFrame = self.frames[unit]
if (not targetsFrame) then
return
end
targetsFrame.healthBar:SetAlpha(1)
targetsFrame.healthBar.hp:SetMinMaxValues(0, 12000)
targetsFrame.healthBar.hp:SetValue(7000)
Targets:SetHealthText(targetsFrame.healthBar, 7000, 12000)
SetPortraitTexture(targetsFrame.healthBar.portrait, "player")
Targets:SetText(unit)
Targets:SetHealthStatusBarColor(unit)
self:RegisterEvent("UNIT_TARGET")
self:SetScript("OnEvent", function(_, event, unitId)
if event == "UNIT_TARGET" then
Targets:CheckUnitTarget(unitId)
end
end)
end
end
function Targets:CreateFrame(unitId)
local unit = string_gsub(unitId, "%d$", "%1target")
if self.frames[unit] then
return
end
local button = CreateFrame("Frame", "GladdyButtonFrameTarget" .. unit, Gladdy.frame)
button:SetMovable(true)
--button:SetAlpha(0)
button:SetPoint("LEFT", Gladdy.buttons[unitId].healthBar, "RIGHT", Gladdy.db.targetXOffset, Gladdy.db.targetYOffset)
local secure = CreateFrame("Button", "GladdyButton" .. unit, button, "SecureActionButtonTemplate, SecureHandlerEnterLeaveTemplate")
secure:RegisterForClicks("AnyUp")
secure:RegisterForClicks("AnyDown")
secure:SetAttribute("*type1", "target")
secure:SetAttribute("*type2", "focus")
secure:SetAttribute("unit", unit)
secure:SetAllPoints(button)
button.unit = unit
button.secure = secure
local healthBar = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
healthBar:SetBackdrop({ edgeFile = Gladdy:SMFetch("border", "targetHealthBarBorderStyle"),
edgeSize = Gladdy.db.targetHealthBarBorderSize })
healthBar:SetBackdropBorderColor(Gladdy:SetColor(Gladdy.db.targetHealthBarBorderColor))
healthBar:SetFrameStrata(Gladdy.db.targetFrameStrata)
healthBar:SetFrameLevel(Gladdy.db.targetFrameLevel)
healthBar:SetAllPoints(button)
healthBar:SetAlpha(0)
healthBar.portrait = healthBar:CreateTexture(nil, "BACKGROUND")
healthBar.portrait:SetPoint("LEFT", healthBar, "RIGHT")
healthBar.portrait:SetTexCoord(0.1, 0.9, 0.1, 0.9)
-- SetPortraitTexture(healthBar.portrait, "player")
healthBar.portrait.border = healthBar:CreateTexture(nil, "OVERLAY")
healthBar.portrait.border:SetAllPoints(healthBar.portrait)
healthBar.portrait.border:SetTexture(Gladdy.db.classIconBorderStyle)
healthBar.portrait.border:SetVertexColor(Gladdy:SetColor(Gladdy.db.targetHealthBarBorderColor))
healthBar.hp = CreateFrame("StatusBar", nil, healthBar)
healthBar.hp:SetStatusBarTexture(Gladdy:SMFetch("statusbar", "targetHealthBarTexture"))
healthBar.hp:SetStatusBarColor(Gladdy:SetColor(Gladdy.db.targetHealthBarColor))
healthBar.hp:SetMinMaxValues(0, 100)
healthBar.hp:SetFrameStrata(Gladdy.db.targetFrameStrata)
healthBar.hp:SetFrameLevel(Gladdy.db.targetFrameLevel - 1)
healthBar.hp:SetAllPoints(healthBar)
healthBar.bg = healthBar.hp:CreateTexture(nil, "BACKGROUND")
healthBar.bg:SetTexture(Gladdy:SMFetch("statusbar", "targetHealthBarTexture"))
healthBar.bg:ClearAllPoints()
healthBar.bg:SetAllPoints(healthBar.hp)
healthBar.bg:SetAlpha(1)
healthBar.bg:SetVertexColor(Gladdy:SetColor(Gladdy.db.targetHealthBarBgColor))
healthBar.nameText = healthBar:CreateFontString(nil, "LOW", "GameFontNormalSmall")
if (Gladdy.db.targetHealthBarFontSize < 1) then
healthBar.nameText:SetFont(Gladdy:SMFetch("font", "targetHealthBarFont"), 1)
healthBar.nameText:Hide()
else
healthBar.nameText:SetFont(Gladdy:SMFetch("font", "targetHealthBarFont"), Gladdy.db.targetHealthBarFontSize)
healthBar.nameText:Show()
end
healthBar.nameText:SetTextColor(Gladdy:SetColor(Gladdy.db.targetHealthBarFontColor))
healthBar.nameText:SetShadowOffset(1, -1)
healthBar.nameText:SetShadowColor(0, 0, 0, 1)
healthBar.nameText:SetJustifyH("CENTER")
healthBar.nameText:SetPoint("LEFT", 5, 0)
healthBar.healthText = healthBar:CreateFontString(nil, "LOW")
if (Gladdy.db.targetHealthBarFontSize < 1) then
healthBar.healthText:SetFont(Gladdy:SMFetch("font", "targetHealthBarFont"), 1)
healthBar.healthText:Hide()
else
healthBar.healthText:SetFont(Gladdy:SMFetch("font", "targetHealthBarFont"), Gladdy.db.targetHealthBarFontSize)
healthBar.healthText:Hide()
end
healthBar.healthText:SetTextColor(Gladdy:SetColor(Gladdy.db.targetHealthBarFontColor))
healthBar.healthText:SetShadowOffset(1, -1)
healthBar.healthText:SetShadowColor(0, 0, 0, 1)
healthBar.healthText:SetJustifyH("CENTER")
healthBar.healthText:SetPoint("RIGHT", -5, 0)
healthBar.unit = unit
button.healthBar = healthBar
healthBar:RegisterUnitEvent("UNIT_HEALTH_FREQUENT", unit)
healthBar:RegisterUnitEvent("UNIT_MAXHEALTH", unit)
healthBar:RegisterUnitEvent("UNIT_PORTRAIT_UPDATE", unit)
healthBar:RegisterUnitEvent("UNIT_NAME_UPDATE", unit)
-- healthBar:SetScript("OnEvent", Targets.OnEvent)
button:SetWidth(Gladdy.db.targetWidth)
button:SetHeight(Gladdy.db.targetHeight)
self.frames[unit] = button
end
function Targets.OnEvent(self, event, unit)
-- if event == "UNIT_PORTRAIT_UPDATE" then
-- SetPortraitTexture(self.portrait, unit)
-- end
-- local health = UnitHealth(unit)
-- local healthMax = UnitHealthMax(unit)
-- self.hp:SetMinMaxValues(0, healthMax)
-- self.hp:SetValue(health)
-- Targets:SetHealthText(self, health, healthMax)
end
function Targets:UpdateFrame(unitId)
local unit = string_gsub(unitId, "%d$", "%1target")
local healthBar = self.frames[unit].healthBar
if (not healthBar) then
return
end
healthBar:SetFrameStrata(Gladdy.db.targetFrameStrata)
healthBar:SetFrameLevel(Gladdy.db.targetFrameLevel)
healthBar.hp:SetFrameStrata(Gladdy.db.targetFrameStrata)
healthBar.hp:SetFrameLevel(Gladdy.db.targetFrameLevel - 1)
if not Gladdy.db.targetEnabled then
self.frames[unit]:Hide()
else
self.frames[unit]:Show()
end
self.frames[unit]:SetWidth(Gladdy.db.targetWidth)
self.frames[unit]:SetHeight(Gladdy.db.targetHeight)
Gladdy:SetPosition(self.frames[unit], unitId, "targetXOffset", "targetYOffset", Targets:LegacySetPosition(unit, unitId), Targets)
if (Gladdy.db.targetGroup) then
if (unit == "arena1target") then
self.frames[unit]:ClearAllPoints()
self.frames[unit]:SetPoint("TOPLEFT", Gladdy.buttons[unitId].healthBar, "TOPLEFT", Gladdy.db.targetXOffset, Gladdy.db.targetYOffset)
else
local previousTarget = "arena" .. string_gsub(string_gsub(unit, "arena", ""), "target", "") - 1 .. "target"
self.frames[unit]:ClearAllPoints()
self.frames[unit]:SetPoint("TOPLEFT", self.frames[previousTarget], "BOTTOMLEFT", 0, - Gladdy.db.targetMargin)
end
else
self.frames[unit]:ClearAllPoints()
self.frames[unit]:SetPoint("TOPLEFT", Gladdy.buttons[unitId].healthBar, "TOPLEFT", Gladdy.db.targetXOffset, Gladdy.db.targetYOffset)
end
healthBar.portrait:SetHeight(Gladdy.db.targetHeight)
healthBar.portrait:SetWidth(Gladdy.db.targetHeight)
if not Gladdy.db.targetPortraitEnabled then
healthBar.portrait:Hide()
healthBar.portrait.border:Hide()
else
healthBar.portrait:Show()
healthBar.portrait.border:Show()
end
healthBar.portrait.border:SetTexture(Gladdy.db.targetPortraitBorderStyle)
healthBar.portrait.border:SetVertexColor(Gladdy:SetColor(Gladdy.db.targetHealthBarBorderColor))
healthBar.bg:SetTexture(Gladdy:SMFetch("statusbar", "targetHealthBarTexture"))
healthBar.bg:SetVertexColor(Gladdy:SetColor(Gladdy.db.targetHealthBarBgColor))
healthBar:SetBackdrop({ edgeFile = Gladdy:SMFetch("border", "targetHealthBarBorderStyle"),
edgeSize = Gladdy.db.targetHealthBarBorderSize })
healthBar:SetBackdropBorderColor(Gladdy:SetColor(Gladdy.db.targetHealthBarBorderColor))
healthBar.hp:SetStatusBarTexture(Gladdy:SMFetch("statusbar", "targetHealthBarTexture"))
healthBar.hp:SetStatusBarColor(Gladdy:SetColor(Gladdy.db.targetHealthBarColor))
healthBar.hp:ClearAllPoints()
healthBar.hp:SetPoint("TOPLEFT", healthBar, "TOPLEFT", (Gladdy.db.targetHealthBarBorderSize/Gladdy.db.statusbarBorderOffset), -(Gladdy.db.targetHealthBarBorderSize/Gladdy.db.statusbarBorderOffset))
healthBar.hp:SetPoint("BOTTOMRIGHT", healthBar, "BOTTOMRIGHT", -(Gladdy.db.targetHealthBarBorderSize/Gladdy.db.statusbarBorderOffset), (Gladdy.db.targetHealthBarBorderSize/Gladdy.db.statusbarBorderOffset))
if (Gladdy.db.targetHealthBarFontSize < 1) then
healthBar.nameText:SetFont(Gladdy:SMFetch("font", "targetHealthBarFont"), 1)
healthBar.healthText:SetFont(Gladdy:SMFetch("font", "targetHealthBarFont"), 1)
healthBar.nameText:Hide()
healthBar.healthText:Hide()
else
healthBar.nameText:SetFont(Gladdy:SMFetch("font", "targetHealthBarFont"), Gladdy.db.targetHealthBarFontSize)
healthBar.nameText:Show()
healthBar.healthText:SetFont(Gladdy:SMFetch("font", "targetHealthBarFont"), Gladdy.db.targetHealthBarFontSize)
healthBar.healthText:Show()
end
healthBar.nameText:SetTextColor(Gladdy:SetColor(Gladdy.db.targetHealthBarFontColor))
healthBar.healthText:SetTextColor(Gladdy:SetColor(Gladdy.db.targetHealthBarFontColor))
if (unit == "arena1target") then
Gladdy:CreateMover(self.frames[unit], "targetXOffset", "targetYOffset", L["Targets"], {"TOPLEFT", "TOPLEFT"})
end
end
function Targets:SetHealthStatusBarColor(unit)
local targetsFrame = self.frames[unit]
if not targetsFrame then
return
end
local class = select(2, UnitClass(unit))
if not class then
return
end
local healthBar = targetsFrame.healthBar
if not healthBar.hp.oorFactor then
healthBar.hp.oorFactor = 1
end
healthBar.bg:SetVertexColor(Gladdy:SetColor(Gladdy.db.targetHealthBarBgColor))
if Gladdy.db.targetHealthBarClassColored then
healthBar.hp:SetStatusBarColor(
RAID_CLASS_COLORS[class].r / healthBar.hp.oorFactor,
RAID_CLASS_COLORS[class].g / healthBar.hp.oorFactor,
RAID_CLASS_COLORS[class].b / healthBar.hp.oorFactor, 1)
end
end
function Targets:SetHealthText(healthBar, health, healthMax)
local healthText = ""
if healthMax ~= 0 then
local healthPercentage = floor(health * 100 / healthMax)
if (Gladdy.db.targetHealthPercentage) then
healthText = ("%d%%"):format(healthPercentage)
end
else
healthText = ""
end
healthBar.healthText:SetText(healthText)
end
function Targets:SetText(unit)
local targetsFrame = self.frames[unit]
if not targetsFrame then
return
end
local nameText = ""
local unitName = UnitName(unit)
if unitName and Gladdy.db.targetHealthUnitName then
nameText = unitName
else
nameText = ""
end
targetsFrame.healthBar.nameText:SetText(nameText)
end
local function option(params)
local defaults = {
get = function(info)
local key = info.arg or info[#info]
return Gladdy.dbi.profile[key]
end,
set = function(info, value)
local key = info.arg or info[#info]
Gladdy.dbi.profile[key] = value
Gladdy.options.args.Targets.args.group.args.border.args.targetHealthBarBorderSize.max = Gladdy.db.targetHeight/2
if Gladdy.db.targetHealthBarBorderSize > Gladdy.db.targetHeight/2 then
Gladdy.db.targetHealthBarBorderSize = Gladdy.db.targetHeight/2
end
Gladdy:UpdateFrame()
end,
}
for k, v in pairs(params) do
defaults[k] = v
end
return defaults
end
function Targets:GetOptions()
return {
header = {
type = "header",
name = L["Targets"],
order = 2,
},
targetEnabled = Gladdy:option({
type = "toggle",
name = L["Enabled"],
desc = L["Enables Targets module"],
order = 3,
}),
targetGroup = option({
type = "toggle",
name = L["Group Targets"],
order = 4,
}),
group = {
type = "group",
childGroups = "tree",
name = L["Frame"],
order = 3,
disabled = function() return not Gladdy.db.targetEnabled end,
args = {
general = {
type = "group",
name = L["General"],
order = 1,
args = {
headerAuras = {
type = "header",
name = L["General"],
order = 1,
},
targetHeight = option({
type = "range",
name = L["Bar height"],
desc = L["Height of the bar"],
order = 3,
min = 10,
max = 100,
step = 1,
width = "full",
}),
targetWidth = option({
type = "range",
name = L["Bar width"],
desc = L["Width of the bar"],
order = 4,
min = 10,
max = 300,
step = 1,
width = "full",
}),
targetMargin = option({
type = "range",
name = L["Margin"],
desc = L["Height of the bar"],
order = 6,
disabled = function()
return not Gladdy.db.targetGroup
end,
min = 0,
max = 50,
step = .1,
}),
targetHealthBarTexture = option({
type = "select",
name = L["Bar texture"],
desc = L["Texture of the bar"],
order = 7,
dialogControl = "LSM30_Statusbar",
values = AceGUIWidgetLSMlists.statusbar,
}),
targetHealthBarColor = Gladdy:colorOption({
type = "color",
name = L["Health color"],
desc = L["Color of the status bar"],
order = 8,
hasAlpha = true,
}),
targetHealthBarBgColor = Gladdy:colorOption({
type = "color",
name = L["Background color"],
desc = L["Color of the status bar background"],
order = 9,
hasAlpha = true,
}),
},
},
portrait = {
type = "group",
name = L["Portrait"],
order = 2,
args = {
headerAuras = {
type = "header",
name = L["Portrait"],
order = 1,
},
targetPortraitEnabled = Gladdy:option({
type = "toggle",
name = L["Enabled"],
order = 2,
}),
targetPortraitBorderStyle = Gladdy:option({
type = "select",
name = L["Border style"],
order = 3,
values = Gladdy:GetIconStyles()
}),
},
},
font = {
type = "group",
name = L["Font"],
order = 3,
args = {
header = {
type = "header",
name = L["Font"],
order = 1,
},
targetHealthBarFont = option({
type = "select",
name = L["Font"],
desc = L["Font of the bar"],
order = 11,
dialogControl = "LSM30_Font",
values = AceGUIWidgetLSMlists.font,
}),
targetHealthBarFontColor = Gladdy:colorOption({
type = "color",
name = L["Font color"],
desc = L["Color of the text"],
order = 12,
hasAlpha = true,
}),
targetHealthBarFontSize = option({
type = "range",
name = L["Font size"],
desc = L["Size of the text"],
order = 13,
min = 0,
max = 20,
width = "full",
}),
},
},
border = {
type = "group",
name = L["Border"],
order = 4,
args = {
header = {
type = "header",
name = L["Border"],
order = 1,
},
targetHealthBarBorderStyle = option({
type = "select",
name = L["Border style"],
order = 21,
dialogControl = "LSM30_Border",
values = AceGUIWidgetLSMlists.border,
}),
targetHealthBarBorderSize = option({
type = "range",
name = L["Border size"],
desc = L["Size of the border"],
order = 22,
min = 0.5,
max = Gladdy.db.targetHeight/2,
step = 0.5,
width = "full",
}),
targetHealthBarBorderColor = Gladdy:colorOption({
type = "color",
name = L["Border color"],
desc = L["Color of the border"],
order = 23,
hasAlpha = true,
}),
},
},
position = {
type = "group",
name = L["Position"],
order = 5,
args = {
header = {
type = "header",
name = L["Position"],
order = 1,
},
targetXOffset = Gladdy:option({
type = "range",
name = L["Horizontal offset"],
order = 22,
min = -600,
max = 600,
step = 0.1,
width = "full",
}),
targetYOffset = Gladdy:option({
type = "range",
name = L["Vertical offset"],
order = 23,
min = -600,
max = 600,
step = 0.1,
width = "full",
}),
}
},
frameStrata = {
type = "group",
name = L["Frame Strata and Level"],
order = 6,
args = {
headerAuraLevel = {
type = "header",
name = L["Frame Strata and Level"],
order = 1,
},
targetFrameStrata = Gladdy:option({
type = "select",
name = L["Frame Strata"],
order = 2,
values = Gladdy.frameStrata,
sorting = Gladdy.frameStrataSorting,
width = "full",
}),
targetFrameLevel = Gladdy:option({
type = "range",
name = L["Frame Level"],
min = 1,
max = 500,
step = 1,
order = 3,
width = "full",
}),
},
},
healthValues = {
type = "group",
name = L["Health Bar Text"],
order = 7,
args = {
header = {
type = "header",
name = L["Health Bar Text"],
order = 1,
},
targetHealthUnitName = option({
type = "toggle",
name = L["Show name text"],
desc = L["Show the units name"],
order = 2,
width = "full",
}),
targetHealthPercentage = option({
type = "toggle",
name = L["Show health percentage"],
desc = L["Show health percentage on the health bar"],
order = 33,
}),
},
},
},
},
}
end
---------------------------
-- LAGACY HANDLER
---------------------------
function Targets:LegacySetPosition(unit, unitId)
if Gladdy.db.newLayout then
return Gladdy.db.newLayout
end
self.frames[unit]:ClearAllPoints()
self.frames[unit]:SetPoint("LEFT", Gladdy.buttons[unitId].healthBar, "RIGHT", Gladdy.db.targetXOffset, Gladdy.db.targetYOffset)
if (Gladdy.db.tagetsGroup) then
if (unit == "arena1target") then
self.frames[unit]:SetPoint("LEFT", Gladdy.buttons[unitId].healthBar, "RIGHT", Gladdy.db.targetXOffset, Gladdy.db.targetYOffset)
else
local previousTarget = "arena" .. string_gsub(string_gsub(unit, "arena", ""), "target", "") - 1 .. "target"
self.frames[unit]:ClearAllPoints()
self.frames[unit]:SetPoint("TOPLEFT", self.frames[previousTarget], "BOTTOMLEFT", 0, - Gladdy.db.targetMargin)
end
else
self.frames[unit]:ClearAllPoints()
self.frames[unit]:SetPoint("LEFT", Gladdy.buttons[unitId].healthBar, "RIGHT", Gladdy.db.targetXOffset, Gladdy.db.targetYOffset)
end
return Gladdy.db.newLayout
end

View File

@ -203,15 +203,13 @@ end
function TotemPlates:NAME_PLATE_UNIT_REMOVED(unitID) function TotemPlates:NAME_PLATE_UNIT_REMOVED(unitID)
local nameplate = C_NamePlate.GetNamePlateForUnit(unitID) local nameplate = C_NamePlate.GetNamePlateForUnit(unitID)
self.activeTotemNameplates[unitID] = nil self.activeTotemNameplates[unitID] = nil
--self:ToggleAddon(nameplate, true)
if nameplate.gladdyTotemFrame then if nameplate.gladdyTotemFrame then
nameplate.gladdyTotemFrame:Hide() nameplate.gladdyTotemFrame:Hide()
nameplate.gladdyTotemFrame:SetParent(nil) nameplate.gladdyTotemFrame:SetParent(nil)
tinsert(self.totemPlateCache, nameplate.gladdyTotemFrame) tinsert(self.totemPlateCache, nameplate.gladdyTotemFrame)
nameplate.gladdyTotemFrame = nil nameplate.gladdyTotemFrame = nil
end end
if (self.addon == "ElvUI") then
self:ToggleAddon(nameplate, true)
end
end end
--------------------------------------------------- ---------------------------------------------------
@ -375,25 +373,23 @@ function TotemPlates:ToggleAddon(nameplate, show)
local addonFrames = { self:GetAddonFrame(nameplate) } local addonFrames = { self:GetAddonFrame(nameplate) }
if addonFrames and #addonFrames > 0 then if addonFrames and #addonFrames > 0 then
if show then if show then
for _, frame in ipairs(addonFrames) do for _,v in ipairs(addonFrames) do
if frame.UpdateAllElements then if nameplate.unitFrame and nameplate.unitFrame.UpdateAllElements then
Gladdy:Debug("INFO", "TotemPlates:ToggleAddon - NAME_PLATE_UNIT_ADDED - nameplate.unitFrame:UpdateAllElements") Gladdy:Debug("INFO", "TotemPlates:ToggleAddon - NAME_PLATE_UNIT_ADDED - nameplate.unitFrame:UpdateAllElements")
frame:Show() nameplate.unitFrame:UpdateAllElements("NAME_PLATE_UNIT_ADDED")
frame:UpdateAllElements("NAME_PLATE_UNIT_ADDED")
else else
Gladdy:Debug("INFO", "TotemPlates:ToggleAddon - NAME_PLATE_UNIT_ADDED - Show") Gladdy:Debug("INFO", "TotemPlates:ToggleAddon - NAME_PLATE_UNIT_ADDED - Show")
frame:Show() v:Show()
end end
end end
else else
for _, frame in ipairs(addonFrames) do for _,v in ipairs(addonFrames) do
if frame.UpdateAllElements then if nameplate.unitFrame and nameplate.unitFrame.UpdateAllElements then
Gladdy:Debug("INFO", "TotemPlates:ToggleAddon - NAME_PLATE_UNIT_REMOVED - nameplate.unitFrame:UpdateAllElements") Gladdy:Debug("INFO", "TotemPlates:ToggleAddon - NAME_PLATE_UNIT_REMOVED - nameplate.unitFrame:UpdateAllElements")
frame:UpdateAllElements("NAME_PLATE_UNIT_REMOVED") nameplate.unitFrame:UpdateAllElements("NAME_PLATE_UNIT_REMOVED")
frame:Hide()
else else
Gladdy:Debug("INFO", "TotemPlates:ToggleAddon - NAME_PLATE_UNIT_REMOVED - Hide") Gladdy:Debug("INFO", "TotemPlates:ToggleAddon - NAME_PLATE_UNIT_REMOVED - Hide")
frame:Hide() v:Hide()
end end
end end
end end
@ -406,7 +402,7 @@ function TotemPlates.OnUpdate(self)
else else
self.selectionHighlight:SetAlpha(0) self.selectionHighlight:SetAlpha(0)
end end
if (TotemPlates.addon == "Plater" or TotemPlates.addon == "Tukui") and self.parent and self.parent.unitFrame then if (TotemPlates.addon == "Plater" or TotemPlates.addon == "Tukui" or TotemPlates.addon == "ElvUI") and self.parent and self.parent.unitFrame then
self.parent.unitFrame:Hide() self.parent.unitFrame:Hide()
end end
end end
@ -458,7 +454,7 @@ function TotemPlates:OnUnitEvent(unitID)
nameplate.gladdyTotemFrame.parent = nameplate nameplate.gladdyTotemFrame.parent = nameplate
nameplate.gladdyTotemFrame:Show() nameplate.gladdyTotemFrame:Show()
TotemPlates:SetTotemAlpha(nameplate.gladdyTotemFrame, unitID) TotemPlates:SetTotemAlpha(nameplate.gladdyTotemFrame, unitID)
self:ToggleAddon(nameplate, false) self:ToggleAddon(nameplate)
self.activeTotemNameplates[unitID] = nameplate self.activeTotemNameplates[unitID] = nameplate
elseif totemDataEntry and not Gladdy.db.npTotemColors["totem" .. totemDataEntry.id].enabled and Gladdy.db.npTotemsHideDisabledTotems then elseif totemDataEntry and not Gladdy.db.npTotemColors["totem" .. totemDataEntry.id].enabled and Gladdy.db.npTotemsHideDisabledTotems then
if nameplate.gladdyTotemFrame then if nameplate.gladdyTotemFrame then
@ -467,7 +463,7 @@ function TotemPlates:OnUnitEvent(unitID)
tinsert(self.totemPlateCache, nameplate.gladdyTotemFrame) tinsert(self.totemPlateCache, nameplate.gladdyTotemFrame)
nameplate.gladdyTotemFrame = nil nameplate.gladdyTotemFrame = nil
end end
self:ToggleAddon(nameplate, false) self:ToggleAddon(nameplate)
else else
self:ToggleAddon(nameplate, true) self:ToggleAddon(nameplate, true)
end end

View File

@ -182,13 +182,13 @@ function Trinket:UpdateFrame(unit)
if Gladdy.db.trinketIconZoomed then if Gladdy.db.trinketIconZoomed then
if trinket.texture.masked then if trinket.texture.masked then
trinket.texture:SetMask("") trinket.texture:SetMask(nil)
trinket.texture:SetTexCoord(0.1,0.9,0.1,0.9) trinket.texture:SetTexCoord(0.1,0.9,0.1,0.9)
trinket.texture.masked = nil trinket.texture.masked = nil
end end
else else
if not trinket.texture.masked then if not trinket.texture.masked then
trinket.texture:SetMask("") trinket.texture:SetMask(nil)
trinket.texture:SetTexCoord(0,1,0,1) trinket.texture:SetTexCoord(0,1,0,1)
trinket.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask") trinket.texture:SetMask("Interface\\AddOns\\Gladdy\\Images\\mask")
trinket.texture.masked = true trinket.texture.masked = true

View File

@ -4,7 +4,7 @@
--- ---
## [v2.27-Release Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v2.27-Release/Gladdy_Classic_v2.27-Release.zip) ## [v2.23-Release Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v2.23-Release/Gladdy_Classic_v2.23-Release.zip)
###### <a target="_blank" rel="noopener noreferrer" href="https://www.paypal.me/xiconqoo/10"><img src="https://raw.githubusercontent.com/XiconQoo/Gladdy/readme-media/Paypal-Donate.png" height="30" style="margin-top:-30px;position:relative;top:20px;"></a> Please consider donating if you like my work ###### <a target="_blank" rel="noopener noreferrer" href="https://www.paypal.me/xiconqoo/10"><img src="https://raw.githubusercontent.com/XiconQoo/Gladdy/readme-media/Paypal-Donate.png" height="30" style="margin-top:-30px;position:relative;top:20px;"></a> Please consider donating if you like my work
@ -55,13 +55,11 @@ The goal is to make Gladdy highly configurable in it's appearance. Everything ca
## Contributors ## Contributors
- [XyzKangUI](https://github.com/XyzKangUI)
- [ManneN1](https://github.com/ManneN1) - [ManneN1](https://github.com/ManneN1)
- [AlexFolland](https://github.com/AlexFolland) - [AlexFolland](https://github.com/AlexFolland)
- [dfherr](https://github.com/dfherr) - [dfherr](https://github.com/dfherr)
- [miraage](https://github.com/miraage) - [miraage](https://github.com/miraage)
- [veiz](https://github.com/veiz) - [veiz](https://github.com/veiz)
- [Flamanis](https://github.com/Flamanis)
Thank you! Thank you!
@ -81,22 +79,9 @@ Thank you!
### Changes ### Changes
### v2.27-Release
- fix TotemPlates interfering with NeatPlates
### v2.26-Release
- fix TotemPlates interfering with Plater (thanks again [Flamanis](https://github.com/Flamanis))
### v2.25-Release
- fix TotemPlates interfering with ElvUI (thanks [Flamanis](https://github.com/Flamanis))
### v2.24-Release
- fix for WotLK v30402 (update libs)
- update DRList
- fix taint issue on first load up
### v2.23-Release ### v2.23-Release
- fix for WotLK v30401 (update libs + layers + masks) - **Targets**
- show targets
### v2.22-Release ### v2.22-Release
- fixed unwanted committed changes to LibCustomGlow - fixed unwanted committed changes to LibCustomGlow