From 346bb8ea7838880f86aea4c7787f70085243b775 Mon Sep 17 00:00:00 2001 From: MyGamesDevelopmentAcc <116946134+MyGamesDevelopmentAcc@users.noreply.github.com> Date: Mon, 31 Oct 2022 00:51:31 +0100 Subject: [PATCH] Fixes for 10.0 (#66) * Fixes for 10.0 Changes required by new handling of cast bar. Kept back compatiblity with color setting as much as I could. best to my knowledge * Fix to hide Blizzard frames Fix to hide Blizzard frames * Fix to hiding game frames * Valida frame names * Updated version of Ace It is weird as previous commits did not pop issues with Ace, even when sarena was run alone. However now it has so I updated the Ace libraries. * Fix for focus and target This has taken me much more time than I'd like. But for some reason the on click function receives different parameters when not overwritten in sArena.xml resulting in typerelease instead of type. type is correctly returned when overwriting onclick in sarena.xml however this is not allowed as this is a secure function and cannot be called. As I am not sure what is the difference or how to steer it properly for now I am leaving type1 and type2 attributes as well as adding typerelease ones. * Fix for focus and target when not using press and cast and ActionButtonUseKeyDown is true From version 10 games checkes, before perfoming registered action, whether user has ActionButtonUseKeyDown set to true or false. If it does not match registered click, the action is rejected. Therfore it is needed to handle both situation so regardless of user setting the registered actions will work. * Removed tabs * Updated version to 3.2.0 * Removed tabs from xml file * Removed commented out line * Removed previous check of Blizzard Arena addon loaded This addon no longer exists and seems it was changed to normal in game frame. * Additional formating fixes * Reverting incorrectly setup parameter for debugging Not sure how that got commited in, reverting this change (used during debugging) * Tab removals and format fixes in layouts * Added new globals to pass the lua check * Changed order --- .luacheckrc | 2 + .../AceConfigCmd-3.0/AceConfigCmd-3.0.lua | 35 ++- .../AceConfigDialog-3.0.lua | 138 +++++------ Ace3/AceConsole-3.0/AceConsole-3.0.lua | 8 +- Ace3/AceDB-3.0/AceDB-3.0.lua | 14 +- Ace3/AceDBOptions-3.0/AceDBOptions-3.0.lua | 6 +- Ace3/AceGUI-3.0/AceGUI-3.0.lua | 94 ++++---- .../AceGUIContainer-BlizOptionsGroup.lua | 9 +- .../widgets/AceGUIContainer-DropDownGroup.lua | 2 +- .../widgets/AceGUIContainer-Frame.lua | 20 +- .../widgets/AceGUIContainer-InlineGroup.lua | 2 +- .../widgets/AceGUIContainer-TabGroup.lua | 204 +++++++++++++++- .../widgets/AceGUIContainer-TreeGroup.lua | 28 ++- .../widgets/AceGUIContainer-Window.lua | 14 +- .../widgets/AceGUIWidget-CheckBox.lua | 20 +- .../widgets/AceGUIWidget-ColorPicker.lua | 4 - .../widgets/AceGUIWidget-DropDown-Items.lua | 8 +- .../widgets/AceGUIWidget-DropDown.lua | 13 +- .../widgets/AceGUIWidget-EditBox.lua | 4 - .../widgets/AceGUIWidget-Keybinding.lua | 6 +- .../AceGUI-3.0/widgets/AceGUIWidget-Label.lua | 16 +- .../widgets/AceGUIWidget-MultiLineEditBox.lua | 19 +- .../widgets/AceGUIWidget-Slider.lua | 26 +- .../CallbackHandler-1.0.lua | 23 +- Ace3/LibStub/LibStub.lua | 10 +- Layouts/BlizzArena.lua | 24 +- Layouts/BlizzTarget.lua | 24 +- Layouts/BlizzTourney.lua | 24 +- Layouts/Xaryu.lua | 18 +- sArena.lua | 227 ++++++++++-------- sArena.toc | 4 +- sArena.xml | 17 +- 32 files changed, 636 insertions(+), 427 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index a401523..29be49e 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -4,6 +4,8 @@ exclude_files = { } read_globals = { 'AbbreviateLargeNumbers', + 'ArenaEnemyFramesContainer', + 'ArenaEnemyPrepFramesContainer', 'AuraUtil', 'C_PvP', 'C_Timer', diff --git a/Ace3/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua b/Ace3/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua index 5113875..6dd6438 100644 --- a/Ace3/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua +++ b/Ace3/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua @@ -1,7 +1,7 @@ --- AceConfigCmd-3.0 handles access to an options table through the "command line" interface via the ChatFrames. -- @class file -- @name AceConfigCmd-3.0 --- @release $Id: AceConfigCmd-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ +-- @release $Id: AceConfigCmd-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ --[[ AceConfigCmd-3.0 @@ -37,17 +37,10 @@ local error, assert = error, assert -- WoW APIs 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 __index = function(self,k) return k end }) - - local function print(msg) (SELECTED_CHAT_FRAME or DEFAULT_CHAT_FRAME):AddMessage(msg) end @@ -401,7 +394,7 @@ local function handle(info, inputpos, tab, depth, retfalse) return end - local str = strsub(info.input,inputpos); + local strInput = strsub(info.input,inputpos); if tab.type=="execute" then ------------ execute -------------------------------------------- @@ -414,21 +407,21 @@ local function handle(info, inputpos, tab, depth, retfalse) local res = true if tab.pattern then - if not(type(tab.pattern)=="string") then err(info, inputpos, "'pattern' - expected a string") end - if not strmatch(str, tab.pattern) then - usererr(info, inputpos, "'"..str.."' - " .. L["invalid input"]) + if type(tab.pattern)~="string" then err(info, inputpos, "'pattern' - expected a string") end + if not strmatch(strInput, tab.pattern) then + usererr(info, inputpos, "'"..strInput.."' - " .. L["invalid input"]) return end end - do_final(info, inputpos, tab, "set", str) + do_final(info, inputpos, tab, "set", strInput) elseif tab.type=="toggle" then ------------ toggle -------------------------------------------- local b - local str = strtrim(strlower(str)) + local str = strtrim(strlower(strInput)) if str=="" then b = callmethod(info, inputpos, tab, "get") @@ -465,9 +458,9 @@ local function handle(info, inputpos, tab, depth, retfalse) elseif tab.type=="range" then ------------ range -------------------------------------------- - local val = tonumber(str) + local val = tonumber(strInput) if not val then - usererr(info, inputpos, "'"..str.."' - "..L["expected number"]) + usererr(info, inputpos, "'"..strInput.."' - "..L["expected number"]) return end if type(info.step)=="number" then @@ -487,7 +480,7 @@ local function handle(info, inputpos, tab, depth, retfalse) elseif tab.type=="select" then ------------ select ------------------------------------ - local str = strtrim(strlower(str)) + local str = strtrim(strlower(strInput)) local values = tab.values if type(values) == "function" or type(values) == "string" then @@ -528,7 +521,7 @@ local function handle(info, inputpos, tab, depth, retfalse) elseif tab.type=="multiselect" then ------------ multiselect ------------------------------------------- - local str = strtrim(strlower(str)) + local str = strtrim(strlower(strInput)) local values = tab.values if type(values) == "function" or type(values) == "string" then @@ -565,7 +558,7 @@ local function handle(info, inputpos, tab, depth, retfalse) --check that the opt is valid local ok - for k,v in pairs(values) do + for k in pairs(values) do if strlower(k)==opt then opt = k -- overwrite with key (in case of case mismatches) ok = true @@ -634,7 +627,7 @@ local function handle(info, inputpos, tab, depth, retfalse) elseif tab.type=="color" then ------------ color -------------------------------------------- - local str = strtrim(strlower(str)) + local str = strtrim(strlower(strInput)) if str == "" then --TODO: Show current value return @@ -706,7 +699,7 @@ local function handle(info, inputpos, tab, depth, retfalse) elseif tab.type=="keybinding" then ------------ keybinding -------------------------------------------- - local str = strtrim(strlower(str)) + local str = strtrim(strlower(strInput)) if str == "" then --TODO: Show current value return diff --git a/Ace3/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua b/Ace3/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua index a14e07d..4649c73 100644 --- a/Ace3/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua +++ b/Ace3/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua @@ -1,13 +1,13 @@ --- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables. -- @class file -- @name AceConfigDialog-3.0 --- @release $Id: AceConfigDialog-3.0.lua 1232 2020-04-14 22:21:22Z nevcairiel $ +-- @release $Id: AceConfigDialog-3.0.lua 1292 2022-09-29 08:00:11Z nevcairiel $ local LibStub = LibStub local gui = LibStub("AceGUI-3.0") local reg = LibStub("AceConfigRegistry-3.0") -local MAJOR, MINOR = "AceConfigDialog-3.0", 79 +local MAJOR, MINOR = "AceConfigDialog-3.0", 85 local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigDialog then return end @@ -22,19 +22,13 @@ AceConfigDialog.frame.closing = AceConfigDialog.frame.closing or {} AceConfigDialog.frame.closeAllOverride = AceConfigDialog.frame.closeAllOverride or {} -- Lua APIs -local tinsert, tsort, tremove = table.insert, table.sort, table.remove +local tinsert, tsort, tremove, wipe = table.insert, table.sort, table.remove, table.wipe local strmatch, format = string.match, string.format local error = error -local pairs, next, select, type, unpack, wipe, ipairs = pairs, next, select, type, unpack, wipe, ipairs +local pairs, next, select, type, unpack, ipairs = pairs, next, select, type, unpack, ipairs local tostring, tonumber = tostring, tonumber 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 = {} --[[ @@ -194,9 +188,8 @@ local function GetOptionsMemberValue(membername, option, options, path, appName, --We have a function to call local info = new() --traverse the options table, picking up the handler and filling the info with the path - local handler local group = options - handler = group.handler or handler + local handler = group.handler for i = 1, #path do group = GetSubOption(group, path[i]) @@ -535,8 +528,7 @@ local function OptionOnMouseLeave(widget, event) end local function GetFuncName(option) - local type = option.type - if type == "execute" then + if option.type == "execute" then return "func" else return "set" @@ -544,13 +536,15 @@ local function GetFuncName(option) end do local frame = AceConfigDialog.popup - if not frame then + if not frame or oldminor < 81 then frame = CreateFrame("Frame", nil, UIParent) AceConfigDialog.popup = frame frame:Hide() frame:SetPoint("CENTER", UIParent, "CENTER") frame:SetSize(320, 72) + frame:EnableMouse(true) -- Do not allow click-through on the frame frame:SetFrameStrata("TOOLTIP") + frame:SetFrameLevel(100) -- Lots of room to draw under it frame:SetScript("OnKeyDown", function(self, key) if key == "ESCAPE" then self:SetPropagateKeyboardInput(false) @@ -564,26 +558,17 @@ do end end) - 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) - end + local border = CreateFrame("Frame", nil, frame, "DialogBorderOpaqueTemplate") + border:SetAllPoints(frame) + frame:SetFixedFrameStrata(true) + frame:SetFixedFrameLevel(true) local text = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight") text:SetSize(290, 0) text:SetPoint("TOP", 0, -16) frame.text = text - local function newButton(text) + local function newButton(newText) local button = CreateFrame("Button", nil, frame) button:SetSize(128, 21) button:SetNormalFontObject(GameFontNormal) @@ -594,7 +579,7 @@ do button:GetPushedTexture():SetTexCoord(0.0, 1.0, 0.0, 0.71875) button:SetHighlightTexture(130762) -- "Interface\\Buttons\\UI-DialogBox-Button-Highlight" button:GetHighlightTexture():SetTexCoord(0.0, 1.0, 0.0, 0.71875) - button:SetText(text) + button:SetText(newText) return button end @@ -681,7 +666,7 @@ local function ActivateControl(widget, event, ...) if group[funcname] ~= nil then func = group[funcname] end - handler = group.handler or handler + handler = group.handler confirm = group.confirm validate = group.validate for i = 1, #path do @@ -745,7 +730,6 @@ local function ActivateControl(widget, event, ...) end end - local rootframe = user.rootframe if not validated or type(validated) == "string" then if not validated then if usage then @@ -760,8 +744,8 @@ local function ActivateControl(widget, event, ...) end -- show validate message - if rootframe.SetStatusText then - rootframe:SetStatusText(validated) + if user.rootframe.SetStatusText then + user.rootframe:SetStatusText(validated) else validationErrorPopup(validated) end @@ -798,14 +782,14 @@ local function ActivateControl(widget, event, ...) if type(confirm) == "boolean" then if confirm then if not confirmText then - local name, desc = option.name, option.desc - if type(name) == "function" then - name = name(info) + local option_name, desc = option.name, option.desc + if type(option_name) == "function" then + option_name = option_name(info) end if type(desc) == "function" then desc = desc(info) end - confirmText = name + confirmText = option_name if desc then confirmText = confirmText.." - "..desc end @@ -1147,8 +1131,6 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin --Control to feed local control - local name = GetOptionsMemberValue("name", v, options, path, appName) - if v.type == "execute" then local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName) @@ -1251,7 +1233,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin end tsort(sorting, sortTblAsStrings) end - for k, value in ipairs(sorting) do + for _, value in ipairs(sorting) do local text = values[value] local radio = gui:Create("CheckBox") radio:SetLabel(text) @@ -1333,8 +1315,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin control:SetWidth(width_multiplier) end --check:SetTriState(v.tristate) - for i = 1, #valuesort do - local key = valuesort[i] + for s = 1, #valuesort do + local key = valuesort[s] local value = GetOptionsMemberValue("get",v, options, path, appName, key) control:SetItemValue(key,value) end @@ -1346,8 +1328,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin control:PauseLayout() local width = GetOptionsMemberValue("width",v,options,path,appName) - for i = 1, #valuesort do - local value = valuesort[i] + for s = 1, #valuesort do + local value = valuesort[s] local text = values[value] local check = gui:Create("CheckBox") check:SetLabel(text) @@ -1364,7 +1346,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin elseif width == "half" then check:SetWidth(width_multiplier / 2) elseif (type(width) == "number") then - control:SetWidth(width_multiplier * width) + check:SetWidth(width_multiplier * width) elseif width == "full" then check.width = "fill" else @@ -1434,8 +1416,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin end control:SetImageSize(width, height) end - local width = GetOptionsMemberValue("width",v,options,path,appName) - control.width = not width and "fill" + local controlWidth = GetOptionsMemberValue("width",v,options,path,appName) + control.width = not controlWidth and "fill" end --Common Init @@ -1690,29 +1672,29 @@ function AceConfigDialog:FeedGroup(appName,options,container,rootframe,path, isR elseif grouptype == "select" then - local select = gui:Create("DropdownGroup") - select:SetTitle(name) - InjectInfo(select, options, group, path, rootframe, appName) - select:SetCallback("OnGroupSelected", GroupSelected) + local selectGroup = gui:Create("DropdownGroup") + selectGroup:SetTitle(name) + InjectInfo(selectGroup, options, group, path, rootframe, appName) + selectGroup:SetCallback("OnGroupSelected", GroupSelected) local status = AceConfigDialog:GetStatusTable(appName, path) if not status.groups then status.groups = {} end - select:SetStatusTable(status.groups) + selectGroup:SetStatusTable(status.groups) local grouplist, orderlist = BuildSelect(group, options, path, appName) - select:SetGroupList(grouplist, orderlist) - select:SetUserData("grouplist", grouplist) - select:SetUserData("orderlist", orderlist) + selectGroup:SetGroupList(grouplist, orderlist) + selectGroup:SetUserData("grouplist", grouplist) + selectGroup:SetUserData("orderlist", orderlist) local firstgroup = orderlist[1] if firstgroup then - select:SetGroup((GroupExists(appName, options, path,status.groups.selected) and status.groups.selected) or firstgroup) + selectGroup:SetGroup((GroupExists(appName, options, path,status.groups.selected) and status.groups.selected) or firstgroup) end - select.width = "fill" - select.height = "fill" + selectGroup.width = "fill" + selectGroup.height = "fill" - container:AddChild(select) + container:AddChild(selectGroup) --assume tree group by default --if parenttype is tree then this group is already a node on that tree @@ -1940,13 +1922,13 @@ end -- convert pre-39 BlizOptions structure to the new format if oldminor and oldminor < 39 and AceConfigDialog.BlizOptions then local old = AceConfigDialog.BlizOptions - local new = {} + local newOpt = {} for key, widget in pairs(old) do local appName = widget:GetUserData("appName") - if not new[appName] then new[appName] = {} end - new[appName][key] = widget + if not newOpt[appName] then newOpt[appName] = {} end + newOpt[appName][key] = widget end - AceConfigDialog.BlizOptions = new + AceConfigDialog.BlizOptions = newOpt else AceConfigDialog.BlizOptions = AceConfigDialog.BlizOptions or {} end @@ -1979,6 +1961,7 @@ end -- @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. -- @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, ...) local BlizOptions = AceConfigDialog.BlizOptions @@ -1994,7 +1977,6 @@ function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...) if not BlizOptions[appName][key] then local group = gui:Create("BlizOptionsGroup") BlizOptions[appName][key] = group - group:SetName(name or appName, parent) group:SetTitle(name or appName) group:SetUserData("appName", appName) @@ -2007,8 +1989,30 @@ function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...) end group:SetCallback("OnShow", FeedToBlizPanel) group:SetCallback("OnHide", ClearBlizPanel) - InterfaceOptions_AddCategory(group.frame) - return group.frame + 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) + end + return group.frame, group.frame.name else error(("%s has already been added to the Blizzard Options Window with the given path"):format(appName), 2) end diff --git a/Ace3/AceConsole-3.0/AceConsole-3.0.lua b/Ace3/AceConsole-3.0/AceConsole-3.0.lua index 678fa95..2361a3b 100644 --- a/Ace3/AceConsole-3.0/AceConsole-3.0.lua +++ b/Ace3/AceConsole-3.0/AceConsole-3.0.lua @@ -9,7 +9,7 @@ -- make into AceConsole. -- @class file -- @name AceConsole-3.0 --- @release $Id: AceConsole-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ +-- @release $Id: AceConsole-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ local MAJOR,MINOR = "AceConsole-3.0", 7 local AceConsole, oldminor = LibStub:NewLibrary(MAJOR, MINOR) @@ -29,10 +29,6 @@ local max = math.max -- WoW APIs 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: DEFAULT_CHAT_FRAME, SlashCmdList, hash_SlashCmdList - local tmp={} local function Print(self,frame,...) local n=0 @@ -174,7 +170,7 @@ function AceConsole:GetArgs(str, numargs, startpos) while true do -- find delimiter or hyperlink - local ch,_ + local _ pos,_,ch = strfind(str, delim_or_pipe, pos) if not pos then break end diff --git a/Ace3/AceDB-3.0/AceDB-3.0.lua b/Ace3/AceDB-3.0/AceDB-3.0.lua index 440330f..804cf2b 100644 --- a/Ace3/AceDB-3.0/AceDB-3.0.lua +++ b/Ace3/AceDB-3.0/AceDB-3.0.lua @@ -40,7 +40,7 @@ -- end -- @class file -- @name AceDB-3.0.lua --- @release $Id: AceDB-3.0.lua 1217 2019-07-11 03:06:18Z funkydude $ +-- @release $Id: AceDB-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 27 local AceDB = LibStub:NewLibrary(ACEDB_MAJOR, ACEDB_MINOR) @@ -53,10 +53,6 @@ local setmetatable, rawset, rawget = setmetatable, rawset, rawget -- WoW APIs 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.frame = AceDB.frame or CreateFrame("Frame") @@ -98,11 +94,11 @@ local function copyDefaults(dest, src) -- This is a metatable used for table defaults local mt = { -- This handles the lookup and creation of new subtables - __index = function(t,k) - if k == nil then return nil end + __index = function(t,k2) + if k2 == nil then return nil end local tbl = {} copyDefaults(tbl, v) - rawset(t, k, tbl) + rawset(t, k2, tbl) return tbl end, } @@ -115,7 +111,7 @@ local function copyDefaults(dest, src) end else -- Values are not tables, so this is just a simple return - local mt = {__index = function(t,k) return k~=nil and v or nil end} + local mt = {__index = function(t,k2) return k2~=nil and v or nil end} setmetatable(dest, mt) end elseif type(v) == "table" then diff --git a/Ace3/AceDBOptions-3.0/AceDBOptions-3.0.lua b/Ace3/AceDBOptions-3.0/AceDBOptions-3.0.lua index 6ed3103..9029c66 100644 --- a/Ace3/AceDBOptions-3.0/AceDBOptions-3.0.lua +++ b/Ace3/AceDBOptions-3.0/AceDBOptions-3.0.lua @@ -1,7 +1,7 @@ --- AceDBOptions-3.0 provides a universal AceConfig options screen for managing AceDB-3.0 profiles. -- @class file -- @name AceDBOptions-3.0 --- @release $Id: AceDBOptions-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ +-- @release $Id: AceDBOptions-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ local ACEDBO_MAJOR, ACEDBO_MINOR = "AceDBOptions-3.0", 15 local AceDBOptions = LibStub:NewLibrary(ACEDBO_MAJOR, ACEDBO_MINOR) @@ -13,10 +13,6 @@ local pairs, next = pairs, next -- WoW APIs 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.handlers = AceDBOptions.handlers or {} diff --git a/Ace3/AceGUI-3.0/AceGUI-3.0.lua b/Ace3/AceGUI-3.0/AceGUI-3.0.lua index cde61f6..f05b1ed 100644 --- a/Ace3/AceGUI-3.0/AceGUI-3.0.lua +++ b/Ace3/AceGUI-3.0/AceGUI-3.0.lua @@ -24,28 +24,22 @@ -- f:AddChild(btn) -- @class file -- @name AceGUI-3.0 --- @release $Id: AceGUI-3.0.lua 1231 2020-04-14 22:20:36Z nevcairiel $ +-- @release $Id: AceGUI-3.0.lua 1288 2022-09-25 14:19:00Z funkehdude $ local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 41 local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR) if not AceGUI then return end -- No upgrade needed -- Lua APIs -local tinsert = table.insert +local tinsert, wipe = table.insert, table.wipe local select, pairs, next, type = select, pairs, next, type local error, assert = error, assert local setmetatable, rawget = setmetatable, rawget -local math_max = math.max +local math_max, math_min, math_ceil = math.max, math.min, math.ceil -- WoW APIs 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.LayoutRegistry = AceGUI.LayoutRegistry or {} AceGUI.WidgetBase = AceGUI.WidgetBase or {} @@ -94,38 +88,38 @@ do AceGUI.objPools = AceGUI.objPools or {} local objPools = AceGUI.objPools --Returns a new instance, if none are available either returns a new table or calls the given contructor - function newWidget(type) - if not WidgetRegistry[type] then + function newWidget(widgetType) + if not WidgetRegistry[widgetType] then error("Attempt to instantiate unknown widget type", 2) end - if not objPools[type] then - objPools[type] = {} + if not objPools[widgetType] then + objPools[widgetType] = {} end - local newObj = next(objPools[type]) + local newObj = next(objPools[widgetType]) if not newObj then - newObj = WidgetRegistry[type]() - newObj.AceGUIWidgetVersion = WidgetVersions[type] + newObj = WidgetRegistry[widgetType]() + newObj.AceGUIWidgetVersion = WidgetVersions[widgetType] else - objPools[type][newObj] = nil + objPools[widgetType][newObj] = nil -- if the widget is older then the latest, don't even try to reuse it -- just forget about it, and grab a new one. - if not newObj.AceGUIWidgetVersion or newObj.AceGUIWidgetVersion < WidgetVersions[type] then - return newWidget(type) + if not newObj.AceGUIWidgetVersion or newObj.AceGUIWidgetVersion < WidgetVersions[widgetType] then + return newWidget(widgetType) end end return newObj end -- Releases an instance to the Pool - function delWidget(obj,type) - if not objPools[type] then - objPools[type] = {} + function delWidget(obj,widgetType) + if not objPools[widgetType] then + objPools[widgetType] = {} end - if objPools[type][obj] then + if objPools[widgetType][obj] then error("Attempt to Release Widget that is already released", 2) end - objPools[type][obj] = true + objPools[widgetType][obj] = true end end @@ -141,9 +135,9 @@ end -- OnAcquire function on it, before returning. -- @param type The type of the widget. -- @return The newly created widget. -function AceGUI:Create(type) - if WidgetRegistry[type] then - local widget = newWidget(type) +function AceGUI:Create(widgetType) + if WidgetRegistry[widgetType] then + local widget = newWidget(widgetType) if rawget(widget, "Acquire") then widget.OnAcquire = widget.Acquire @@ -161,7 +155,7 @@ function AceGUI:Create(type) if widget.OnAcquire then widget:OnAcquire() else - error(("Widget type %s doesn't supply an OnAcquire Function"):format(type)) + error(("Widget type %s doesn't supply an OnAcquire Function"):format(widgetType)) end -- Set the default Layout ("List") safecall(widget.SetLayout, widget, "List") @@ -589,25 +583,25 @@ AceGUI.counts = AceGUI.counts or {} -- This is used by widgets that require a named frame, e.g. when a Blizzard -- Template requires it. -- @param type The widget type -function AceGUI:GetNextWidgetNum(type) - if not self.counts[type] then - self.counts[type] = 0 +function AceGUI:GetNextWidgetNum(widgetType) + if not self.counts[widgetType] then + self.counts[widgetType] = 0 end - self.counts[type] = self.counts[type] + 1 - return self.counts[type] + self.counts[widgetType] = self.counts[widgetType] + 1 + return self.counts[widgetType] end --- Return the number of created widgets for this type. -- In contrast to GetNextWidgetNum, the number is not incremented. --- @param type The widget type -function AceGUI:GetWidgetCount(type) - return self.counts[type] or 0 +-- @param widgetType The widget type +function AceGUI:GetWidgetCount(widgetType) + return self.counts[widgetType] or 0 end --- Return the version of the currently registered widget type. --- @param type The widget type -function AceGUI:GetWidgetVersion(type) - return WidgetVersions[type] +-- @param widgetType The widget type +function AceGUI:GetWidgetVersion(widgetType) + return WidgetVersions[widgetType] end ------------- @@ -770,7 +764,6 @@ AceGUI:RegisterLayout("Flow", usedwidth = 0 rowstart = frame - rowstartoffset = frameoffset if child.DoLayout then child:DoLayout() @@ -813,7 +806,8 @@ local GetCellAlign = function (dir, tableObj, colObj, cellObj, cell, child) or colObj and (colObj["align" .. dir] or colObj.align) or tableObj["align" .. dir] or tableObj.align or "CENTERLEFT" - local child, cell, val = child or 0, cell or 0, nil + local val + child, cell = child or 0, cell or 0 if type(fn) == "string" then fn = fn:lower() @@ -827,7 +821,7 @@ local GetCellAlign = function (dir, tableObj, colObj, cellObj, cell, child) val = fn end - return fn, max(0, min(val, cell)) + return fn, math_max(0, math_min(val, cell)) end -- Get width or height for multiple cells combined @@ -836,7 +830,7 @@ local GetCellDimension = function (dir, laneDim, from, to, space) for cell=from,to do dim = dim + (laneDim[cell] or 0) end - return dim + max(0, to - from) * (space or 0) + return dim + math_max(0, to - from) * (space or 0) end --[[ Options @@ -882,7 +876,7 @@ AceGUI:RegisterLayout("Table", repeat n = n + 1 local col = (n - 1) % #cols + 1 - local row = ceil(n / #cols) + local row = math_ceil(n / #cols) local rowspan = rowspans[col] local cell = rowspan and rowspan.child or child local cellObj = cell:GetUserData("cell") @@ -898,7 +892,7 @@ AceGUI:RegisterLayout("Table", end -- Colspan - local colspan = max(0, min((cellObj and cellObj.colspan or 1) - 1, #cols - col)) + local colspan = math_max(0, math_min((cellObj and cellObj.colspan or 1) - 1, #cols - col)) n = n + colspan -- Place the cell @@ -915,7 +909,7 @@ AceGUI:RegisterLayout("Table", end end - local rows = ceil(n / #cols) + local rows = math_ceil(n / #cols) -- Determine fixed size cols and collect weights local extantH, totalWeight = totalH, 0 @@ -940,16 +934,16 @@ AceGUI:RegisterLayout("Table", f:ClearAllPoints() local childH = f:GetWidth() or 0 - laneH[col] = max(laneH[col], childH - GetCellDimension("H", laneH, colStart[child], col - 1, spaceH)) + laneH[col] = math_max(laneH[col], childH - GetCellDimension("H", laneH, colStart[child], col - 1, spaceH)) end end - laneH[col] = max(colObj.min or colObj[1] or 0, min(laneH[col], colObj.max or colObj[2] or laneH[col])) + laneH[col] = math_max(colObj.min or colObj[1] or 0, math_min(laneH[col], colObj.max or colObj[2] or laneH[col])) else -- Rel./Abs. width laneH[col] = colObj.width < 1 and colObj.width * totalH or colObj.width end - extantH = max(0, extantH - laneH[col]) + extantH = math_max(0, extantH - laneH[col]) end end @@ -988,7 +982,7 @@ AceGUI:RegisterLayout("Table", child:DoLayout() end - rowV = max(rowV, (f:GetHeight() or 0) - GetCellDimension("V", laneV, rowStart[child], row - 1, spaceV)) + rowV = math_max(rowV, (f:GetHeight() or 0) - GetCellDimension("V", laneV, rowStart[child], row - 1, spaceV)) end end diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua index 9a48f8b..d95db58 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua @@ -2,7 +2,7 @@ BlizOptionsGroup Container Simple container widget for the integration of AceGUI into the Blizzard Interface Options -------------------------------------------------------------------------------]] -local Type, Version = "BlizOptionsGroup", 21 +local Type, Version = "BlizOptionsGroup", 26 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -99,7 +99,7 @@ local methods = { Constructor -------------------------------------------------------------------------------]] local function Constructor() - local frame = CreateFrame("Frame") + local frame = CreateFrame("Frame", nil, InterfaceOptionsFramePanelContainer) frame:Hide() -- support functions for the Blizzard Interface Options @@ -108,6 +108,11 @@ local function Constructor() frame.default = default 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("OnShow", OnShow) diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua index 379ea25..cd83755 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua @@ -125,7 +125,7 @@ local function Constructor() dropdown.frame:Show() dropdown:SetLabel("") - local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) + local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") border:SetPoint("TOPLEFT", 0, -26) border:SetPoint("BOTTOMRIGHT", 0, 3) border:SetBackdrop(PaneBackdrop) diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua index fbd6005..39a1004 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua @@ -1,7 +1,7 @@ --[[----------------------------------------------------------------------------- Frame Container -------------------------------------------------------------------------------]] -local Type, Version = "Frame", 27 +local Type, Version = "Frame", 30 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -13,10 +13,6 @@ local wipe = table.wipe local PlaySound = PlaySound 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 -------------------------------------------------------------------------------]] @@ -83,6 +79,7 @@ local methods = { ["OnAcquire"] = function(self) self.frame:SetParent(UIParent) self.frame:SetFrameStrata("FULLSCREEN_DIALOG") + self.frame:SetFrameLevel(100) -- Lots of room to draw under it self:SetTitle() self:SetStatusText() self:ApplyStatus() @@ -179,16 +176,21 @@ local PaneBackdrop = { } local function Constructor() - local frame = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil) + local frame = CreateFrame("Frame", nil, UIParent, "BackdropTemplate") frame:Hide() frame:EnableMouse(true) frame:SetMovable(true) frame:SetResizable(true) frame:SetFrameStrata("FULLSCREEN_DIALOG") + frame:SetFrameLevel(100) -- Lots of room to draw under it frame:SetBackdrop(FrameBackdrop) frame:SetBackdropColor(0, 0, 0, 1) - frame:SetMinResize(400, 200) + if frame.SetResizeBounds then -- WoW 10.0 + frame:SetResizeBounds(400, 200) + else + frame:SetMinResize(400, 200) + end frame:SetToplevel(true) frame:SetScript("OnShow", Frame_OnShow) frame:SetScript("OnHide", Frame_OnClose) @@ -201,7 +203,7 @@ local function Constructor() closebutton:SetWidth(100) closebutton:SetText(CLOSE) - local statusbg = CreateFrame("Button", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) + local statusbg = CreateFrame("Button", nil, frame, "BackdropTemplate") statusbg:SetPoint("BOTTOMLEFT", 15, 15) statusbg:SetPoint("BOTTOMRIGHT", -132, 15) statusbg:SetHeight(24) @@ -269,7 +271,7 @@ local function Constructor() line2:SetHeight(8) line2:SetPoint("BOTTOMRIGHT", -8, 8) line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border - local x = 0.1 * 8/17 + 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) local sizer_s = CreateFrame("Frame", nil, frame) diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua index 357e843..1676ae4 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua @@ -75,7 +75,7 @@ local function Constructor() titletext:SetJustifyH("LEFT") titletext:SetHeight(18) - local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) + local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") border:SetPoint("TOPLEFT", 0, -17) border:SetPoint("BOTTOMRIGHT", -1, 3) border:SetBackdrop(PaneBackdrop) diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua index 195ab0b..8e46876 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua @@ -2,22 +2,18 @@ TabGroup Container Container that uses tabs on top to switch between groups. -------------------------------------------------------------------------------]] -local Type, Version = "TabGroup", 37 +local Type, Version = "TabGroup", 38 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end -- Lua APIs -local pairs, ipairs, assert, type, wipe = pairs, ipairs, assert, type, wipe +local pairs, ipairs, assert, type, wipe = pairs, ipairs, assert, type, table.wipe -- WoW APIs local PlaySound = PlaySound local CreateFrame, UIParent = CreateFrame, UIParent 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 widths = {} local rowwidths = {} @@ -26,6 +22,143 @@ local rowends = {} --[[----------------------------------------------------------------------------- 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) if frame.disabled then PanelTemplates_SetDisabledTabState(frame) @@ -103,11 +236,64 @@ local methods = { ["CreateTab"] = function(self, id) local tabname = ("AceGUITabGroup%dTab%d"):format(self.num, id) - local tab = CreateFrame("Button", tabname, self.border, "OptionsFrameTabButtonTemplate") + local tab = CreateFrame("Button", tabname, self.border) + 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.id = id - tab.text = _G[tabname .. "Text"] + tab.text = tab.Text -- compat tab.text:ClearAllPoints() tab.text:SetPoint("LEFT", 14, -3) tab.text:SetPoint("RIGHT", -12, -3) @@ -316,7 +502,7 @@ local function Constructor() titletext:SetHeight(18) titletext:SetText("") - local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) + local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") border:SetPoint("TOPLEFT", 1, -27) border:SetPoint("BOTTOMRIGHT", -1, 3) border:SetBackdrop(PaneBackdrop) diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua index cdc8051..89f387a 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua @@ -2,22 +2,18 @@ TreeGroup Container Container that uses a tree control to switch between groups. -------------------------------------------------------------------------------]] -local Type, Version = "TreeGroup", 45 +local Type, Version = "TreeGroup", 47 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end -- Lua APIs local next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type -local math_min, math_max, floor = math.min, math.max, floor +local math_min, math_max, floor = math.min, math.max, math.floor local select, tremove, unpack, tconcat = select, table.remove, unpack, table.concat -- WoW APIs 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 local new, del do @@ -567,7 +563,11 @@ local methods = { if maxtreewidth > 100 and status.treewidth > maxtreewidth then self:SetTreeWidth(maxtreewidth, status.treesizable) end - treeframe:SetMaxResize(maxtreewidth, 1600) + if treeframe.SetResizeBounds then + treeframe:SetResizeBounds(100, 1, maxtreewidth, 1600) + else + treeframe:SetMaxResize(maxtreewidth, 1600) + end end, ["OnHeightSet"] = function(self, height) @@ -637,7 +637,7 @@ local function Constructor() local num = AceGUI:GetNextWidgetNum(Type) local frame = CreateFrame("Frame", nil, UIParent) - local treeframe = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) + local treeframe = CreateFrame("Frame", nil, frame, "BackdropTemplate") treeframe:SetPoint("TOPLEFT") treeframe:SetPoint("BOTTOMLEFT") treeframe:SetWidth(DEFAULT_TREE_WIDTH) @@ -646,13 +646,17 @@ local function Constructor() treeframe:SetBackdropColor(0.1, 0.1, 0.1, 0.5) treeframe:SetBackdropBorderColor(0.4, 0.4, 0.4) treeframe:SetResizable(true) - treeframe:SetMinResize(100, 1) - treeframe:SetMaxResize(400, 1600) + if treeframe.SetResizeBounds then -- WoW 10.0 + treeframe:SetResizeBounds(100, 1, 400, 1600) + else + treeframe:SetMinResize(100, 1) + treeframe:SetMaxResize(400, 1600) + end treeframe:SetScript("OnUpdate", FirstFrameUpdate) treeframe:SetScript("OnSizeChanged", Tree_OnSizeChanged) treeframe:SetScript("OnMouseWheel", Tree_OnMouseWheel) - local dragger = CreateFrame("Frame", nil, treeframe, BackdropTemplateMixin and "BackdropTemplate" or nil) + local dragger = CreateFrame("Frame", nil, treeframe, "BackdropTemplate") dragger:SetWidth(8) dragger:SetPoint("TOP", treeframe, "TOPRIGHT") dragger:SetPoint("BOTTOM", treeframe, "BOTTOMRIGHT") @@ -677,7 +681,7 @@ local function Constructor() scrollbg:SetAllPoints(scrollbar) scrollbg:SetColorTexture(0,0,0,0.4) - local border = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) + local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") border:SetPoint("TOPLEFT", treeframe, "TOPRIGHT") border:SetPoint("BOTTOMRIGHT") border:SetBackdrop(PaneBackdrop) diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Window.lua b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Window.lua index 2e28a3d..f378d93 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Window.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Window.lua @@ -7,10 +7,6 @@ local pairs, assert, type = pairs, assert, type local PlaySound = PlaySound 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 -- ---------------- @@ -21,7 +17,7 @@ local CreateFrame, UIParent = CreateFrame, UIParent ]] do local Type = "Window" - local Version = 6 + local Version = 8 local function frameOnShow(this) this.obj:Fire("OnShow") @@ -186,7 +182,11 @@ do frame:SetScript("OnShow",frameOnShow) frame:SetScript("OnHide",frameOnClose) - frame:SetMinResize(240,240) + if frame.SetResizeBounds then -- WoW 10.0 + frame:SetResizeBounds(240,240) + else + frame:SetMinResize(240,240) + end frame:SetToplevel(true) local titlebg = frame:CreateTexture(nil, "BACKGROUND") @@ -300,7 +300,7 @@ do line2:SetHeight(8) line2:SetPoint("BOTTOMRIGHT", -8, 8) line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border - local x = 0.1 * 8/17 + 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) local sizer_s = CreateFrame("Frame",nil,frame) diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua index 53ef618..fe17e03 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua @@ -12,10 +12,6 @@ local select, pairs = select, pairs local PlaySound = PlaySound 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 -------------------------------------------------------------------------------]] @@ -199,14 +195,14 @@ local methods = { ["SetDescription"] = function(self, desc) if desc then if not self.desc then - local desc = self.frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall") - desc:ClearAllPoints() - desc:SetPoint("TOPLEFT", self.checkbg, "TOPRIGHT", 5, -21) - desc:SetWidth(self.frame.width - 30) - desc:SetPoint("RIGHT", self.frame, "RIGHT", -30, 0) - desc:SetJustifyH("LEFT") - desc:SetJustifyV("TOP") - self.desc = desc + local f = self.frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall") + f:ClearAllPoints() + f:SetPoint("TOPLEFT", self.checkbg, "TOPRIGHT", 5, -21) + f:SetWidth(self.frame.width - 30) + f:SetPoint("RIGHT", self.frame, "RIGHT", -30, 0) + f:SetJustifyH("LEFT") + f:SetJustifyV("TOP") + self.desc = f end self.desc:Show() --self.text:SetFontObject(GameFontNormal) diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua index 1101162..d57b008 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua @@ -11,10 +11,6 @@ local pairs = pairs -- WoW APIs 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 -------------------------------------------------------------------------------]] diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua index 7ae1401..947184c 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua @@ -1,4 +1,4 @@ ---[[ $Id: AceGUIWidget-DropDown-Items.lua 1202 2019-05-15 23:11:22Z nevcairiel $ ]]-- +--[[ $Id: AceGUIWidget-DropDown-Items.lua 1272 2022-08-29 15:56:35Z nevcairiel $ ]]-- local AceGUI = LibStub("AceGUI-3.0") @@ -41,7 +41,7 @@ local ItemBase = { -- NOTE: The ItemBase version is added to each item's version number -- to ensure proper updates on ItemBase changes. -- Use at least 1000er steps. - version = 1000, + version = 2000, counter = 0, } @@ -178,7 +178,7 @@ function ItemBase.Create(type) highlight:Hide() self.highlight = highlight - local check = frame:CreateTexture("OVERLAY") + local check = frame:CreateTexture(nil, "OVERLAY") check:SetWidth(16) check:SetHeight(16) check:SetPoint("LEFT",frame,"LEFT",3,-1) @@ -186,7 +186,7 @@ function ItemBase.Create(type) check:Hide() self.check = check - local sub = frame:CreateTexture("OVERLAY") + local sub = frame:CreateTexture(nil, "OVERLAY") sub:SetWidth(16) sub:SetHeight(16) sub:SetPoint("RIGHT",frame,"RIGHT",-3,-1) diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua index 5481630..59c7f53 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua @@ -1,4 +1,4 @@ ---[[ $Id: AceGUIWidget-DropDown.lua 1239 2020-09-20 10:22:02Z nevcairiel $ ]]-- +--[[ $Id: AceGUIWidget-DropDown.lua 1284 2022-09-25 09:15:30Z nevcairiel $ ]]-- local AceGUI = LibStub("AceGUI-3.0") -- Lua APIs @@ -11,10 +11,6 @@ local PlaySound = PlaySound local UIParent, CreateFrame = UIParent, CreateFrame 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 i = 1 local child = select(i, ...) @@ -253,7 +249,7 @@ do local function Constructor() local count = AceGUI:GetNextWidgetNum(widgetType) - local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil) + local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent, "BackdropTemplate") local self = {} self.count = count self.type = widgetType @@ -304,7 +300,7 @@ do scrollFrame.obj = self itemFrame.obj = self - local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame, BackdropTemplateMixin and "BackdropTemplate" or nil) + local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame, "BackdropTemplate") slider:SetOrientation("VERTICAL") slider:SetHitRectInsets(0, 0, -10, 0) slider:SetBackdrop(sliderBackdrop) @@ -351,7 +347,7 @@ end do local widgetType = "Dropdown" - local widgetVersion = 35 + local widgetVersion = 36 --[[ Static data ]]-- @@ -376,7 +372,6 @@ do local function Dropdown_TogglePullout(this) local self = this.obj - PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON if self.open then self.open = nil self.pullout:Close() diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua index 29f7e00..bb1e4fd 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua @@ -14,10 +14,6 @@ local GetCursorInfo, ClearCursor, GetSpellInfo = GetCursorInfo, ClearCursor, Get local CreateFrame, UIParent = CreateFrame, UIParent 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 -------------------------------------------------------------------------------]] diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua index 17a3c0b..0c779dc 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua @@ -13,10 +13,6 @@ local pairs = pairs local IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown = IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown 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 -------------------------------------------------------------------------------]] @@ -214,7 +210,7 @@ local function Constructor() label:SetJustifyH("CENTER") label:SetHeight(18) - local msgframe = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil) + local msgframe = CreateFrame("Frame", nil, UIParent, "BackdropTemplate") msgframe:SetHeight(30) msgframe:SetBackdrop(ControlBackdrop) msgframe:SetBackdropColor(0,0,0) diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Label.lua b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Label.lua index 5c75f3b..d0841ef 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Label.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Label.lua @@ -2,7 +2,7 @@ Label Widget Displays text and optionally an icon. -------------------------------------------------------------------------------]] -local Type, Version = "Label", 27 +local Type, Version = "Label", 28 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -12,10 +12,6 @@ local max, select, pairs = math.max, select, pairs -- WoW APIs 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 -------------------------------------------------------------------------------]] @@ -129,12 +125,16 @@ local methods = { end, ["SetFont"] = function(self, font, height, flags) - self.label:SetFont(font, height, flags) - UpdateImageAnchor(self) + if not self.fontObject then + self.fontObject = CreateFont("AceGUI30LabelFont" .. AceGUI:GetNextWidgetNum(Type)) + end + self.fontObject:SetFont(font, height, flags) + self:SetFontObject(self.fontObject) end, ["SetFontObject"] = function(self, font) - self:SetFont((font or GameFontHighlightSmall):GetFont()) + self.label:SetFontObject(font or GameFontHighlightSmall) + UpdateImageAnchor(self) end, ["SetImageSize"] = function(self, width, height) diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua index 0e953ab..bacb2be 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua @@ -1,4 +1,4 @@ -local Type, Version = "MultiLineEditBox", 29 +local Type, Version = "MultiLineEditBox", 32 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -10,10 +10,6 @@ local GetCursorInfo, GetSpellInfo, ClearCursor = GetCursorInfo, GetSpellInfo, Cl local CreateFrame, UIParent = CreateFrame, UIParent 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 -------------------------------------------------------------------------------]] @@ -145,6 +141,14 @@ local function OnVerticalScroll(self, offset) editBox:SetHitRectInsets(0, 0, offset, editBox:GetHeight() - offset - self:GetHeight()) 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) frame.obj.editBox:SetFocus() frame:SetScript("OnShow", nil) @@ -257,8 +261,6 @@ local methods = { ["SetCursorPosition"] = function(self, ...) return self.editBox:SetCursorPosition(...) end, - - } --[[----------------------------------------------------------------------------- @@ -297,7 +299,7 @@ local function Constructor() text:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -5, 1) text:SetJustifyV("MIDDLE") - local scrollBG = CreateFrame("Frame", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) + local scrollBG = CreateFrame("Frame", nil, frame, "BackdropTemplate") scrollBG:SetBackdrop(backdrop) scrollBG:SetBackdropColor(0, 0, 0) scrollBG:SetBackdropBorderColor(0.4, 0.4, 0.4) @@ -321,6 +323,7 @@ local function Constructor() scrollFrame:SetScript("OnReceiveDrag", OnReceiveDrag) scrollFrame:SetScript("OnSizeChanged", OnSizeChanged) scrollFrame:HookScript("OnVerticalScroll", OnVerticalScroll) + scrollFrame:HookScript("OnScrollRangeChanged", OnScrollRangeChanged) local editBox = CreateFrame("EditBox", ("%s%dEdit"):format(Type, widgetNum), scrollFrame) editBox:SetAllPoints() diff --git a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua index 9f26d2d..483d400 100644 --- a/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua +++ b/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua @@ -14,10 +14,6 @@ local tonumber, pairs = tonumber, pairs local PlaySound = PlaySound 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 -------------------------------------------------------------------------------]] @@ -31,13 +27,13 @@ local function UpdateText(self) end local function UpdateLabels(self) - local min, max = (self.min or 0), (self.max or 100) + local min_value, max_value = (self.min or 0), (self.max or 100) if self.ispercent then - self.lowtext:SetFormattedText("%s%%", (min * 100)) - self.hightext:SetFormattedText("%s%%", (max * 100)) + self.lowtext:SetFormattedText("%s%%", (min_value * 100)) + self.hightext:SetFormattedText("%s%%", (max_value * 100)) else - self.lowtext:SetText(min) - self.hightext:SetText(max) + self.lowtext:SetText(min_value) + self.hightext:SetText(max_value) end end @@ -175,13 +171,13 @@ local methods = { self.label:SetText(text) end, - ["SetSliderValues"] = function(self, min, max, step) + ["SetSliderValues"] = function(self, min_value, max_value, step) local frame = self.slider frame.setup = true - self.min = min - self.max = max + self.min = min_value + self.max = max_value self.step = step - frame:SetMinMaxValues(min or 0,max or 100) + frame:SetMinMaxValues(min_value or 0,max_value or 100) UpdateLabels(self) frame:SetValueStep(step or 1) if self.value then @@ -225,7 +221,7 @@ local function Constructor() label:SetJustifyH("CENTER") label:SetHeight(15) - local slider = CreateFrame("Slider", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) + local slider = CreateFrame("Slider", nil, frame, "BackdropTemplate") slider:SetOrientation("HORIZONTAL") slider:SetHeight(15) slider:SetHitRectInsets(0, 0, -10, 0) @@ -247,7 +243,7 @@ local function Constructor() local hightext = slider:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall") hightext:SetPoint("TOPRIGHT", slider, "BOTTOMRIGHT", -2, 3) - local editbox = CreateFrame("EditBox", nil, frame, BackdropTemplateMixin and "BackdropTemplate" or nil) + local editbox = CreateFrame("EditBox", nil, frame, "BackdropTemplate") editbox:SetAutoFocus(false) editbox:SetFontObject(GameFontHighlightSmall) editbox:SetPoint("TOP", slider, "BOTTOM") diff --git a/Ace3/CallbackHandler-1.0/CallbackHandler-1.0.lua b/Ace3/CallbackHandler-1.0/CallbackHandler-1.0.lua index a8377fe..a791159 100644 --- a/Ace3/CallbackHandler-1.0/CallbackHandler-1.0.lua +++ b/Ace3/CallbackHandler-1.0/CallbackHandler-1.0.lua @@ -1,4 +1,4 @@ ---[[ $Id: CallbackHandler-1.0.lua 1186 2018-07-21 14:19:18Z nevcairiel $ ]] +--[[ $Id: CallbackHandler-1.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ ]] local MAJOR, MINOR = "CallbackHandler-1.0", 7 local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR) @@ -7,15 +7,10 @@ if not CallbackHandler then return end -- No upgrade needed local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end} -- Lua APIs -local tconcat = table.concat -local assert, error, loadstring = assert, error, loadstring -local setmetatable, rawset, rawget = setmetatable, rawset, rawget +local error = error +local setmetatable, rawget = setmetatable, rawget local next, select, pairs, type, tostring = next, select, pairs, type, tostring --- 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 - local xpcall = xpcall local function errorhandler(err) @@ -39,7 +34,7 @@ end -- 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. -function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName) +function CallbackHandler.New(_self, target, RegisterName, UnregisterName, UnregisterAllName) RegisterName = RegisterName or "RegisterCallback" UnregisterName = UnregisterName or "UnregisterCallback" @@ -67,13 +62,13 @@ function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAll if registry.insertQueue and oldrecurse==0 then -- Something in one of our callbacks wanted to register more callbacks; they got queued - for eventname,callbacks in pairs(registry.insertQueue) do - 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 self,func in pairs(callbacks) do - events[eventname][self] = func + for event,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. + for object,func in pairs(callbacks) do + events[event][object] = func -- fire OnUsed callback? if first and registry.OnUsed then - registry.OnUsed(registry, target, eventname) + registry.OnUsed(registry, target, event) first = nil end end diff --git a/Ace3/LibStub/LibStub.lua b/Ace3/LibStub/LibStub.lua index 0a41ac0..d50c267 100644 --- a/Ace3/LibStub/LibStub.lua +++ b/Ace3/LibStub/LibStub.lua @@ -7,24 +7,24 @@ if not LibStub or LibStub.minor < LIBSTUB_MINOR then LibStub = LibStub or {libs = {}, minors = {} } _G[LIBSTUB_MAJOR] = LibStub LibStub.minor = LIBSTUB_MINOR - + function LibStub:NewLibrary(major, minor) assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)") - minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.") - + minor = assert(tonumber(string.match(minor, "%d+")), "Minor version must either be a number or contain a number.") + local oldminor = self.minors[major] if oldminor and oldminor >= minor then return nil end self.minors[major], self.libs[major] = minor, self.libs[major] or {} return self.libs[major], oldminor end - + function LibStub:GetLibrary(major, silent) if not self.libs[major] and not silent then error(("Cannot find a library instance of %q."):format(tostring(major)), 2) end return self.libs[major], self.minors[major] end - + function LibStub:IterateLibraries() return pairs(self.libs) end setmetatable(LibStub, { __call = LibStub.GetLibrary }) end diff --git a/Layouts/BlizzArena.lua b/Layouts/BlizzArena.lua index 691ec2e..dc15704 100644 --- a/Layouts/BlizzArena.lua +++ b/Layouts/BlizzArena.lua @@ -53,8 +53,8 @@ end local function setSetting(info, val) layout.db[info[#info]] = val - for i = 1,3 do - local frame = info.handler["arena"..i] + for i = 1, 3 do + local frame = info.handler["arena" .. i] layout:UpdateOrientation(frame) end end @@ -75,11 +75,11 @@ end function layout:Initialize(frame) self.db = frame.parent.db.profile.layoutSettings[layoutName] - if ( not self.optionsTable ) then + if (not self.optionsTable) then setupOptionsTable(frame.parent) end - if ( frame:GetID() == 3 ) then + if (frame:GetID() == 3) then frame.parent:UpdateCastBarSettings(self.db.castBar) frame.parent:UpdateDRSettings(self.db.dr) frame.parent:UpdateFrameSettings(self.db) @@ -127,7 +127,13 @@ function layout:Initialize(frame) f:SetHeight(12) f = frame.CastBar - f:SetStatusBarTexture("Interface\\TargetingFrame\\UI-StatusBar") + local typeInfoTexture = "Interface\\TargetingFrame\\UI-StatusBar"; + f:SetStatusBarTexture(typeInfoTexture) + f.typeInfo = { + filling = typeInfoTexture, + full = typeInfoTexture, + glow = typeInfoTexture + } f = frame.DeathIcon f:ClearAllPoints() @@ -148,8 +154,8 @@ function layout:Initialize(frame) underlay:Show() local id = frame:GetID() - layout["frameTexture"..id] = frame.TexturePool:Acquire() - local frameTexture = layout["frameTexture"..id] + layout["frameTexture" .. id] = frame.TexturePool:Acquire() + local frameTexture = layout["frameTexture" .. id] frameTexture:SetDrawLayer("ARTWORK", 2) frameTexture:SetAllPoints(frame) frameTexture:SetTexture("Interface\\ArenaEnemyFrame\\UI-ArenaTargetingFrame") @@ -159,14 +165,14 @@ function layout:Initialize(frame) end function layout:UpdateOrientation(frame) - local frameTexture = layout["frameTexture"..frame:GetID()] + local frameTexture = layout["frameTexture" .. frame:GetID()] local healthBar = frame.HealthBar local classIcon = frame.ClassIcon healthBar:ClearAllPoints() classIcon:ClearAllPoints() - if ( self.db.mirrored ) then + if (self.db.mirrored) then frameTexture:SetTexCoord(0.796, 0, 0, 0.5) healthBar:SetPoint("TOPRIGHT", -3, -9) classIcon:SetPoint("TOPLEFT", 4, -4) diff --git a/Layouts/BlizzTarget.lua b/Layouts/BlizzTarget.lua index 513561b..729f2ba 100644 --- a/Layouts/BlizzTarget.lua +++ b/Layouts/BlizzTarget.lua @@ -53,8 +53,8 @@ end local function setSetting(info, val) layout.db[info[#info]] = val - for i = 1,3 do - local frame = info.handler["arena"..i] + for i = 1, 3 do + local frame = info.handler["arena" .. i] layout:UpdateOrientation(frame) end end @@ -75,11 +75,11 @@ end function layout:Initialize(frame) self.db = frame.parent.db.profile.layoutSettings[layoutName] - if ( not self.optionsTable ) then + if (not self.optionsTable) then setupOptionsTable(frame.parent) end - if ( frame:GetID() == 3 ) then + if (frame:GetID() == 3) then frame.parent:UpdateCastBarSettings(self.db.castBar) frame.parent:UpdateDRSettings(self.db.dr) frame.parent:UpdateFrameSettings(self.db) @@ -128,7 +128,13 @@ function layout:Initialize(frame) f:SetHeight(12) f = frame.CastBar - f:SetStatusBarTexture("Interface\\TargetingFrame\\UI-StatusBar") + local typeInfoTexture = "Interface\\TargetingFrame\\UI-StatusBar"; + f:SetStatusBarTexture(typeInfoTexture) + f.typeInfo = { + filling = typeInfoTexture, + full = typeInfoTexture, + glow = typeInfoTexture + } f = frame.DeathIcon f:ClearAllPoints() @@ -149,8 +155,8 @@ function layout:Initialize(frame) underlay:Show() local id = frame:GetID() - layout["frameTexture"..id] = frame.TexturePool:Acquire() - local frameTexture = layout["frameTexture"..id] + layout["frameTexture" .. id] = frame.TexturePool:Acquire() + local frameTexture = layout["frameTexture" .. id] frameTexture:SetDrawLayer("ARTWORK", 2) frameTexture:SetAllPoints(frame) frameTexture:SetTexture("Interface\\TARGETINGFRAME\\UI-TargetingFrame-NoLevel") @@ -160,7 +166,7 @@ function layout:Initialize(frame) end function layout:UpdateOrientation(frame) - local frameTexture = layout["frameTexture"..frame:GetID()] + local frameTexture = layout["frameTexture" .. frame:GetID()] local healthBar = frame.HealthBar local classIcon = frame.ClassIcon local classIconMask = frame.ClassIconMask @@ -169,7 +175,7 @@ function layout:UpdateOrientation(frame) classIcon:ClearAllPoints() classIconMask:ClearAllPoints() - if ( self.db.mirrored ) then + if (self.db.mirrored) then frameTexture:SetTexCoord(0.85, 0.1, 0.05, 0.65) healthBar:SetPoint("RIGHT", -5, -2) classIcon:SetPoint("LEFT", 5, 0) diff --git a/Layouts/BlizzTourney.lua b/Layouts/BlizzTourney.lua index 7aef1e2..3846f07 100644 --- a/Layouts/BlizzTourney.lua +++ b/Layouts/BlizzTourney.lua @@ -53,8 +53,8 @@ end local function setSetting(info, val) layout.db[info[#info]] = val - for i = 1,3 do - local frame = info.handler["arena"..i] + for i = 1, 3 do + local frame = info.handler["arena" .. i] layout:UpdateOrientation(frame) end end @@ -75,11 +75,11 @@ end function layout:Initialize(frame) self.db = frame.parent.db.profile.layoutSettings[layoutName] - if ( not self.optionsTable ) then + if (not self.optionsTable) then setupOptionsTable(frame.parent) end - if ( frame:GetID() == 3 ) then + if (frame:GetID() == 3) then frame.parent:UpdateCastBarSettings(self.db.castBar) frame.parent:UpdateDRSettings(self.db.dr) frame.parent:UpdateFrameSettings(self.db) @@ -123,7 +123,13 @@ function layout:Initialize(frame) specBorder:Show() f = frame.CastBar - f:SetStatusBarTexture("Interface\\RaidFrame\\Raid-Bar-Hp-Fill") + local typeInfoTexture = "Interface\\RaidFrame\\Raid-Bar-Hp-Fill"; + f:SetStatusBarTexture(typeInfoTexture) + f.typeInfo = { + filling = typeInfoTexture, + full = typeInfoTexture, + glow = typeInfoTexture + } f = frame.DeathIcon f:ClearAllPoints() @@ -144,8 +150,8 @@ function layout:Initialize(frame) underlay:Show() local id = frame:GetID() - layout["frameTexture"..id] = frame.TexturePool:Acquire() - local frameTexture = layout["frameTexture"..id] + layout["frameTexture" .. id] = frame.TexturePool:Acquire() + local frameTexture = layout["frameTexture" .. id] frameTexture:SetDrawLayer("ARTWORK", 2) frameTexture:SetSize(160, 80) frameTexture:SetAtlas("UnitFrame") @@ -155,7 +161,7 @@ function layout:Initialize(frame) end function layout:UpdateOrientation(frame) - local frameTexture = layout["frameTexture"..frame:GetID()] + local frameTexture = layout["frameTexture" .. frame:GetID()] local healthBar = frame.HealthBar local powerBar = frame.PowerBar local classIcon = frame.ClassIcon @@ -168,7 +174,7 @@ function layout:UpdateOrientation(frame) classIconMask:ClearAllPoints() name:ClearAllPoints() - if ( self.db.mirrored ) then + if (self.db.mirrored) then frameTexture:SetTexCoord(1, 0, 0, 1) frameTexture:SetPoint("TOPLEFT", frame, "TOPLEFT", -26, 6) diff --git a/Layouts/Xaryu.lua b/Layouts/Xaryu.lua index ef20f7f..4268c35 100644 --- a/Layouts/Xaryu.lua +++ b/Layouts/Xaryu.lua @@ -56,8 +56,8 @@ end local function setSetting(info, val) layout.db[info[#info]] = val - for i = 1,3 do - local frame = info.handler["arena"..i] + for i = 1, 3 do + local frame = info.handler["arena" .. i] frame:SetSize(layout.db.width, layout.db.height) frame.ClassIcon:SetSize(layout.db.height, layout.db.height) frame.DeathIcon:SetSize(layout.db.height * 0.8, layout.db.height * 0.8) @@ -137,11 +137,11 @@ local ppUnderlay function layout:Initialize(frame) self.db = frame.parent.db.profile.layoutSettings[layoutName] - if ( not self.optionsTable ) then + if (not self.optionsTable) then setupOptionsTable(frame.parent) end - if ( frame:GetID() == 3 ) then + if (frame:GetID() == 3) then frame.parent:UpdateCastBarSettings(self.db.castBar) frame.parent:UpdateDRSettings(self.db.dr) frame.parent:UpdateFrameSettings(self.db) @@ -207,7 +207,7 @@ function layout:UpdateOrientation(frame) powerBar:ClearAllPoints() classIcon:ClearAllPoints() - if ( self.db.mirrored ) then + if (self.db.mirrored) then healthBar:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 0, -2) healthBar:SetPoint("BOTTOMLEFT", powerBar, "TOPLEFT") @@ -227,8 +227,14 @@ function layout:UpdateOrientation(frame) end function layout:UpdateTextures(frame) - local texture = self.db.classicBars and "Interface\\TargetingFrame\\UI-StatusBar" or "Interface\\RaidFrame\\Raid-Bar-Hp-Fill" + local texture = self.db.classicBars and "Interface\\TargetingFrame\\UI-StatusBar" or + "Interface\\RaidFrame\\Raid-Bar-Hp-Fill" + frame.CastBar.typeInfo = { + filling = texture, + full = texture, + glow = texture + } frame.CastBar:SetStatusBarTexture(texture) frame.HealthBar:SetStatusBarTexture(texture) frame.PowerBar:SetStatusBarTexture(texture) diff --git a/sArena.lua b/sArena.lua index 28a28d1..432959f 100644 --- a/sArena.lua +++ b/sArena.lua @@ -1,6 +1,6 @@ sArenaMixin = {} sArenaFrameMixin = {} - +sArenaCastingBarExtensionMixin = {} sArenaMixin.layouts = {} sArenaMixin.defaultSettings = { @@ -62,11 +62,10 @@ local UnitFrameHealPredictionBars_Update = UnitFrameHealPredictionBars_Update local function UpdateBlizzVisibility(instanceType) -- hide blizz arena frames while in arena - if ( InCombatLockdown() ) then return end - if ( not IsAddOnLoaded("Blizzard_ArenaUI") ) then return end - if ( IsAddOnLoaded("ElvUI") ) then return end + if (InCombatLockdown()) then return end + if (IsAddOnLoaded("ElvUI")) then return end - if ( not blizzFrame ) then + if (not blizzFrame) then blizzFrame = CreateFrame("Frame", nil, UIParent) blizzFrame:SetSize(1, 1) blizzFrame:SetPoint("RIGHT", UIParent, "RIGHT", 500, 0) @@ -74,27 +73,27 @@ local function UpdateBlizzVisibility(instanceType) end for i = 1, 5 do - local arenaFrame = _G["ArenaEnemyFrame"..i] - local prepFrame = _G["ArenaPrepFrame"..i] + local arenaFrame = _G["ArenaEnemyMatchFrame" .. i] + local prepFrame = _G["ArenaEnemyPrepFrame" .. i] arenaFrame:ClearAllPoints() prepFrame:ClearAllPoints() - if ( instanceType == "arena" ) then + if (instanceType == "arena") then arenaFrame:SetParent(blizzFrame) arenaFrame:SetPoint("CENTER", blizzFrame, "CENTER") prepFrame:SetParent(blizzFrame) prepFrame:SetPoint("CENTER", blizzFrame, "CENTER") else - arenaFrame:SetParent("ArenaEnemyFrames") - prepFrame:SetParent("ArenaPrepFrames") + arenaFrame:SetParent(ArenaEnemyFramesContainer) + prepFrame:SetParent(ArenaEnemyPrepFramesContainer) - if ( i == 1 ) then + if (i == 1) then arenaFrame:SetPoint("TOP", arenaFrame:GetParent(), "TOP") prepFrame:SetPoint("TOP", prepFrame:GetParent(), "TOP") else - arenaFrame:SetPoint("TOP", "ArenaEnemyFrame"..i-1, "BOTTOM", 0, -20) - prepFrame:SetPoint("TOP", "ArenaPrepFrame"..i-1, "BOTTOM", 0, -20) + arenaFrame:SetPoint("TOP", "ArenaEnemyMatchFrame" .. i - 1, "BOTTOM", 0, -20) + prepFrame:SetPoint("TOP", "ArenaEnemyPrepFrame" .. i - 1, "BOTTOM", 0, -20) end end end @@ -111,33 +110,33 @@ function sArenaMixin:OnLoad() end function sArenaMixin:OnEvent(event) - if ( event == "PLAYER_LOGIN" ) then + if (event == "PLAYER_LOGIN") then self:Initialize() self:UnregisterEvent("PLAYER_LOGIN") - elseif ( event == "PLAYER_ENTERING_WORLD" ) then + elseif (event == "PLAYER_ENTERING_WORLD") then local _, instanceType = IsInInstance() UpdateBlizzVisibility(instanceType) self:SetMouseState(true) - if ( instanceType == "arena" ) then + if (instanceType == "arena") then self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") else self:UnregisterEvent("COMBAT_LOG_EVENT_UNFILTERED") end - elseif ( event == "COMBAT_LOG_EVENT_UNFILTERED" ) then + elseif (event == "COMBAT_LOG_EVENT_UNFILTERED") then local _, combatEvent, _, sourceGUID, _, _, _, destGUID, _, _, _, spellID, _, _, auraType = CombatLogGetCurrentEventInfo() for i = 1, 3 do - local ArenaFrame = self["arena"..i] + local ArenaFrame = self["arena" .. i] - if ( sourceGUID == UnitGUID("arena"..i) ) then + if (sourceGUID == UnitGUID("arena" .. i)) then ArenaFrame:FindRacial(combatEvent, spellID) end - if ( destGUID == UnitGUID("arena"..i) ) then + if (destGUID == UnitGUID("arena" .. i)) then ArenaFrame:FindInterrupt(combatEvent, spellID) - if ( auraType == "DEBUFF" ) then + if (auraType == "DEBUFF") then ArenaFrame:FindDR(combatEvent, spellID) end @@ -156,7 +155,7 @@ local function ChatCommand(input) end function sArenaMixin:Initialize() - if ( db ) then return end + if (db) then return end self.db = LibStub("AceDB-3.0"):New("sArena3DB", self.defaultSettings, true) db = self.db @@ -179,7 +178,7 @@ function sArenaMixin:RefreshConfig() end function sArenaMixin:SetLayout(_, layout) - if ( InCombatLockdown() ) then return end + if (InCombatLockdown()) then return end layout = sArenaMixin.layouts[layout] and layout or "BlizzArena" @@ -187,41 +186,42 @@ function sArenaMixin:SetLayout(_, layout) self.layoutdb = self.db.profile.layoutSettings[layout] for i = 1, 3 do - local frame = self["arena"..i] + local frame = self["arena" .. i] frame:ResetLayout() self.layouts[layout]:Initialize(frame) frame:UpdatePlayer() end - self.optionsTable.args.layoutSettingsGroup.args = self.layouts[layout].optionsTable and self.layouts[layout].optionsTable or emptyLayoutOptionsTable + self.optionsTable.args.layoutSettingsGroup.args = self.layouts[layout].optionsTable and + self.layouts[layout].optionsTable or emptyLayoutOptionsTable LibStub("AceConfigRegistry-3.0"):NotifyChange("sArena") local _, instanceType = IsInInstance() - if ( instanceType ~= "arena" and self.arena1:IsShown() ) then + if (instanceType ~= "arena" and self.arena1:IsShown()) then self:Test() end end function sArenaMixin:SetupDrag(frameToClick, frameToMove, settingsTable, updateMethod) frameToClick:HookScript("OnMouseDown", function() - if ( InCombatLockdown() ) then return end + if (InCombatLockdown()) then return end - if ( IsShiftKeyDown() and IsControlKeyDown() and not frameToMove.isMoving ) then + if (IsShiftKeyDown() and IsControlKeyDown() and not frameToMove.isMoving) then frameToMove:StartMoving() frameToMove.isMoving = true end end) frameToClick:HookScript("OnMouseUp", function() - if ( InCombatLockdown() ) then return end + if (InCombatLockdown()) then return end - if ( frameToMove.isMoving ) then + if (frameToMove.isMoving) then frameToMove:StopMovingOrSizing() frameToMove.isMoving = false local settings = db.profile.layoutSettings[db.profile.currentLayout] - if ( settingsTable ) then + if (settingsTable) then settings = settings[settingsTable] end @@ -233,8 +233,8 @@ function sArenaMixin:SetupDrag(frameToClick, frameToMove, settingsTable, updateM frameY = ((frameY * scale) - parentY) / scale -- round to 1 decimal place - frameX = floor(frameX * 10 + 0.5 ) / 10 - frameY = floor(frameY * 10 + 0.5 ) / 10 + frameX = floor(frameX * 10 + 0.5) / 10 + frameY = floor(frameY * 10 + 0.5) / 10 settings.posX, settings.posY = frameX, frameY self[updateMethod](self, settings) @@ -245,7 +245,7 @@ end function sArenaMixin:SetMouseState(state) for i = 1, 3 do - local frame = self["arena"..i] + local frame = self["arena" .. i] frame.CastBar:EnableMouse(state) frame.Stun:EnableMouse(state) frame.SpecIcon:EnableMouse(state) @@ -257,7 +257,7 @@ end -- Arena Frames local function ResetTexture(texturePool, t) - if ( texturePool ) then + if (texturePool) then t:SetParent(texturePool.parent) end @@ -272,7 +272,7 @@ local function ResetTexture(texturePool, t) end function sArenaFrameMixin:OnLoad() - local unit = "arena"..self:GetID() + local unit = "arena" .. self:GetID() self.parent = self:GetParent() self:RegisterEvent("PLAYER_LOGIN") @@ -291,13 +291,15 @@ function sArenaFrameMixin:OnLoad() self:RegisterUnitEvent("UNIT_ABSORB_AMOUNT_CHANGED", unit) self:RegisterUnitEvent("UNIT_HEAL_ABSORB_AMOUNT_CHANGED", unit) - self:RegisterForClicks("AnyUp") + self:RegisterForClicks("AnyDown", "AnyUp") -- this is for WOW10, if sArena to support previous versions there would need to be a check to still catch only AnyUp self:SetAttribute("*type1", "target") self:SetAttribute("*type2", "focus") + self:SetAttribute("*typerelease1", "target") -- I do not know why this is treated as a typerelease, don't know how to remove it. + self:SetAttribute("*typerelease2", "focus") self:SetAttribute("unit", unit) self.unit = unit - CastingBarFrame_SetUnit(self.CastBar, unit, false, true) + self.CastBar:SetUnit(unit, false, true) self.healthbar = self.HealthBar @@ -328,62 +330,62 @@ end function sArenaFrameMixin:OnEvent(event, eventUnit, arg1) local unit = self.unit - if ( eventUnit and eventUnit == unit ) then - if ( event == "UNIT_NAME_UPDATE" ) then + if (eventUnit and eventUnit == unit) then + if (event == "UNIT_NAME_UPDATE") then self.Name:SetText(GetUnitName(unit)) - elseif ( event == "ARENA_OPPONENT_UPDATE" ) then + elseif (event == "ARENA_OPPONENT_UPDATE") then -- arg1 == unitEvent ("seen", "unseen", etc) self:UpdateVisible() self:UpdatePlayer(arg1) - elseif ( event == "ARENA_COOLDOWNS_UPDATE" ) then + elseif (event == "ARENA_COOLDOWNS_UPDATE") then self:UpdateTrinket() - elseif ( event == "ARENA_CROWD_CONTROL_SPELL_UPDATE" ) then + elseif (event == "ARENA_CROWD_CONTROL_SPELL_UPDATE") then -- arg1 == spellID if (arg1 ~= self.Trinket.spellID) then local _, spellTextureNoOverride = GetSpellTexture(arg1) self.Trinket.spellID = arg1 self.Trinket.Texture:SetTexture(spellTextureNoOverride) end - elseif ( event == "UNIT_AURA" ) then + elseif (event == "UNIT_AURA") then self:FindAura() - elseif ( event == "UNIT_HEALTH" ) then + elseif (event == "UNIT_HEALTH") then self:SetLifeState() self:SetStatusText() local currHp = UnitHealth(unit) - if ( currHp ~= self.currHp ) then + if (currHp ~= self.currHp) then self.HealthBar:SetValue(currHp) UnitFrameHealPredictionBars_Update(self) self.currHp = currHp end - elseif ( event == "UNIT_MAXHEALTH" ) then + elseif (event == "UNIT_MAXHEALTH") then self.HealthBar:SetMinMaxValues(0, UnitHealthMax(unit)) self.HealthBar:SetValue(UnitHealth(unit)) UnitFrameHealPredictionBars_Update(self) - elseif ( event == "UNIT_POWER_UPDATE" ) then + elseif (event == "UNIT_POWER_UPDATE") then self:SetStatusText() self.PowerBar:SetValue(UnitPower(unit)) - elseif ( event == "UNIT_MAXPOWER" ) then + elseif (event == "UNIT_MAXPOWER") then self.PowerBar:SetMinMaxValues(0, UnitPowerMax(unit)) self.PowerBar:SetValue(UnitPower(unit)) - elseif ( event == "UNIT_DISPLAYPOWER" ) then + elseif (event == "UNIT_DISPLAYPOWER") then local _, powerType = UnitPowerType(unit) self:SetPowerType(powerType) self.PowerBar:SetMinMaxValues(0, UnitPowerMax(unit)) self.PowerBar:SetValue(UnitPower(unit)) - elseif ( event == "UNIT_ABSORB_AMOUNT_CHANGED" ) then + elseif (event == "UNIT_ABSORB_AMOUNT_CHANGED") then UnitFrameHealPredictionBars_Update(self) - elseif ( event == "UNIT_HEAL_ABSORB_AMOUNT_CHANGED" ) then + elseif (event == "UNIT_HEAL_ABSORB_AMOUNT_CHANGED") then UnitFrameHealPredictionBars_Update(self) end - elseif ( event == "PLAYER_LOGIN" ) then + elseif (event == "PLAYER_LOGIN") then self:UnregisterEvent("PLAYER_LOGIN") - if ( not db ) then + if (not db) then self.parent:Initialize() end self:Initialize() - elseif ( event == "PLAYER_ENTERING_WORLD" ) or ( event == "ARENA_PREP_OPPONENT_SPECIALIZATIONS" ) then + elseif (event == "PLAYER_ENTERING_WORLD") or (event == "ARENA_PREP_OPPONENT_SPECIALIZATIONS") then self.Name:SetText("") self.CastBar:Hide() self.specTexture = nil @@ -396,7 +398,7 @@ function sArenaFrameMixin:OnEvent(event, eventUnit, arg1) self:ResetRacial() self:ResetDR() UnitFrameHealPredictionBars_Update(self) - elseif ( event == "PLAYER_REGEN_ENABLED" ) then + elseif (event == "PLAYER_REGEN_ENABLED") then self:UnregisterEvent("PLAYER_REGEN_ENABLED") self:UpdateVisible() @@ -427,14 +429,14 @@ function sArenaFrameMixin:OnLeave() end function sArenaFrameMixin:UpdateVisible() - if ( InCombatLockdown() ) then + if (InCombatLockdown()) then self:RegisterEvent("PLAYER_REGEN_ENABLED") return end local _, instanceType = IsInInstance() local id = self:GetID() - if ( instanceType == "arena" and ( GetNumArenaOpponentSpecs() >= id or GetNumArenaOpponents() >= id ) ) then + if (instanceType == "arena" and (GetNumArenaOpponentSpecs() >= id or GetNumArenaOpponents() >= id)) then self:Show() else self:Hide() @@ -447,9 +449,9 @@ function sArenaFrameMixin:UpdatePlayer(unitEvent) self:GetClassAndSpec() self:FindAura() - if ( ( unitEvent and unitEvent ~= "seen" ) or not UnitExists(unit) ) then - self:SetMysteryPlayer() - return + if ((unitEvent and unitEvent ~= "seen") or not UnitExists(unit)) then + self:SetMysteryPlayer() + return end C_PvP.RequestCrowdControlSpell(unit) @@ -457,7 +459,7 @@ function sArenaFrameMixin:UpdatePlayer(unitEvent) self:UpdateRacial() -- prevent castbar and other frames from intercepting mouse clicks during a match - if ( unitEvent == "seen" ) then + if (unitEvent == "seen") then self.parent:SetMouseState(false) end @@ -477,7 +479,7 @@ function sArenaFrameMixin:UpdatePlayer(unitEvent) local color = RAID_CLASS_COLORS[select(2, UnitClass(unit))] - if ( color and db.profile.classColors ) then + if (color and db.profile.classColors) then self.HealthBar:SetStatusBarColor(color.r, color.g, color.b, 1.0) else self.HealthBar:SetStatusBarColor(0, 1.0, 0, 1.0) @@ -486,12 +488,12 @@ end function sArenaFrameMixin:SetMysteryPlayer() local f = self.HealthBar - f:SetMinMaxValues(0,100) + f:SetMinMaxValues(0, 100) f:SetValue(100) f:SetStatusBarColor(0.5, 0.5, 0.5) f = self.PowerBar - f:SetMinMaxValues(0,100) + f:SetMinMaxValues(0, 100) f:SetValue(100) f:SetStatusBarColor(0.5, 0.5, 0.5) @@ -504,15 +506,15 @@ end function sArenaFrameMixin:GetClassAndSpec() local _, instanceType = IsInInstance() - if ( instanceType ~= "arena" ) then + if (instanceType ~= "arena") then self.specTexture = nil self.class = nil self.SpecIcon:Hide() - elseif ( not self.specTexture or not self.class ) then + elseif (not self.specTexture or not self.class) then local id = self:GetID() - if ( GetNumArenaOpponentSpecs() >= id ) then + if (GetNumArenaOpponentSpecs() >= id) then local specID = GetArenaOpponentSpec(id) - if ( specID > 0 ) then + if (specID > 0) then self.SpecIcon:Show() self.specTexture = select(4, GetSpecializationInfoByID(specID)) self.SpecIcon.Texture:SetTexture(self.specTexture) @@ -521,32 +523,34 @@ function sArenaFrameMixin:GetClassAndSpec() end end - if ( not self.class and UnitExists(self.unit) ) then + if (not self.class and UnitExists(self.unit)) then _, self.class = UnitClass(self.unit) end end - if ( not self.specTexture ) then + if (not self.specTexture) then self.SpecIcon:Hide() end end function sArenaFrameMixin:UpdateClassIcon() - if ( self.currentAuraSpellID and self.currentAuraDuration > 0 and self.currentClassIconStartTime ~= self.currentAuraStartTime ) then + if ( + self.currentAuraSpellID and self.currentAuraDuration > 0 and + self.currentClassIconStartTime ~= self.currentAuraStartTime) then self.ClassIconCooldown:SetCooldown(self.currentAuraStartTime, self.currentAuraDuration) self.currentClassIconStartTime = self.currentAuraStartTime - elseif ( self.currentAuraDuration == 0 ) then + elseif (self.currentAuraDuration == 0) then self.ClassIconCooldown:Clear() self.currentClassIconStartTime = 0 end local texture = self.currentAuraSpellID and self.currentAuraTexture or self.class and "class" or 134400 - if ( self.currentClassIconTexture == texture ) then return end + if (self.currentClassIconTexture == texture) then return end self.currentClassIconTexture = texture - if ( texture == "class" ) then + if (texture == "class") then texture = classIcons[self.class] end self.ClassIcon:SetTexture(texture) @@ -556,14 +560,14 @@ function sArenaFrameMixin:UpdateTrinket() local spellID, startTime, duration = C_PvP.GetArenaCrowdControlInfo(self.unit) local trinket = self.Trinket - if ( spellID ) then - if ( spellID ~= trinket.spellID ) then + if (spellID) then + if (spellID ~= trinket.spellID) then local _, spellTextureNoOverride = GetSpellTexture(spellID) trinket.spellID = spellID trinket.Texture:SetTexture(spellTextureNoOverride) end - if ( startTime ~= 0 and duration ~= 0 and trinket.Texture:GetTexture() ) then - trinket.Cooldown:SetCooldown(startTime/1000.0, duration/1000.0) + if (startTime ~= 0 and duration ~= 0 and trinket.Texture:GetTexture()) then + trinket.Cooldown:SetCooldown(startTime / 1000.0, duration / 1000.0) else trinket.Cooldown:Clear() end @@ -578,7 +582,6 @@ function sArenaFrameMixin:ResetTrinket() end local function ResetStatusBar(f) - f:SetStatusBarTexture(nil) f:ClearAllPoints() f:SetSize(0, 0) f:SetScale(1) @@ -660,7 +663,7 @@ function sArenaFrameMixin:FindAura() local unit = self.unit local currentSpellID, currentDuration, currentExpirationTime, currentTexture = nil, 0, 0, nil - if ( self.currentInterruptSpellID ) then + if (self.currentInterruptSpellID) then currentSpellID = self.currentInterruptSpellID currentDuration = self.currentInterruptDuration currentExpirationTime = self.currentInterruptExpirationTime @@ -673,10 +676,10 @@ function sArenaFrameMixin:FindAura() for n = 1, 30 do local _, texture, _, _, duration, expirationTime, _, _, _, spellID = UnitAura(unit, n, filter) - if ( not spellID ) then break end + if (not spellID) then break end - if ( auraList[spellID] ) then - if ( not currentSpellID or auraList[spellID] < auraList[currentSpellID] ) then + if (auraList[spellID]) then + if (not currentSpellID or auraList[spellID] < auraList[currentSpellID]) then currentSpellID = spellID currentDuration = duration currentExpirationTime = expirationTime @@ -686,7 +689,7 @@ function sArenaFrameMixin:FindAura() end end - if ( currentSpellID ) then + if (currentSpellID) then self.currentAuraSpellID = currentSpellID self.currentAuraStartTime = currentExpirationTime - currentDuration self.currentAuraDuration = currentDuration @@ -704,13 +707,13 @@ end function sArenaFrameMixin:FindInterrupt(event, spellID) local interruptDuration = interruptList[spellID] - if ( not interruptDuration ) then return end - if ( event ~= "SPELL_INTERRUPT" and event ~= "SPELL_CAST_SUCCESS" ) then return end + if (not interruptDuration) then return end + if (event ~= "SPELL_INTERRUPT" and event ~= "SPELL_CAST_SUCCESS") then return end local unit = self.unit local _, _, _, _, _, _, notInterruptable = UnitChannelInfo(unit) - if ( event == "SPELL_INTERRUPT" or notInterruptable == false ) then + if (event == "SPELL_INTERRUPT" or notInterruptable == false) then self.currentInterruptSpellID = spellID self.currentInterruptDuration = interruptDuration self.currentInterruptExpirationTime = GetTime() + interruptDuration @@ -732,19 +735,19 @@ function sArenaFrameMixin:SetLifeState() self.DeathIcon:SetShown(isDead) self.hideStatusText = isDead - if ( isDead ) then + if (isDead) then self:ResetDR() end end function sArenaFrameMixin:SetStatusText(unit) - if ( self.hideStatusText ) then + if (self.hideStatusText) then self.HealthText:SetText("") self.PowerText:SetText("") return end - if ( not unit ) then + if (not unit) then unit = self.unit end @@ -753,7 +756,7 @@ function sArenaFrameMixin:SetStatusText(unit) local pp = UnitPower(unit) local ppMax = UnitPowerMax(unit) - if ( db.profile.statusText.usePercentage ) then + if (db.profile.statusText.usePercentage) then self.HealthText:SetText(ceil((hp / hpMax) * 100) .. "%") self.PowerText:SetText(ceil((pp / ppMax) * 100) .. "%") else @@ -768,12 +771,12 @@ function sArenaFrameMixin:UpdateStatusTextVisible() end function sArenaMixin:Test() - if ( InCombatLockdown() ) then return end + if (InCombatLockdown()) then return end local currTime = GetTime() - for i = 1,3 do - local frame = self["arena"..i] + for i = 1, 3 do + local frame = self["arena" .. i] frame:Show() frame.HealthBar:SetMinMaxValues(0, 100) @@ -790,7 +793,7 @@ function sArenaMixin:Test() frame.ClassIconCooldown:SetCooldown(GetTime(), math.random(20, 60)) - frame.Name:SetText("arena"..i) + frame.Name:SetText("arena" .. i) frame.Name:SetShown(db.profile.showNames) frame.Trinket.Texture:SetTexture(1322720) @@ -800,7 +803,7 @@ function sArenaMixin:Test() frame.Racial.Cooldown:SetCooldown(currTime, math.random(20, 60)) local color = RAID_CLASS_COLORS["MAGE"] - if ( db.profile.classColors ) then + if (db.profile.classColors) then frame.HealthBar:SetStatusBarColor(color.r, color.g, color.b, 1) else frame.HealthBar:SetStatusBarColor(0, 1, 0, 1) @@ -814,7 +817,7 @@ function sArenaMixin:Test() drFrame:Show() drFrame.Cooldown:SetCooldown(currTime, n == 1 and 60 or math.random(20, 50)) - if ( n == 1 ) then + if (n == 1) then drFrame.Border:SetVertexColor(1, 0, 0, 1) else drFrame.Border:SetVertexColor(0, 1, 0, 1) @@ -833,3 +836,31 @@ function sArenaMixin:Test() frame:UpdateStatusTextVisible() end end + +-- default bars, will get overwritten from layouts +local typeInfoTexture = "Interface\\RaidFrame\\Raid-Bar-Hp-Fill"; +sArenaCastingBarExtensionMixin.typeInfo = { + filling = typeInfoTexture, + full = typeInfoTexture, + glow = typeInfoTexture +} + +local actionColors = { + applyingcrafting = { 1.0, 0.7, 0.0, 1 }, + applyingtalents = { 1.0, 0.7, 0.0, 1 }, + filling = { 1.0, 0.7, 0.0, 1 }, + full = { 0.0, 1.0, 0.0, 1 }, + standard = { 1.0, 0.7, 0.0, 1 }, + empowered = { 1.0, 0.7, 0.0, 1 }, + channel = { 0.0, 1.0, 0.0, 1 }, + uninterruptable = { 0.7, 0.7, 0.7, 1 }, + interrupted = { 1.0, 0.0, 0.0, 1 } +} + + + +function sArenaCastingBarExtensionMixin:GetTypeInfo(barType) + barType = barType or "standard"; + self:SetStatusBarColor(unpack(actionColors[barType])); + return self.typeInfo +end diff --git a/sArena.toc b/sArena.toc index 395ac45..ddd19fc 100644 --- a/sArena.toc +++ b/sArena.toc @@ -1,8 +1,8 @@ -## Interface: 90005 +## Interface: 100000 ## Title: sArena ## Notes: Enhanced arena frames ## Author: Stako -## Version: 3.1.8 +## Version: 3.2.0 ## OptionalDeps: ElvUI ## X-Category: PvP/Arena ## X-Credits: Tekkub, Starship, Kouri, Kollektiv, Lyn, haste, evl, Zork, jturel, wardz diff --git a/sArena.xml b/sArena.xml index 6de915a..95b4227 100644 --- a/sArena.xml +++ b/sArena.xml @@ -66,7 +66,8 @@ -