mirror of
https://github.com/Relintai/Relintais-Enemy-Kooldown-Tracker-WotLK.git
synced 2024-11-08 10:12:11 +01:00
CD sorting implemented
This commit is contained in:
parent
0523a0d379
commit
c711ed1d13
54
Vect.lua
54
Vect.lua
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
--TODOS:
|
--TODOS:
|
||||||
--Player Entering World -> cleanup the db
|
--Player Entering World -> cleanup the db
|
||||||
--CD Sort Order
|
|
||||||
--Chat Command
|
--Chat Command
|
||||||
--DR timers
|
--DR timers
|
||||||
|
--Arcane Power?!
|
||||||
|
|
||||||
--"Globals"
|
--"Globals"
|
||||||
local aceDB = LibStub("AceDB-3.0")
|
local aceDB = LibStub("AceDB-3.0")
|
||||||
@ -171,15 +171,15 @@ function Vect:ReassignCds(which)
|
|||||||
--check if we have cooldown for that unit
|
--check if we have cooldown for that unit
|
||||||
if not self.cds[self.targets[which]] then return end;
|
if not self.cds[self.targets[which]] then return end;
|
||||||
--sort them
|
--sort them
|
||||||
Vect:SortCDs(which);
|
local tmp = Vect:SortCDs(which);
|
||||||
--let's fill them up
|
--let's fill them up
|
||||||
local i = 1;
|
local i = 1;
|
||||||
for k, v in pairs(self.cds[self.targets[which]]) do
|
for k, v in ipairs(tmp) do
|
||||||
local frame = Vect.frames[which][i]["frame"];
|
local frame = Vect.frames[which][i]["frame"];
|
||||||
local text = Vect.frames[which][i]["texture"];
|
local text = Vect.frames[which][i]["texture"];
|
||||||
text:SetTexture(v[4]);
|
text:SetTexture(v["spellIcon"]);
|
||||||
local CoolDown = Vect.frames[which][i]["cooldown"];
|
local CoolDown = Vect.frames[which][i]["cooldown"];
|
||||||
CoolDown:SetCooldown(v[1], v[3]);
|
CoolDown:SetCooldown(v["currentTime"], v["cd"]);
|
||||||
frame:Show();
|
frame:Show();
|
||||||
i = i + 1;
|
i = i + 1;
|
||||||
end
|
end
|
||||||
@ -233,7 +233,41 @@ function Vect:CdRemoval(srcGUID, resetArray)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Vect:SortCDs(which)
|
function Vect:SortCDs(which)
|
||||||
--TODO
|
local db = Vect.db.profile;
|
||||||
|
local tmp = {};
|
||||||
|
|
||||||
|
|
||||||
|
--make the tmp table
|
||||||
|
local i = 1;
|
||||||
|
for k, v in pairs(self.cds[self.targets[which]]) do
|
||||||
|
tmp[i] = {
|
||||||
|
currentTime = v[1],
|
||||||
|
endTime = v[2],
|
||||||
|
cd = v[3],
|
||||||
|
spellIcon = v[4],
|
||||||
|
spellID = v[5]
|
||||||
|
};
|
||||||
|
|
||||||
|
--self:Print(v[1] .. v[2] .. v[3] .. v[4] .. v[5])
|
||||||
|
--self:Print(tmp[i]["currentTime"] .. " " .. tmp[i]["endTime"] .. " " .. tmp[i]["cd"] .. " " .. tmp[i][4] .. " " .. tmp[i][5])
|
||||||
|
i = i + 1;
|
||||||
|
end
|
||||||
|
|
||||||
|
if db[which]["sortOrder"] == "1" then --["1"] = "Ascending (CD left)",
|
||||||
|
table.sort(tmp, function(a, b) return Vect:ComparerAscendingCDLeft(a, b) end);
|
||||||
|
elseif db[which]["sortOrder"] == "2" then --["2"] = "Descending (CD left)",
|
||||||
|
table.sort(tmp, function(a, b) return Vect:ComparerDescendingCDLeft(a, b) end);
|
||||||
|
elseif db[which]["sortOrder"] == "3" then --["3"] = "Ascending (CD total)",
|
||||||
|
table.sort(tmp, function(a, b) return Vect:ComparerAscendingCDTotal(a, b) end);
|
||||||
|
elseif db[which]["sortOrder"] == "4" then --["4"] = "Descending (CD total)",
|
||||||
|
table.sort(tmp, function(a, b) return Vect:ComparerDescendingCDTotal(a, b) end);
|
||||||
|
elseif db[which]["sortOrder"] == "5" then --["5"] = "Recent first",
|
||||||
|
table.sort(tmp, function(a, b) return Vect:ComparerRecentFirst(a, b) end);
|
||||||
|
elseif db[which]["sortOrder"] == "6" then --["6"] = "Recent Last",
|
||||||
|
table.sort(tmp, function(a, b) return Vect:ComparerRecentLast(a, b) end);
|
||||||
|
end
|
||||||
|
--["7"] = "No order"
|
||||||
|
return tmp;
|
||||||
end
|
end
|
||||||
|
|
||||||
function Vect:CreateFrames(which)
|
function Vect:CreateFrames(which)
|
||||||
@ -304,11 +338,15 @@ end
|
|||||||
function Vect:VOnTimerUpdate(which)
|
function Vect:VOnTimerUpdate(which)
|
||||||
--check if we have cooldown for that unit
|
--check if we have cooldown for that unit
|
||||||
if not self.cds[self.targets[which]] then return end
|
if not self.cds[self.targets[which]] then return end
|
||||||
|
local t = GetTime();
|
||||||
--let's check if one of the cooldowns finished
|
--let's check if one of the cooldowns finished
|
||||||
for k, v in pairs(self.cds[self.targets[which]]) do
|
for k, v in pairs(self.cds[self.targets[which]]) do
|
||||||
if v[2] <= GetTime() then
|
if v[2] <= t then
|
||||||
self.cds[self.targets[which]][v[5]] = nil;
|
self.cds[self.targets[which]][v[5]] = nil;
|
||||||
self:ReassignCds(which);
|
--we have to update both, because if somebody is targeted and focused since sorting is
|
||||||
|
--implemented it triggers only one update, probably it had bugs before too, but got unnoticed
|
||||||
|
self:ReassignCds("target");
|
||||||
|
self:ReassignCds("focus");
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
1
Vect.toc
1
Vect.toc
@ -12,4 +12,5 @@ embeds.xml
|
|||||||
data\global.lua
|
data\global.lua
|
||||||
data\spells.lua
|
data\spells.lua
|
||||||
data\options.lua
|
data\options.lua
|
||||||
|
data\sorters.lua
|
||||||
Vect.lua
|
Vect.lua
|
||||||
|
@ -81,11 +81,13 @@ function Vect:getTargetandFocusOptions()
|
|||||||
type = "select", style = "dropdown", name = "targetSortOrder",
|
type = "select", style = "dropdown", name = "targetSortOrder",
|
||||||
desc = "Change the target's cooldowns's sort order", order = 14,
|
desc = "Change the target's cooldowns's sort order", order = 14,
|
||||||
values = {
|
values = {
|
||||||
["1"] = "Ascending",
|
["1"] = "Ascending (CD left)",
|
||||||
["2"] = "Descending",
|
["2"] = "Descending (CD left)",
|
||||||
["3"] = "Recent first",
|
["3"] = "Ascending (CD total)",
|
||||||
["4"] = "Recent Last",
|
["4"] = "Descending (CD total)",
|
||||||
["5"] = "Random"
|
["5"] = "Recent first",
|
||||||
|
["6"] = "Recent Last",
|
||||||
|
["7"] = "No order"
|
||||||
},
|
},
|
||||||
get = function() return Vect:getSortOrder("target") end,
|
get = function() return Vect:getSortOrder("target") end,
|
||||||
set = function(_, v)
|
set = function(_, v)
|
||||||
@ -127,11 +129,13 @@ function Vect:getTargetandFocusOptions()
|
|||||||
type = "select", style = "dropdown", name = "focusSortOrder",
|
type = "select", style = "dropdown", name = "focusSortOrder",
|
||||||
desc = "Change the focus's cooldowns's sort order", order = 19,
|
desc = "Change the focus's cooldowns's sort order", order = 19,
|
||||||
values = {
|
values = {
|
||||||
["1"] = "Ascending",
|
["1"] = "Ascending (CD left)",
|
||||||
["2"] = "Descending",
|
["2"] = "Descending (CD left)",
|
||||||
["3"] = "Recent first",
|
["3"] = "Ascending (CD total)",
|
||||||
["4"] = "Recent Last",
|
["4"] = "Descending (CD total)",
|
||||||
["5"] = "Random"
|
["5"] = "Recent first",
|
||||||
|
["6"] = "Recent Last",
|
||||||
|
["7"] = "No order"
|
||||||
},
|
},
|
||||||
get = function() return Vect:getSortOrder("focus") end,
|
get = function() return Vect:getSortOrder("focus") end,
|
||||||
set = function(_, v)
|
set = function(_, v)
|
||||||
|
62
data/sorters.lua
Normal file
62
data/sorters.lua
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
|
||||||
|
-- table.sort(tmp, function(a, b) if db.growUp then return self:C_RemainingComparer(a, b) else return self:C_ReversalRemainingComparer(a, b) end end)
|
||||||
|
|
||||||
|
--function Aesa:C_RemainingComparer(a, b)
|
||||||
|
-- return b.remaining < a.remaining
|
||||||
|
--end
|
||||||
|
|
||||||
|
--["1"] = "Ascending (CD left)",
|
||||||
|
function Vect:ComparerAscendingCDLeft(a, b)
|
||||||
|
local time = GetTime();
|
||||||
|
if a.endTime < b.endTime then
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--["2"] = "Descending (CD left)",
|
||||||
|
function Vect:ComparerDescendingCDLeft(a, b)
|
||||||
|
local time = GetTime();
|
||||||
|
if a.endTime < b.endTime then
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--["3"] = "Ascending (CD total)",
|
||||||
|
function Vect:ComparerAscendingCDTotal(a, b)
|
||||||
|
if a.cd < b.cd then
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--["4"] = "Descending (CD total)",
|
||||||
|
function Vect:ComparerDescendingCDTotal(a, b)
|
||||||
|
if a.cd < b.cd then
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--["5"] = "Recent first",
|
||||||
|
function Vect:ComparerRecentFirst(a, b)
|
||||||
|
if a.currentTime < b.currentTime then
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--["6"] = "Recent Last",
|
||||||
|
function Vect:ComparerRecentLast(a, b)
|
||||||
|
if a.currentTime < b.currentTime then
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
end
|
||||||
|
end
|
@ -272,6 +272,7 @@ Vect.spells = {
|
|||||||
--Total: 18
|
--Total: 18
|
||||||
--Freeze triggers combatlog event
|
--Freeze triggers combatlog event
|
||||||
--Arcane
|
--Arcane
|
||||||
|
[12042] = {85, nil}, --Arcane Power
|
||||||
[1953] = {15, nil}, --Blink
|
[1953] = {15, nil}, --Blink
|
||||||
[2139] = {24, nil}, --Counterspell
|
[2139] = {24, nil}, --Counterspell
|
||||||
[12051] = {120, nil}, --Evocation
|
[12051] = {120, nil}, --Evocation
|
||||||
|
Loading…
Reference in New Issue
Block a user