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