107 lines
2.7 KiB
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 |