diff --git a/Interface/AddOns/SVUI/packages/override/common/looting.lua b/Interface/AddOns/SVUI/packages/override/common/looting.lua index 9203e2d..4ee19d7 100644 --- a/Interface/AddOns/SVUI/packages/override/common/looting.lua +++ b/Interface/AddOns/SVUI/packages/override/common/looting.lua @@ -271,7 +271,7 @@ local function MakeSlots(id) slot.count = slot.iconFrame:CreateFontString(nil, "OVERLAY") slot.count:SetJustifyH("RIGHT") slot.count:Point("BOTTOMRIGHT", slot.iconFrame, -2, 2) - slot.count:SetFontTemplate(SuperVillain.Media.font.roboto, nil, "OUTLINE") + slot.count:SetFont(SuperVillain.Shared:Fetch("font", "Roboto"), 12, "OUTLINE") slot.count:SetText(1) slot.name = slot:CreateFontString(nil, "OVERLAY") @@ -279,7 +279,7 @@ local function MakeSlots(id) slot.name:SetPoint("LEFT", slot) slot.name:SetPoint("RIGHT", slot.icon, "LEFT") slot.name:SetNonSpaceWrap(true) - slot.name:SetFontTemplate(SuperVillain.Media.font.roboto, nil, "OUTLINE") + slot.name:SetFont(SuperVillain.Shared:Fetch("font", "Roboto"), 12, "OUTLINE") slot.drop = slot:CreateTexture(nil, "ARTWORK") slot.drop:SetTexture("Interface\\QuestFrame\\UI-QuestLogTitleHighlight") @@ -315,7 +315,7 @@ local function CreateRollButton(rollFrame, type, locale, anchor) rollButton:SetScript("OnClick", DoDaRoll) rollButton:SetMotionScriptsWhileDisabled(true) local text = rollButton:CreateFontString(nil, nil) - text:SetFontTemplate(nil, nil, "OUTLINE") + text:SetFont(SuperVillain.Shared:Fetch("font", "Roboto"),14,"OUTLINE") text:Point("CENTER", 0, ((type == 2 and 1) or (type == 0 and -1.2) or 0)) return rollButton, text end @@ -369,16 +369,16 @@ local function CreateRollFrame() rollFrame.need,rollFrame.greed,rollFrame.pass,rollFrame.disenchant = needText,greedText,passText,deText; rollFrame.bindText = rollFrame:CreateFontString() rollFrame.bindText:Point("LEFT",passButton,"RIGHT",3,1) - rollFrame.bindText:SetFontTemplate(nil,nil,"OUTLINE") + rollFrame.bindText:SetFont(SuperVillain.Shared:Fetch("font", "SVUI Number Font"),14,"OUTLINE") rollFrame.lootText = rollFrame:CreateFontString(nil,"ARTWORK") - rollFrame.lootText:SetFontTemplate(nil,nil,"OUTLINE") + rollFrame.lootText:SetFont(SuperVillain.Shared:Fetch("font", "SVUI Number Font"),14,"OUTLINE") rollFrame.lootText:Point("LEFT",rollFrame.bindText,"RIGHT",0,0) rollFrame.lootText:Point("RIGHT",rollFrame,"RIGHT",-5,0) rollFrame.lootText:Size(200,10) rollFrame.lootText:SetJustifyH("LEFT") rollFrame.yourRoll = rollFrame:CreateFontString(nil,"ARTWORK") - rollFrame.yourRoll:SetFontTemplate(SuperVillain.Media.font.numbers,18,"OUTLINE") + rollFrame.yourRoll:SetFont(SuperVillain.Shared:Fetch("font", "SVUI Number Font"),18,"OUTLINE") rollFrame.yourRoll:Size(22,22) rollFrame.yourRoll:Point("LEFT",rollFrame,"RIGHT",5,0) rollFrame.yourRoll:SetJustifyH("CENTER") @@ -621,7 +621,7 @@ end local OverrideLootFrame = function(self) LootFrame:UnregisterAllEvents(); SVUI_LootFrame:SetFixedPanelTemplate('Transparent'); - SVUI_LootFrame.title:SetFontTemplate(nil,nil,'OUTLINE'); + SVUI_LootFrame.title:SetFont(SuperVillain.Shared:Fetch("font", "SVUI Number Font"),18,"OUTLINE") SuperVillain:SetSVMovable(SVUI_LootFrameHolder, "SVUI_LootFrame_MOVE", L["Loot Frame"]); tinsert(UISpecialFrames, "SVUI_LootFrame"); diff --git a/Interface/AddOns/SVUI/packages/unit/common/aurabars.lua b/Interface/AddOns/SVUI/packages/unit/common/aurabars.lua index d4af6ba..3192a9c 100644 --- a/Interface/AddOns/SVUI/packages/unit/common/aurabars.lua +++ b/Interface/AddOns/SVUI/packages/unit/common/aurabars.lua @@ -38,7 +38,7 @@ local AuraRemover_OnClick = function(self) local id = self:GetParent().aura.spellID; if id then SuperVillain:AddonMessage(format(L["The spell '%s' has been added to the Blocked unitframe aura filter."], n)) - SuperVillain.Filters:Change("Blocked", id, {["enable"] = true, ["priority"] = 0}) + SuperVillain:ChangeFilter("Blocked", id, {["enable"] = true, ["priority"] = 0}) MOD:RefreshUnitFrames() end end @@ -87,13 +87,13 @@ do return false end - CustomBarFilter = function(self, unit, name, _, _, _, debuffType, duration, _, unitCaster, isStealable, shouldConsolidate, spellID) + CustomBarFilter = function(self, unit, name, _, _, _, debuffType, duration, _, caster, isStealable, shouldConsolidate, spellID) local db = MOD.db[self.db] if((not db) or (db and not db.aurabar) or (spellID == 65148)) then return false; end local barDB = db.aurabar - local filtered = (unitCaster == "player" or unitCaster == "vehicle") and true or false; + local filtered = (caster == "player" or caster == "vehicle") and true or false; local allowed = true; local pass = false; local friendly = UnitIsFriend("player", unit) == 1 and true or false; @@ -133,7 +133,7 @@ do pass = true end local active = barDB.useFilter - if active and SuperVillain.Filters[active] then + if active and active ~= "" and SuperVillain.Filters[active] then local spellsDB = SuperVillain.Filters[active]; if active ~= "Blocked" then if spellsDB[name] and spellsDB[name].enable and allowed then diff --git a/Interface/AddOns/SVUI/packages/unit/common/auras.lua b/Interface/AddOns/SVUI/packages/unit/common/auras.lua index 8702495..5fe7172 100644 --- a/Interface/AddOns/SVUI/packages/unit/common/auras.lua +++ b/Interface/AddOns/SVUI/packages/unit/common/auras.lua @@ -85,7 +85,7 @@ local AuraRemover_OnClick = function(self) local name = self.name; if name then SuperVillain:AddonMessage(format(L["The spell '%s' has been added to the Blocked unitframe aura filter."], name)) - SuperVillain.Filters["Blocked"]["spells"][name] = {["enable"] = true, ["priority"] = 0} + SuperVillain:ChangeFilter("Blocked", name, {["enable"] = true, ["priority"] = 0}) MOD:RefreshUnitFrames() end end @@ -241,32 +241,29 @@ do end CustomAuraFilter = function(self, unit, icon, name, _, _, _, debuffType, duration, _, caster, isStealable, shouldConsolidate, spellID, canApplyAura, isBossAura) - local auraDB = MOD.db[self.db] - if((not auraDB) or (spellID == 65148)) then - return false; - end - + local db = MOD.db[self.db] local auraType = self.type; - if(not auraType) then return true end; - - local isPlayer, friendly; - local filtered = true; + if((not db) or (db and not db[auraType]) or (spellID == 65148)) then + return false; + end + local auraDB = db[auraType] + local filtered = (caster == "player" or caster == "vehicle") and true or false; local allowed = true; local pass = false; - local isPlayer = caster == "player"or caster == "vehicle" local friendly = UnitIsFriend("player", unit) == 1 and true or false; - local filterType = friendly and auraDB.friendlyAuraType or auraDB.enemyAuraType; - icon.isPlayer = isPlayer; + + icon.isPlayer = filtered; icon.owner = caster; icon.name = name; icon.priority = 0; + local shieldSpell = SuperVillain.Filters["Shield"][name] if shieldSpell and shieldSpell.enable then icon.priority = shieldSpell.priority - end - if _test(auraDB.filterPlayer, friendly) then - if isPlayer then filtered = true else filtered = false end + end + + if _test(auraDB.filterPlayer, friendly) then allowed = filtered; pass = true end @@ -304,7 +301,7 @@ do pass = true end local active = auraDB.useFilter - if active and SuperVillain.Filters[active] then + if active and active ~= "" and SuperVillain.Filters[active] then local spellDB = SuperVillain.Filters[active]; if active ~= "Blocked" then if spellDB[name] and spellDB[name].enable and allowed then diff --git a/Interface/AddOns/SVUI/scripts/comix.lua b/Interface/AddOns/SVUI/scripts/comix.lua index 580ef45..142a154 100644 --- a/Interface/AddOns/SVUI/scripts/comix.lua +++ b/Interface/AddOns/SVUI/scripts/comix.lua @@ -147,11 +147,11 @@ function SuperVillain:ToggleComix() end; function SuperVillain:ToastyKombat() - Comix:LaunchPopup("DELUXE") - -- ComixToastyPanelBG.anim[2]:SetOffset(256, -256) - -- ComixToastyPanelBG.anim[2]:SetOffset(0, 0) - -- ComixToastyPanelBG.anim:Play() - -- PlaySoundFile([[Interface\AddOns\SVUI\assets\sounds\toasty.mp3]]) + --Comix:LaunchPopup("DELUXE") + ComixToastyPanelBG.anim[2]:SetOffset(256, -256) + ComixToastyPanelBG.anim[2]:SetOffset(0, 0) + ComixToastyPanelBG.anim:Play() + PlaySoundFile([[Interface\AddOns\SVUI\assets\sounds\toasty.mp3]]) end; local Comix_OnUpdate = function() Comix:ReadyState(true) end diff --git a/Interface/AddOns/SVUI/system/classes/Database.lua b/Interface/AddOns/SVUI/system/classes/Database.lua index 32430ff..796215d 100644 --- a/Interface/AddOns/SVUI/system/classes/Database.lua +++ b/Interface/AddOns/SVUI/system/classes/Database.lua @@ -3371,7 +3371,7 @@ local function removedefaults(db, src, nometa) db[k] = nil end else - if db[k] == src[k] then + if db[k] == v then db[k] = nil end end @@ -3460,6 +3460,7 @@ end local metadatabase = { __index = function(t, k) + if(not k or k == "") then return end local sv = rawget(t, "profile") local dv = rawget(t, "defaults") local src = dv and dv[k] @@ -3469,7 +3470,7 @@ local metadatabase = { end rawset(t, k, sv[k]) return rawget(t, k) - end + end, } local METAPROFILE = function(sv) @@ -3520,6 +3521,7 @@ end local metaglobals = { __index = function(t, k) + if(not k or k == "") then return end local sv = rawget(t, "globals") local dv = rawget(t, "defaults") local src = dv and dv[k] diff --git a/Interface/AddOns/SVUI/system/classes/Filters.lua b/Interface/AddOns/SVUI/system/classes/Filters.lua index 0815dc2..d1d2d4e 100644 --- a/Interface/AddOns/SVUI/system/classes/Filters.lua +++ b/Interface/AddOns/SVUI/system/classes/Filters.lua @@ -567,11 +567,17 @@ local CLASS_WATCH_INDEX = { local FilterIDs = { ["Blocked"] = [[36900,36901,36893,114216,97821,36032,132365,8733,57724,25771,57723,36032,58539,26013,6788,71041,41425,55711,8326,23445,24755,25163,80354,95809,95223,124275,124274,124273,117870,123981,15007,113942,89140]], + ["Allowed"] = [[31821,2825,32182,80353,90355,47788,33206,116849,22812,1490,116202,123059,136431,137332,137375,144351,142863,142864,142865,143198]], + ["Strict"] = [[123059,136431,137332,137375,144351,142863,142864,142865,143198]], + ["CC"] = [[47476,91800,91807,91797,108194,115001,33786,2637,339,78675,22570,5211,9005,102359,99,127797,45334,102795,114238,113004,3355,1513,19503,34490,24394,64803,19386,117405,128405,50519,91644,90337,54706,4167,90327,56626,50245,50541,96201,96201,31661,118,55021,122,82691,118271,44572,33395,102051,20066,10326,853,105593,31935,105421,605,64044,8122,9484,15487,114404,88625,113792,87194,2094,1776,6770,1833,51722,1330,408,88611,115197,113953,51514,64695,63685,76780,118905,118345,710,6789,118699,5484,6358,30283,24259,115782,115268,118093,89766,137143,20511,7922,676,105771,107566,132168,107570,118895,18498,116706,117368,115078,122242,119392,119381,120086,116709,123407,140023,25046,20549,107079]], + ["Shield"] = [[17,47515,45243,45438,115610,48797,48792,49039,87256,55233,50461,33206,47788,62618,47585,104773,110913,108359,22812,102342,106922,61336,19263,53480,1966,31224,74001,5277,45182,98007,30823,108271,1022,6940,114039,31821,498,642,86659,31850,118038,55694,97463,12975,114029,871,114030,120954,131523,122783,122278,115213,116849,20594]], + ["Player"] = [[17,47515,45243,45438,45438,115610,110909,12051,12472,80353,12042,32612,110960,108839,111264,108843,48797,48792,49039,87256,49222,55233,50461,49016,51271,96268,33206,47788,62618,47585,6346,10060,114239,119032,27827,104773,110913,108359,113860,113861,113858,88448,22812,102342,106922,61336,117679,102543,102558,102560,16689,132158,106898,1850,106951,29166,52610,69369,112071,124974,19263,53480,51755,54216,34471,3045,3584,131894,90355,90361,31224,74001,5277,45182,51713,114018,2983,121471,11327,108212,57933,79140,13750,98007,30823,108271,16188,2825,79206,16191,8178,58875,108281,108271,16166,114896,1044,1022,1038,6940,114039,31821,498,642,86659,20925,31850,31884,53563,31842,54428,105809,85499,118038,55694,97463,12975,114029,871,114030,18499,1719,23920,114028,46924,3411,107574,120954,131523,122783,122278,115213,116849,125174,116841,20594,59545,20572,26297,68992]], + ["Raid"] = [[116281,116784,116417,116942,116161,117708,118303,118048,118135,117878,117949,116835,116778,116525,122761,122760,122740,123812,123180,123474,122835,123081,122125,121885,121949,117436,118091,117519,122752,123011,116161,123121,119985,119086,119775,122151,138349,137371,136767,137641,137359,137972,136903,136753,137633,137731,133767,133768,136050,138569,134691,137440,137408,137360,135000,143436,143579,147383,146124,144851,144358,144774,147207,144215,143990,144330,143494,142990,143919,143766,143773,146589,143777,143385,143974,145183]] } @@ -585,6 +591,18 @@ local FilterOverrides = { ["120954"] = 2, ["131523"] = 5 } +local function safename(id) + local n = GetSpellInfo(id) + if not n then + if type(id) == "string" then + n = id + else + print('|cffFF9900SVUI:|r Spell not found: (#ID) '..id) + n = "Voodoo Doll"; + end + end + return n +end local FilterDefaults = { ["CC"] = {}, ["Shield"] = {}, @@ -596,18 +614,22 @@ local FilterDefaults = { ['BuffWatch'] = CLASS_WATCH_INDEX[SuperVillain.class], ['PetBuffWatch'] = CLASS_WATCH_INDEX.PET, } - -local function safename(id) - local n = GetSpellInfo(id) - if not n then - if type(id) == "string" then - n = id - else - print('|cffFF9900SVUI:|r Spell not found: (#ID) '..id) - n = "Voodoo Doll"; - end +for k, x in pairs(FilterIDs) do + local src = {}; + for id in gmatch(x, '([^,]+)') do + if(id) then + local saved + local n = safename(id); + local p = FilterOverrides[tostring(id)] or 0; + if k == "Strict" then + saved = {['enable'] = true, ['spellID'] = id, ['priority'] = p} + else + saved = {['enable'] = true, ['priority'] = p} + end + src[n] = saved + end end - return n + FilterDefaults[k] = src end local function tablecopy(d, s) @@ -628,26 +650,6 @@ local function tablecopy(d, s) end end -do - for k, x in pairs(FilterIDs) do - local src = {}; - for id in gmatch(x, '([^,]+)') do - if(id) then - local saved - local n = safename(id); - local p = FilterOverrides[tostring(id)] or 0; - if k == "Strict" then - saved = {['enable'] = true, ['spellID'] = id, ['priority'] = p} - else - saved = {['enable'] = true, ['priority'] = p} - end - src[n] = saved - end - end - FilterDefaults[k] = src - end -end - local function removedefaults(db, src, nometa) if(type(src) ~= "table") then return end if(not nometa) then @@ -667,61 +669,26 @@ local function removedefaults(db, src, nometa) end end -local function setdefaults(t, key) - local sv = rawget(t, "filters") - local src = rawget(t, "defaults") - local dest = sv[key] - if(dest) then - for k,v in pairs(dest) do - dest[k] = nil - end - else - sv[key] = {} - end - tablecopy(sv[key], src[key]) -end - -local function getdefaults(t, key) - return FilterDefaults[key] or {} -end - -local function resetfilters(t) - local sv = rawget(t, "filters") - local src = rawget(t, "defaults") - for k,v in pairs(sv) do - sv[k] = nil - end - tablecopy(sv, src) -end - -local function changefilter(t, k, id, v) - local sv = rawget(t, "filters") - local name = safename(id) - rawset(sv[k], name, v) -end - -local function initializedata(t) - local sv = rawget(t, "filters") - local dv = rawget(t, "defaults") +local function initializedata(sv) + local dv = FilterDefaults for k,v in pairs(sv) do - if(dv[k]) then - removedefaults(sv[k], dv[k]) - end + removedefaults(sv[k], dv[k]) end end local SanitizeDatabase = function(self, event) if event == "PLAYER_LOGOUT" then - local db = SuperVillain.Filters.filters - local src = FilterDefaults - for k,v in pairs(db) do - removedefaults(db[k], src[k]) + local sv = SuperVillain.Filters + local dv = FilterDefaults + for k,v in pairs(sv) do + removedefaults(sv[k], dv[k]) end end end local metadatabase = { __index = function(t, k) + if(not k or k == "") then return end local sv = rawget(t, "filters") local dv = rawget(t, "defaults") local src = dv and dv[k] @@ -736,32 +703,42 @@ local metadatabase = { local METAFILTERS = function(sv) - local methods = { - filters = sv, - defaults = FilterDefaults, - Init = initializedata, - Reset = resetprofile, - SetDefault = setdefaults, - Change = changefilter - } - - local db = setmetatable(methods, metadatabase) - local logout = CreateFrame("Frame",nil) logout:RegisterEvent("PLAYER_LOGOUT") logout:SetScript("OnEvent", SanitizeDatabase) - return db + for k, x in pairs(FilterIDs) do + if (not sv[k]) then sv[k] = {} end + local src = {}; + for id in gmatch(x, '([^,]+)') do + if(id) then + local saved + local n = safename(id); + local p = FilterOverrides[tostring(id)] or 0; + if k == "Strict" then + saved = {['enable'] = true, ['spellID'] = id, ['priority'] = p} + else + saved = {['enable'] = true, ['priority'] = p} + end + if (not sv[k][n]) then src[n] = saved else src[n] = sv[k][n] end + end + end + sv[k] = src + end + + return sv +end + +function SuperVillain:ChangeFilter(k, id, v) + local name = safename(id) + self.Filters[k][name] = v end function SuperVillain:SetFilterObjects(init) if(init) then - self.Filters = tcopy(FilterDefaults, true) + self.Filters = FilterDefaults else - twipe(self.Filters) - --self.Filters = tcopy(FilterDefaults, true) local sv = _G["SVUI_AuraFilters"] self.Filters = METAFILTERS(sv) - self.Filters:Init() end end \ No newline at end of file diff --git a/Interface/AddOns/SVUI/system/classes/Registry.lua b/Interface/AddOns/SVUI/system/classes/Registry.lua index 6fc0b5a..b8a312b 100644 --- a/Interface/AddOns/SVUI/system/classes/Registry.lua +++ b/Interface/AddOns/SVUI/system/classes/Registry.lua @@ -302,19 +302,16 @@ local METAREGISTRY = function() end end, UpdateAll = function(_) - for priority = 1,3 do - if _._packages[priority] then - local updList = _._packages[priority] - for i=1,#_packages[priority] do - local obj = updList[i] - local name = obj._name - if obj and obj.UpdateThisPackage then - if SuperVillain.db[name] then - obj.db = SuperVillain.db[name] - end - obj:UpdateThisPackage() - end + print("Registry: Updating") + local pkgList = _._packages + for name,obj in pairs(pkgList) do + print(name) + local name = obj._name + if obj and obj.UpdateThisPackage then + if SuperVillain.db[name] then + obj.db = SuperVillain.db[name] end + obj:UpdateThisPackage() end end end diff --git a/Interface/AddOns/SVUI/system/system.lua b/Interface/AddOns/SVUI/system/system.lua index 50f181e..69b75ec 100644 --- a/Interface/AddOns/SVUI/system/system.lua +++ b/Interface/AddOns/SVUI/system/system.lua @@ -66,9 +66,9 @@ BUILD ADDON OBJECTS ########################################################## ]]-- local SuperVillain = {}; -SuperVillain.Filters = {}; SuperVillain.db = {}; SuperVillain.Media = {}; +SuperVillain.Filters = {}; SuperVillain.DisplayAudit = {}; SuperVillain.DynamicOptions = {}; SuperVillain.snaps = {}; @@ -381,7 +381,6 @@ end local function FullLoad(self) self:SetDatabaseObjects() - self:SetFilterObjects() self:UIScale("PLAYER_LOGIN"); self.Registry:Load(); self:DefinePlayerRole(); diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/filter.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/filter.lua index 1222c0e..85d76b6 100644 --- a/Interface/AddOns/SVUI_ConfigOMatic/modules/filter.lua +++ b/Interface/AddOns/SVUI_ConfigOMatic/modules/filter.lua @@ -291,7 +291,7 @@ local function generateFilterOptions() name = L["Style"], order = 3, type = "select", - values = {["coloredIcon"] = L["Colored Icon"], ["texturedIcon"] = L["Textured Icon"], ["NONE"] = NONE} + values = {["coloredIcon"] = L["Colored Icon"], ["texturedIcon"] = L["Textured Icon"], [""] = NONE} }, color = { name = L["Color"], @@ -494,7 +494,7 @@ local function generateFilterOptions() }, xOffset = {order = 2, type = "range", name = L["xOffset"], min = -75, max = 75, step = 1}, yOffset = {order = 2, type = "range", name = L["yOffset"], min = -75, max = 75, step = 1}, - style = {name = L["Style"], order = 3, type = "select", values = {["coloredIcon"] = L["Colored Icon"], ["texturedIcon"] = L["Textured Icon"], ["NONE"] = NONE}}, + style = {name = L["Style"], order = 3, type = "select", values = {["coloredIcon"] = L["Colored Icon"], ["texturedIcon"] = L["Textured Icon"], [""] = NONE}}, color = { name = L["Color"], type = "color", @@ -621,7 +621,10 @@ local function generateFilterOptions() order = 3, guiInline = true, get = function(e)return selectedSpell end, - set = function(e, arg)selectedSpell = arg;generateFilterOptions()end, + set = function(e, arg) + selectedSpell = arg; + generateFilterOptions() + end, values = function() local filters = {} local list = SuperVillain.Filters[filterType] @@ -723,7 +726,7 @@ SuperVillain.Options.args.filters = { values = function() filters = {} filters[""] = NONE; - for g in pairs(SuperVillain.Filters.defaults) do + for g in pairs(SuperVillain.Filters) do filters[g] = g end; return filters @@ -746,7 +749,7 @@ SuperVillain.Options.args.filters = { values = function() filters = {} filters[""] = NONE; - for g in pairs(SuperVillain.Filters.defaults) do + for g in pairs(SuperVillain.Filters) do filters[g] = g end; filters["Buff Indicator"] = "Buff Indicator"