Quicklog/Segments.lua

107 lines
2.7 KiB
Lua

local name, addon = ...
function addon:GetSegment(sid)
if(not sid or not QuicklogDB['segments'][sid]) then
sid = #QuicklogDB['segments']
end
return QuicklogDB['segments'][sid]
end
local segfunc = {}
function segfunc:add(data)
self['events'][#self['events']+1] = data
end
function segfunc:refresh(purge)
QuicklogDB['segments'][#QuicklogDB['segments']] = self
if(purge) then
for i = 1, #QuicklogDB['segments'] do
for k, v in pairs(QuicklogDB['segments'][i]) do
if(type(v) == 'function') then
-- QuicklogDB['segments'][i][k] = nil
end
end
for a, b in pairs(QuicklogDB['segments'][i]['source']) do
QuicklogDB['segments'][i]['source'][a]['store'] = nil
for c, d in pairs(b) do
if(type(d) == 'function' or c == 'data') then
QuicklogDB['segments'][i]['source'][a][c] = nil
end
end
for e, f in pairs(b['dest']) do
QuicklogDB['segments'][i]['source'][a]['dest'][e]['source'] = nil
for g, h in pairs(f) do
if(type(h) == 'function') then
-- QuicklogDB['segments'][i]['source'][a]['dest'][e][g] = nil
end
end
end
end
end
-- for k, v in pairs(segfunc) do
-- QuicklogDB['segments'][#QuicklogDB['segments']][k] = nil
-- end
end
end
function segfunc:stop()
print('stop seg')
self['end'] = time()
self:refresh(true)
end
function segfunc:GetBoss()
for k, v in pairs(self['BossNames']) do
return {k, self['BossNames'][k]}
end
end
function segfunc:GetSegmentGuid(guids)
guids = guids or {}
for c, d in pairs(self['source']) do
local gis = addon:GetGuidInfo2(d[1])
if(gis and gis:IsParty()) then
for k, v in pairs(d['dest']) do
guids[k] = true
end
guids[c] = true
else
-- print("seg fault",d['guid'],d[1])
end
end
return guids
end
function addon:GetSegmentsGuid(guids)
guids = guids or {}
for i = 1, #QuicklogDB['segments'] do
local seg = QuicklogDB['segments'][i]
for k, v in pairs(segfunc) do
seg[k] = v
end
guids = seg:GetSegmentGuid(guids)
end
return guids
end
local function Renumerate()
for i = 1, #QuicklogDB['segments'] do
QuicklogDB['segments'][i]['num'] = i
end
end
function addon:NewSegment(init, data)
QuicklogDB['segments'][#QuicklogDB['segments'] + 1] = {
['begin'] = time(),
['source'] = {},
['BossNames'] = {}
}
-- QuicklogDB['segments'][#QuicklogDB['segments']]['res'] = CopyTable(defaultEvent)
while(#QuicklogDB['segments'] > QuicklogDB:Get('maxSegments')) do
-- print('rm segment')
tremove(QuicklogDB['segments'], 1)
end
for k, v in pairs(segfunc) do
QuicklogDB['segments'][#QuicklogDB['segments']][k] = v
end
Renumerate()
if(type(init) == 'function') then
return init(self:GetSegment(#QuicklogDB['segments']), data)
end
return self:GetSegment(#QuicklogDB['segments'])
end