from retail

This commit is contained in:
NoM0Re
2025-01-08 00:24:04 +01:00
parent 2f96cddc7d
commit 988145737d
8 changed files with 132 additions and 49 deletions
+23 -1
View File
@@ -3370,8 +3370,30 @@ do
if not castLatencyFrame then
castLatencyFrame = CreateFrame("Frame")
castLatencyFrame:RegisterEvent("CURRENT_SPELL_CAST_CHANGED")
castLatencyFrame:SetScript("OnEvent", function(event)
castLatencyFrame:RegisterEvent("UNIT_SPELLCAST_START")
castLatencyFrame:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START")
castLatencyFrame:RegisterEvent("UNIT_SPELLCAST_STOP")
castLatencyFrame:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP")
castLatencyFrame:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED")
castLatencyFrame:SetScript("OnEvent", function(self, event, unit)
if unit and unit ~= "player" then return end
if event == "UNIT_SPELLCAST_START" then
Private.LAST_CURRENT_SPELL_CAST_START = select(4, UnitCastingInfo("player")) / 1000
elseif event == "UNIT_SPELLCAST_CHANNEL_START" then
Private.LAST_CURRENT_SPELL_CAST_START = select(4, UnitChannelInfo("player")) / 1000
elseif event == "CURRENT_SPELL_CAST_CHANGED" then
-- We want to store the CURRENT_SPELL_CAST_CHANGED time
-- that was the last before the actual START event
-- This prevents updating the CURRENT_SPELL_CAST_CHANGED time after
-- we got the start time
if not Private.LAST_CURRENT_SPELL_CAST_START then
Private.LAST_CURRENT_SPELL_CAST_CHANGED = GetTime()
end
else -- STOP EVENTS
Private.LAST_CURRENT_SPELL_CAST_START = nil
end
end)
end
end
+1 -1
View File
@@ -8,7 +8,7 @@ WeakAuras.halfWidth = WeakAuras.normalWidth / 2
WeakAuras.doubleWidth = WeakAuras.normalWidth * 2
local versionStringFromToc = GetAddOnMetadata("WeakAuras", "Version")
local versionString = "4.1.2"
local versionString = "4.1.5"
local buildTime = "20240701180000"
local isAwesomeEnabled = C_NamePlate and C_NamePlate.GetNamePlateForUnit or false
+2 -7
View File
@@ -97,11 +97,6 @@ function WeakAuras.SpellSchool(school)
return Private.combatlog_spell_school_types[school] or ""
end
function WeakAuras.TestSchool(spellSchool, test)
print(spellSchool, test, type(spellSchool), type(test))
return spellSchool == test
end
function WeakAuras.RaidFlagToIndex(flag)
return Private.combatlog_raidFlags[flag] or 0
end
@@ -6256,8 +6251,8 @@ Private.event_prototypes = {
{
name = L["Latency"],
func = function(trigger, state)
if not state.expirationTime or not state.duration then return 0, 0 end
return 0, (state.expirationTime - state.duration) - (Private.LAST_CURRENT_SPELL_CAST_CHANGED or 0)
if not Private.LAST_CURRENT_SPELL_CAST_START or not Private.LAST_CURRENT_SPELL_CAST_CHANGED then return 0, 0 end
return 0, Private.LAST_CURRENT_SPELL_CAST_START - Private.LAST_CURRENT_SPELL_CAST_CHANGED
end,
enable = function(trigger)
return trigger.use_showLatency and trigger.unit == "player"
+52 -14
View File
@@ -1082,6 +1082,7 @@ function Private.Login(initialTime, takeNewSnapshots)
print("|cFF8800FFWeakAuras|r detected a corrupt entry in WeakAuras saved displays - '"..tostring(id).."' vs '"..tostring(data.id).."'" );
data.id = id;
end
tinsert(toAdd, data);
end
coroutine.yield();
@@ -2119,26 +2120,39 @@ function Private.SyncParentChildRelationships(silent)
end
end
function WeakAuras.AddMany(table, takeSnapshots)
local idtable = {};
for _, data in ipairs(table) do
idtable[data.id] = data;
end
local function loadOrder(tbl, idtable)
local order = {}
local loaded = {};
local function load(id, depends)
local data = idtable[id];
if(data.parent) then
if(idtable[data.parent]) then
if(tContains(depends, data.parent)) then
if depends[data.parent] then
-- There was an unfortunate bug in update.lua in 2022 that resulted
-- in auras having a circular dependencies
-- Fix one of the two known cases here
-- We can probably remove this code in 2023 again
for d in pairs(depends) do
local uid = idtable[d].uid
if uid == "fjtz3A6LwBW" then -- Fojji - Deathknight UI, need to fixup a lot
local cycleRoot = d
idtable[cycleRoot].parent = nil
for d in pairs(depends) do
tDeleteItem(idtable[d].controlledChildren, cycleRoot)
end
return loadOrder(tbl, idtable)
end
coroutine.yield()
end
error("Circular dependency in WeakAuras.AddMany between "..table.concat(depends, ", "));
else
if not(loaded[data.parent]) then
local dependsOut = {};
for i,v in pairs(depends) do
dependsOut[i] = v;
end
tinsert(dependsOut, data.parent);
load(data.parent, dependsOut);
local dependsOut = CopyTable(depends)
dependsOut[data.parent] = true
coroutine.yield()
load(data.parent, dependsOut)
coroutine.yield()
end
end
else
@@ -2146,14 +2160,38 @@ function WeakAuras.AddMany(table, takeSnapshots)
end
end
if not(loaded[id]) then
WeakAuras.Add(data, takeSnapshots);
coroutine.yield();
loaded[id] = true;
tinsert(order, idtable[id])
end
end
local groups = {}
for id, data in pairs(idtable) do
load(id, {});
coroutine.yield()
end
return order
end
function WeakAuras.AddMany(tbl, takeSnapshots)
local idtable = {};
for _, data in ipairs(tbl) do
-- There was an unfortunate bug in update.lua in 2022 that resulted
-- in auras having a circular dependencies
-- Fix one of the two known cases here
if data.id == data.parent then
data.parent = nil
tDeleteItem(data.controlledChildren, data.id)
end
idtable[data.id] = data;
end
local order = loadOrder(tbl, idtable)
coroutine.yield()
local groups = {}
for _, data in ipairs(order) do
WeakAuras.Add(data, takeSnapshots);
coroutine.yield()
if data.regionType == "dynamicgroup" or data.regionType == "group" then
groups[data] = true
end
+1 -1
View File
@@ -1,7 +1,7 @@
## Interface: 30300
## Title: WeakAuras
## Author: The WeakAuras Team
## Version: 4.1.2
## Version: 4.1.5
## Notes: A powerful, comprehensive utility for displaying graphics and information based on buffs, debuffs, and other triggers.
## Notes-esES: Potente y completa aplicación que te permitirá mostrar por pantalla múltiples diseños, basados en beneficios, perjuicios y otros activadores.
## Notes-deDE: Ein leistungsfähiges, umfassendes Addon zur grafischen Darstellung von Informationen von Auren, Cooldowns, Timern und vielem mehr.
+1 -1
View File
@@ -255,7 +255,7 @@ function OptionsPrivate.GetInformationOptions(data)
order = order + 1
args.debugLogDesc = {
type = "description",
name = L["This enables the collection of debug logs. This requires custom coded auras that use DebugPrints."],
name = L["This enables the collection of debug logs. Custom code can add debug information to the log through the function DebugPrint."],
width = WeakAuras.doubleWidth,
order = order,
}
+38 -10
View File
@@ -620,6 +620,14 @@ local function BuildUidMap(data, children, type)
return self.map[uid].parent
end
uidMap.UnsetParent = function(self, uid)
if not self.map[uid] then
error("GetParent for unknown uid")
return
end
self.map[uid].parent = nil
end
uidMap.GetParentIsDynamicGroup = function(self, uid)
if not self.map[uid] then
error("GetParentIsDynamicGroup for unknown uid")
@@ -1527,14 +1535,20 @@ local methods = {
self:SetMinimumProgress(1 * onePhaseProgress)
coroutine.yield()
if userChoices.activeCategories.oldchildren then
self:RemoveUnmatchedOld(matchInfo.oldUidMap, matchInfo.oldUidMap:GetRootUID())
local removeOldGroups = matchInfo.activeCategories.arrangement and userChoices.activeCategories.arrangement
if userChoices.activeCategories.oldchildren or removeOldGroups then
self:RemoveUnmatchedOld(matchInfo.oldUidMap, matchInfo.oldUidMap:GetRootUID(), matchInfo.newUidMap,
userChoices.activeCategories.oldchildren,
removeOldGroups)
end
self:SetMinimumProgress(2 * onePhaseProgress)
if not userChoices.activeCategories.newchildren then
self:RemoveUnmatchedNew(matchInfo.newUidMap, matchInfo.newUidMap:GetRootUID())
local removeNewGroups = matchInfo.activeCategories.arrangement and not userChoices.activeCategories.arrangement
if userChoices.activeCategories.newchildren or removeNewGroups then
self:RemoveUnmatchedNew(matchInfo.newUidMap, matchInfo.newUidMap:GetRootUID(), matchInfo.oldUidMap,
userChoices.activeCategories.newchildren,
removeNewGroups)
end
self:SetMinimumProgress(3 * onePhaseProgress)
@@ -1731,7 +1745,7 @@ local methods = {
coroutine.yield()
return changed
end,
RemoveUnmatchedOld = function(self, uidMap, uid)
RemoveUnmatchedOld = function(self, uidMap, uid, otherMap, removeAuras, removeGroups)
if uidMap:GetType() ~= "old" then
error("Wrong map for delete")
end
@@ -1739,8 +1753,8 @@ local methods = {
local children = uidMap:GetChildren(uid)
local removedAllChildren = true
for index, childUid in ipairs_reverse(children) do
local removed = self:RemoveUnmatchedOld(uidMap, childUid)
if not removed then
local removed = self:RemoveUnmatchedOld(uidMap, childUid, otherMap, removeAuras, removeGroups)
if not removed and not uidMap:GetUIDMatch(childUid) then
removedAllChildren = false
end
end
@@ -1751,6 +1765,12 @@ local methods = {
error("Can't remove root")
end
if (uidMap:GetGroupRegionType(uid) and removeGroups)
or (uidMap:GetGroupRegionType(uid) == nil and removeAuras)
then
for index, childUid in ipairs_reverse(children) do
uidMap:UnsetParent(childUid)
end
local data = OptionsPrivate.Private.GetDataByUID(uid)
if not data then
error("Can't find data")
@@ -1761,11 +1781,12 @@ local methods = {
coroutine.yield()
return true
end
end
self:IncProgress()
coroutine.yield()
return false
end,
RemoveUnmatchedNew = function(self, uidMap, uid)
RemoveUnmatchedNew = function(self, uidMap, uid, otherMap, removeAuras, removeGroups)
if uidMap:GetType() ~= "new" then
error("Wrong map for delete")
end
@@ -1773,8 +1794,8 @@ local methods = {
local children = uidMap:GetChildren(uid)
local removedAllChildren = true
for index, childUid in ipairs_reverse(children) do
local removed = self:RemoveUnmatchedNew(uidMap, childUid)
if not removed then
local removed = self:RemoveUnmatchedNew(uidMap, childUid, otherMap, removeAuras, removeGroups)
if not removed and not uidMap:GetUIDMatch(childUid) then
removedAllChildren = false
end
end
@@ -1785,11 +1806,18 @@ local methods = {
error("Can't remove root")
end
if (uidMap:GetGroupRegionType(uid) and removeGroups)
or (uidMap:GetGroupRegionType(uid) == nil and removeAuras)
then
for index, childUid in ipairs_reverse(children) do
uidMap:UnsetParent(childUid)
end
uidMap:Remove(uid)
self:IncProgress()
coroutine.yield()
return true
end
end
self:IncProgress()
coroutine.yield()
return false
+1 -1
View File
@@ -1,7 +1,7 @@
## Interface: 30300
## Title: WeakAuras Options
## Author: The WeakAuras Team
## Version: 4.1.2
## Version: 4.1.5
## Notes: Options for WeakAuras
## Notes-esES: Opciones para WeakAuras
## Notes-deDE: Optionen für WeakAuras