Mercurial > wow > askmrrobot
comparison ui/CombatLogTab.lua @ 17:e77e01abce98
Warlords of Draenor pre-patch
author | Adam tegen <adam.tegen@gmail.com> |
---|---|
date | Mon, 13 Oct 2014 21:28:32 -0500 |
parents | 218628cb4a29 |
children | 0e78d6424532 |
comparison
equal
deleted
inserted
replaced
16:9793e8b683d2 | 17:e77e01abce98 |
---|---|
1 local _, AskMrRobot = ... | 1 local _, AskMrRobot = ... |
2 local L = AskMrRobot.L; | 2 local L = AskMrRobot.L; |
3 | 3 |
4 -- initialize the ExportTab class | 4 -- initialize the CombatLogTab class |
5 AskMrRobot.CombatLogTab = AskMrRobot.inheritsFrom(AskMrRobot.Frame) | 5 AskMrRobot.CombatLogTab = AskMrRobot.inheritsFrom(AskMrRobot.Frame) |
6 | 6 |
7 -- these are valid keys in AmrLogData, all others will be deleted | 7 -- these are valid keys in AmrDb.LogData, all others will be deleted |
8 local _logDataKeys = { | 8 local _logDataKeys = { |
9 ["_logging"] = true, | 9 ["_logging"] = true, |
10 ["_autoLog"] = true, | 10 ["_autoLog"] = true, |
11 ["_lastZone"] = true, | 11 ["_lastZone"] = true, |
12 ["_lastDiff"] = true, | 12 ["_lastDiff"] = true, |
86 L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_LABEL, | 86 L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_LABEL, |
87 L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_TOOLTIP_TITLE, | 87 L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_TOOLTIP_TITLE, |
88 L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_DESCRIPTION, | 88 L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_DESCRIPTION, |
89 function(self, value) | 89 function(self, value) |
90 if value then | 90 if value then |
91 AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] = "enabled" | 91 AmrDb.LogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] = "enabled" |
92 else | 92 else |
93 AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] = "disabled" | 93 AmrDb.LogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] = "disabled" |
94 end | 94 end |
95 | 95 |
96 AmrLogData._lastZone = nil | 96 AmrDb.LogData._lastZone = nil |
97 AmrLogData._lastDiff = nil | 97 AmrDb.LogData._lastDiff = nil |
98 tab:UpdateAutoLogging() | 98 tab:UpdateAutoLogging() |
99 end | 99 end |
100 ) | 100 ) |
101 autoChk:SetChecked(AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] == "enabled") | 101 autoChk:SetChecked(AmrDb.LogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] == "enabled") |
102 autoChk:SetPoint("TOPLEFT", btn, "BOTTOMLEFT", 0, -10) | 102 autoChk:SetPoint("TOPLEFT", btn, "BOTTOMLEFT", 0, -10) |
103 autoChk:SetHeight(30) | 103 autoChk:SetHeight(30) |
104 | 104 |
105 | 105 |
106 local text = CreateText(content, "GameFontNormalLarge", autoChk, 0, -20, L.AMR_COMBATLOGTAB_INFIGHT) | 106 local text = CreateText(content, "GameFontNormalLarge", autoChk, 0, -20, L.AMR_COMBATLOGTAB_INFIGHT) |
169 btn:SetScript("OnClick", function() | 169 btn:SetScript("OnClick", function() |
170 | 170 |
171 local t = time() | 171 local t = time() |
172 AskMrRobot.SaveAll() | 172 AskMrRobot.SaveAll() |
173 AskMrRobot.ExportToAddonChat(t) | 173 AskMrRobot.ExportToAddonChat(t) |
174 AskMrRobot.ExportLoggingData(t) | 174 AskMrRobot.CombatLogTab.SaveExtras(t) |
175 end) | 175 end) |
176 ]] | 176 ]] |
177 | 177 |
178 -- when we start up, ensure that logging is still enabled if it was enabled when they last used the addon | 178 -- when we start up, ensure that logging is still enabled if it was enabled when they last used the addon |
179 if (tab:IsLogging()) then | 179 if (AskMrRobot.CombatLogTab.IsLogging()) then |
180 SetCVar("advancedCombatLogging", 1) | 180 SetCVar("advancedCombatLogging", 1) |
181 LoggingCombat(true) | 181 LoggingCombat(true) |
182 end | 182 end |
183 | 183 |
184 -- if auto-logging is enabled, do a check when the addon is loaded to make sure that state is set correctly | 184 -- if auto-logging is enabled, do a check when the addon is loaded to make sure that state is set correctly |
185 if AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] == "enabled" then | 185 if AmrDb.LogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] == "enabled" then |
186 tab:UpdateAutoLogging() | 186 tab:UpdateAutoLogging() |
187 end | 187 end |
188 | 188 |
189 tab:SetScript("OnShow", function() | 189 tab:SetScript("OnShow", function() |
190 tab:Update() | 190 tab:Update() |
191 end) | 191 end) |
192 | 192 |
193 return tab | 193 return tab |
194 end | 194 end |
195 | 195 |
196 function AskMrRobot.CombatLogTab:IsLogging() | 196 function AskMrRobot.CombatLogTab.IsLogging() |
197 return AmrLogData._logging == true | 197 return AmrDb.LogData._logging == true |
198 end | 198 end |
199 | 199 |
200 function AskMrRobot.CombatLogTab:StartLogging() | 200 function AskMrRobot.CombatLogTab:StartLogging() |
201 | 201 |
202 local now = time() | 202 local now = time() |
203 local oldDuration = 60 * 60 * 24 * 10 | 203 local oldDuration = 60 * 60 * 24 * 10 |
204 | 204 |
205 -- archive the current logging session so that users don't accidentally blow away data before uploading it | 205 -- archive the current logging session so that users don't accidentally blow away data before uploading it |
206 if AmrLogData._current2 ~= nil then | 206 if AmrDb.LogData._current2 ~= nil then |
207 if not AmrLogData._history2 then AmrLogData._history2 = {} end | 207 if not AmrDb.LogData._history2 then AmrDb.LogData._history2 = {} end |
208 | 208 |
209 -- add new entries | 209 -- add new entries |
210 for name, timeList in AskMrRobot.spairs(AmrLogData._current2) do | 210 for name, timeList in AskMrRobot.spairs(AmrDb.LogData._current2) do |
211 if not AmrLogData._history2[name] then AmrLogData._history2[name] = {} end | 211 if not AmrDb.LogData._history2[name] then AmrDb.LogData._history2[name] = {} end |
212 for timestamp, dataString in AskMrRobot.spairs(timeList) do | 212 for timestamp, dataString in AskMrRobot.spairs(timeList) do |
213 AmrLogData._history2[name][timestamp] = dataString | 213 AmrDb.LogData._history2[name][timestamp] = dataString |
214 end | 214 end |
215 end | 215 end |
216 | 216 |
217 -- delete entries that are more than 10 days old | 217 -- delete entries that are more than 10 days old |
218 for name, timeList in AskMrRobot.spairs(AmrLogData._history2) do | 218 for name, timeList in AskMrRobot.spairs(AmrDb.LogData._history2) do |
219 for timestamp, dataString in AskMrRobot.spairs(timeList) do | 219 for timestamp, dataString in AskMrRobot.spairs(timeList) do |
220 if difftime(now, tonumber(timestamp)) > oldDuration then | 220 if difftime(now, tonumber(timestamp)) > oldDuration then |
221 timeList[timestamp] = nil | 221 timeList[timestamp] = nil |
222 end | 222 end |
223 end | 223 end |
225 local count = 0 | 225 local count = 0 |
226 for timestamp, dataString in pairs(timeList) do | 226 for timestamp, dataString in pairs(timeList) do |
227 count = count + 1 | 227 count = count + 1 |
228 end | 228 end |
229 if count == 0 then | 229 if count == 0 then |
230 AmrLogData._history2[name] = nil | 230 AmrDb.LogData._history2[name] = nil |
231 end | 231 end |
232 end | 232 end |
233 end | 233 end |
234 | 234 |
235 -- same idea with extra info (auras, pets, whatever we end up adding to it) | 235 -- same idea with extra info (auras, pets, whatever we end up adding to it) |
236 if AmrLogData._currentExtra ~= nil then | 236 if AmrDb.LogData._currentExtra ~= nil then |
237 if not AmrLogData._historyExtra then AmrLogData._historyExtra = {} end | 237 if not AmrDb.LogData._historyExtra then AmrDb.LogData._historyExtra = {} end |
238 | 238 |
239 -- add new entries | 239 -- add new entries |
240 for name, timeList in AskMrRobot.spairs(AmrLogData._currentExtra) do | 240 for name, timeList in AskMrRobot.spairs(AmrDb.LogData._currentExtra) do |
241 if not AmrLogData._historyExtra[name] then AmrLogData._historyExtra[name] = {} end | 241 if not AmrDb.LogData._historyExtra[name] then AmrDb.LogData._historyExtra[name] = {} end |
242 for timestamp, dataString in AskMrRobot.spairs(timeList) do | 242 for timestamp, dataString in AskMrRobot.spairs(timeList) do |
243 AmrLogData._historyExtra[name][timestamp] = dataString | 243 AmrDb.LogData._historyExtra[name][timestamp] = dataString |
244 end | 244 end |
245 end | 245 end |
246 | 246 |
247 -- delete entries that are more than 10 days old | 247 -- delete entries that are more than 10 days old |
248 for name, timeList in AskMrRobot.spairs(AmrLogData._historyExtra) do | 248 for name, timeList in AskMrRobot.spairs(AmrDb.LogData._historyExtra) do |
249 for timestamp, dataString in AskMrRobot.spairs(timeList) do | 249 for timestamp, dataString in AskMrRobot.spairs(timeList) do |
250 if difftime(now, tonumber(timestamp)) > oldDuration then | 250 if difftime(now, tonumber(timestamp)) > oldDuration then |
251 timeList[timestamp] = nil | 251 timeList[timestamp] = nil |
252 end | 252 end |
253 end | 253 end |
255 local count = 0 | 255 local count = 0 |
256 for timestamp, dataString in pairs(timeList) do | 256 for timestamp, dataString in pairs(timeList) do |
257 count = count + 1 | 257 count = count + 1 |
258 end | 258 end |
259 if count == 0 then | 259 if count == 0 then |
260 AmrLogData._historyExtra[name] = nil | 260 AmrDb.LogData._historyExtra[name] = nil |
261 end | 261 end |
262 end | 262 end |
263 end | 263 end |
264 | 264 |
265 | 265 |
266 -- delete _wipes entries that are more than 10 days old | 266 -- delete _wipes entries that are more than 10 days old |
267 if AmrLogData._wipes then | 267 if AmrDb.LogData._wipes then |
268 local i = 1 | 268 local i = 1 |
269 while i <= #AmrLogData._wipes do | 269 while i <= #AmrDb.LogData._wipes do |
270 local t = AmrLogData._wipes[i] | 270 local t = AmrDb.LogData._wipes[i] |
271 if difftime(now, t) > oldDuration then | 271 if difftime(now, t) > oldDuration then |
272 tremove(AmrLogData._wipes, i) | 272 tremove(AmrDb.LogData._wipes, i) |
273 else | 273 else |
274 i = i + 1 | 274 i = i + 1 |
275 end | 275 end |
276 end | 276 end |
277 end | 277 end |
278 | 278 |
279 -- delete the _lastWipe if it is more than 10 days old | 279 -- delete the _lastWipe if it is more than 10 days old |
280 if AmrLogData._lastWipe and difftime(now, AmrLogData._lastWipe) > oldDuration then | 280 if AmrDb.LogData._lastWipe and difftime(now, AmrDb.LogData._lastWipe) > oldDuration then |
281 AmrLogData_lastWipe = nil | 281 AmrDb.LogData_lastWipe = nil |
282 end | 282 end |
283 | 283 |
284 -- clean up old-style logging data from previous versions of the addon | 284 -- clean up old-style logging data from previous versions of the addon |
285 for k, v in AskMrRobot.spairs(AmrLogData) do | 285 for k, v in AskMrRobot.spairs(AmrDb.LogData) do |
286 if not _logDataKeys[k] then | 286 if not _logDataKeys[k] then |
287 AmrLogData[k] = nil | 287 AmrDb.LogData[k] = nil |
288 end | 288 end |
289 end | 289 end |
290 | 290 |
291 -- start a new logging session | 291 -- start a new logging session |
292 AmrLogData._current2 = {} | 292 AmrDb.LogData._current2 = {} |
293 AmrLogData._currentExtra = {} | 293 AmrDb.LogData._currentExtra = {} |
294 AmrLogData._logging = true | 294 AmrDb.LogData._logging = true |
295 | 295 |
296 -- always enable advanced combat logging via our addon, gathers more detailed data for better analysis | 296 -- always enable advanced combat logging via our addon, gathers more detailed data for better analysis |
297 SetCVar("advancedCombatLogging", 1) | 297 SetCVar("advancedCombatLogging", 1) |
298 | 298 |
299 LoggingCombat(true) | 299 LoggingCombat(true) |
304 print(L.AMR_COMBATLOGTAB_IS_LOGGING) | 304 print(L.AMR_COMBATLOGTAB_IS_LOGGING) |
305 end | 305 end |
306 | 306 |
307 function AskMrRobot.CombatLogTab:StopLogging() | 307 function AskMrRobot.CombatLogTab:StopLogging() |
308 LoggingCombat(false) | 308 LoggingCombat(false) |
309 AmrLogData._logging = false | 309 AmrDb.LogData._logging = false |
310 self:Update() | 310 self:Update() |
311 | 311 |
312 AskMrRobot.AmrUpdateMinimap() | 312 AskMrRobot.AmrUpdateMinimap() |
313 | 313 |
314 print(L.AMR_COMBATLOGTAB_STOPPED_LOGGING) | 314 print(L.AMR_COMBATLOGTAB_STOPPED_LOGGING) |
315 end | 315 end |
316 | 316 |
317 function AskMrRobot.CombatLogTab:ToggleLogging() | 317 function AskMrRobot.CombatLogTab:ToggleLogging() |
318 if self:IsLogging() then | 318 if AskMrRobot.CombatLogTab.IsLogging() then |
319 self:StopLogging() | 319 self:StopLogging() |
320 else | 320 else |
321 self:StartLogging() | 321 self:StartLogging() |
322 end | 322 end |
323 end | 323 end |
324 | 324 |
325 -- update the panel and state | 325 -- update the panel and state |
326 function AskMrRobot.CombatLogTab:Update() | 326 function AskMrRobot.CombatLogTab:Update() |
327 local isLogging = self:IsLogging() | 327 local isLogging = AskMrRobot.CombatLogTab.IsLogging() |
328 | 328 |
329 if isLogging then | 329 if isLogging then |
330 self.btnStart:SetText(L.AMR_COMBATLOGTAB_STOP_LOGGING) | 330 self.btnStart:SetText(L.AMR_COMBATLOGTAB_STOP_LOGGING) |
331 self.loggingStatus:SetText(L.AMR_COMBATLOGTAB_CURRENTLY_LOGGING) | 331 self.loggingStatus:SetText(L.AMR_COMBATLOGTAB_CURRENTLY_LOGGING) |
332 else | 332 else |
333 self.btnStart:SetText(L.AMR_COMBATLOGTAB_START_LOGGING) | 333 self.btnStart:SetText(L.AMR_COMBATLOGTAB_START_LOGGING) |
334 self.loggingStatus:SetText("") | 334 self.loggingStatus:SetText("") |
335 end | 335 end |
336 | 336 |
337 if AmrLogData._lastWipe then | 337 if AmrDb.LogData._lastWipe then |
338 self.lastWipeLabel:SetText(L.AMR_COMBATLOGTAB_LASTWIPE:format(date('%B %d', AmrLogData._lastWipe), date('%I:%M %p', AmrLogData._lastWipe))) | 338 self.lastWipeLabel:SetText(L.AMR_COMBATLOGTAB_LASTWIPE:format(date('%B %d', AmrDb.LogData._lastWipe), date('%I:%M %p', AmrDb.LogData._lastWipe))) |
339 self.btnUnwipe:Show() | 339 self.btnUnwipe:Show() |
340 else | 340 else |
341 self.lastWipeLabel:SetText("") | 341 self.lastWipeLabel:SetText("") |
342 self.btnUnwipe:Hide() | 342 self.btnUnwipe:Hide() |
343 end | 343 end |
354 -- Unless Blizzard fixes scenarios to not return nil, let's hardcode this into returning "scenario" -Znuff | 354 -- Unless Blizzard fixes scenarios to not return nil, let's hardcode this into returning "scenario" -Znuff |
355 --if zonetype == nil and difficultyIndex == 1 then | 355 --if zonetype == nil and difficultyIndex == 1 then |
356 --zonetype = "scenario" | 356 --zonetype = "scenario" |
357 --end | 357 --end |
358 | 358 |
359 if zone == AmrLogData._lastZone and difficultyIndex == AmrLogData._lastDiff then | 359 if zone == AmrDb.LogData._lastZone and difficultyIndex == AmrDb.LogData._lastDiff then |
360 -- do nothing if the zone hasn't actually changed, otherwise we may override the user's manual enable/disable | 360 -- do nothing if the zone hasn't actually changed, otherwise we may override the user's manual enable/disable |
361 return | 361 return |
362 end | 362 end |
363 | 363 |
364 AmrLogData._lastZone = zone | 364 AmrDb.LogData._lastZone = zone |
365 AmrLogData._lastDiff = difficultyIndex | 365 AmrDb.LogData._lastDiff = difficultyIndex |
366 | 366 |
367 if AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] == "enabled" then | 367 if AmrDb.LogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] == "enabled" then |
368 if tonumber(instanceMapID) == AskMrRobot.instanceIds.SiegeOfOrgrimmar then | 368 if tonumber(instanceMapID) == AskMrRobot.instanceIds.SiegeOfOrgrimmar then |
369 -- if in SoO, make sure logging is on | 369 -- if in SoO, make sure logging is on |
370 if not self:IsLogging() then | 370 if not AskMrRobot.CombatLogTab.IsLogging() then |
371 self:StartLogging() | 371 self:StartLogging() |
372 end | 372 end |
373 else | 373 else |
374 -- not in SoO, turn logging off | 374 -- not in SoO, turn logging off |
375 if self:IsLogging() then | 375 if AskMrRobot.CombatLogTab.IsLogging() then |
376 self:StopLogging() | 376 self:StopLogging() |
377 end | 377 end |
378 end | 378 end |
379 end | 379 end |
380 | 380 |
386 else | 386 else |
387 return "RAID" | 387 return "RAID" |
388 end | 388 end |
389 end | 389 end |
390 | 390 |
391 -- used to store wipes to AmrLogData so that we trim data after the wipe | 391 -- used to store wipes to AmrDb.LogData so that we trim data after the wipe |
392 function AskMrRobot.CombatLogTab:LogWipe() | 392 function AskMrRobot.CombatLogTab:LogWipe() |
393 local t = time() | 393 local t = time() |
394 tinsert(AmrLogData._wipes, t) | 394 tinsert(AmrDb.LogData._wipes, t) |
395 AmrLogData._lastWipe = t | 395 AmrDb.LogData._lastWipe = t |
396 | 396 |
397 if GetNumGroupMembers() > 0 then | 397 --if GetNumGroupMembers() > 0 then |
398 SendChatMessage(L.AMR_COMBATLOGTAB_WIPE_CHAT, RaidChatType()) | 398 -- SendChatMessage(L.AMR_COMBATLOGTAB_WIPE_CHAT, RaidChatType()) |
399 end | 399 --end |
400 print(string.format(L.AMR_COMBATLOGTAB_WIPE_MSG, date('%I:%M %p', t))) | 400 print(string.format(L.AMR_COMBATLOGTAB_WIPE_MSG, date('%I:%M %p', t))) |
401 | 401 |
402 self:Update() | 402 self:Update() |
403 --AskMrRobot.wait(301, AskMrRobot.CombatLogTab.Update, self) | |
404 end | 403 end |
405 | 404 |
406 -- used to undo the wipe command | 405 -- used to undo the wipe command |
407 function AskMrRobot.CombatLogTab:LogUnwipe() | 406 function AskMrRobot.CombatLogTab:LogUnwipe() |
408 local t = AmrLogData._lastWipe | 407 local t = AmrDb.LogData._lastWipe |
409 if not t then | 408 if not t then |
410 print(L.AMR_COMBATLOGTAB_NOWIPES) | 409 print(L.AMR_COMBATLOGTAB_NOWIPES) |
411 else | 410 else |
412 tremove(AmrLogData._wipes) | 411 tremove(AmrDb.LogData._wipes) |
413 AmrLogData._lastWipe = nil | 412 AmrDb.LogData._lastWipe = nil |
414 print(string.format(L.AMR_COMBATLOGTAB_UNWIPE_MSG, date('%I:%M %p', t))) | 413 print(string.format(L.AMR_COMBATLOGTAB_UNWIPE_MSG, date('%I:%M %p', t))) |
415 end | 414 end |
416 self:Update() | 415 self:Update() |
417 end | 416 end |
418 | 417 |
419 -- initialize the AmrLogData variable | 418 -- initialize the AmrDb.LogData variable |
420 function AskMrRobot.CombatLogTab.InitializeVariable() | 419 function AskMrRobot.CombatLogTab.InitializeVariable() |
421 if not AmrLogData then AmrLogData = {} end | 420 if not AmrDb.LogData then AmrDb.LogData = {} end |
422 if not AmrLogData._autoLog then AmrLogData._autoLog = {} end | 421 if not AmrDb.LogData._autoLog then AmrDb.LogData._autoLog = {} end |
423 if not AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] then | 422 if not AmrDb.LogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] then |
424 AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] = "disabled" | 423 AmrDb.LogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] = "disabled" |
425 end | 424 end |
426 AmrLogData._wipes = AmrLogData._wipes or {} | 425 AmrDb.LogData._wipes = AmrDb.LogData._wipes or {} |
427 end | 426 end |
428 | 427 |
429 function AskMrRobot.CombatLogTab.SaveExtras(data, timestamp) | 428 local function GetPlayerExtraData(data, index) |
430 | 429 |
430 local unitId = "raid" .. index | |
431 | |
432 local guid = UnitGUID(unitId) | |
433 if guid == nil then | |
434 return nil | |
435 end | |
436 | |
437 local fields = {} | |
438 | |
439 local buffs = {} | |
440 for i=1,40 do | |
441 local _,_,_,count,_,_,_,_,_,_,spellId = UnitAura(unitId, i, "HELPFUL") | |
442 table.insert(buffs, spellId) | |
443 end | |
444 if #buffs == 0 then | |
445 table.insert(fields, "_") | |
446 else | |
447 table.insert(fields, AskMrRobot.toCompressedNumberList(buffs)) | |
448 end | |
449 | |
450 local petGuid = UnitGUID("raidpet" .. index) | |
451 if petGuid then | |
452 table.insert(fields, guid .. "," .. petGuid) | |
453 else | |
454 table.insert(fields, '_') | |
455 end | |
456 | |
457 local name = GetRaidRosterInfo(index) | |
458 local realm = GetRealmName() | |
459 local splitPos = string.find(name, "-") | |
460 if splitPos ~= nil then | |
461 realm = string.sub(name, splitPos + 1) | |
462 name = string.sub(name, 1, splitPos - 1) | |
463 end | |
464 | |
465 data[realm .. ":" .. name] = table.concat(fields, ";") | |
466 end | |
467 | |
468 function AskMrRobot.CombatLogTab.SaveExtras(timestamp) | |
469 | |
470 if not AskMrRobot.CombatLogTab.IsLogging() then | |
471 return | |
472 end | |
473 | |
474 -- we only get extra information for people if in a raid | |
475 if not IsInRaid() then | |
476 return | |
477 end | |
478 | |
479 local data = {} | |
480 for i = 1,40 do | |
481 GetPlayerExtraData(data, i) | |
482 end | |
483 | |
431 for name,val in pairs(data) do | 484 for name,val in pairs(data) do |
432 -- record aura stuff, we never check for duplicates, need to know it at each point in time | 485 -- record aura stuff, we never check for duplicates, need to know it at each point in time |
433 if AmrLogData._currentExtra[name] == nil then | 486 if AmrDb.LogData._currentExtra[name] == nil then |
434 AmrLogData._currentExtra[name] = {} | 487 AmrDb.LogData._currentExtra[name] = {} |
435 end | 488 end |
436 AmrLogData._currentExtra[name][timestamp] = val | 489 AmrDb.LogData._currentExtra[name][timestamp] = val |
437 end | 490 end |
438 end | 491 end |
439 | 492 |
440 -- read a message sent to the addon channel with a player's info at the time an encounter started | 493 -- read a message sent to the addon channel with a player's info at the time an encounter started |
441 function AskMrRobot.CombatLogTab:ReadAddonMessage(message) | 494 function AskMrRobot.CombatLogTab:ReadAddonMessage(message) |
450 local name = parts[2] .. ":" .. parts[3] | 503 local name = parts[2] .. ":" .. parts[3] |
451 local data = parts[4] | 504 local data = parts[4] |
452 | 505 |
453 if (data == "done") then | 506 if (data == "done") then |
454 -- we have finished receiving this message; now process it to reduce the amount of duplicate data | 507 -- we have finished receiving this message; now process it to reduce the amount of duplicate data |
455 local setup = AmrLogData._current2[name][timestamp] | 508 local setup = AmrDb.LogData._current2[name][timestamp] |
456 | 509 |
457 if (AmrLogData._previousSetup == nil) then | 510 if (AmrDb.LogData._previousSetup == nil) then |
458 AmrLogData._previousSetup = {} | 511 AmrDb.LogData._previousSetup = {} |
459 end | 512 end |
460 | 513 |
461 local previousSetup = AmrLogData._previousSetup[name] | 514 local previousSetup = AmrDb.LogData._previousSetup[name] |
462 | 515 |
463 if (previousSetup == setup) then | 516 if (previousSetup == setup) then |
464 -- if the last-seen setup for this player is the same as the current one, we don't need this entry | 517 -- if the last-seen setup for this player is the same as the current one, we don't need this entry |
465 AmrLogData._current2[name][timestamp] = nil | 518 AmrDb.LogData._current2[name][timestamp] = nil |
466 else | 519 else |
467 -- record the last-seen setup | 520 -- record the last-seen setup |
468 AmrLogData._previousSetup[name] = setup | 521 AmrDb.LogData._previousSetup[name] = setup |
469 end | 522 end |
470 | 523 |
471 else | 524 else |
472 -- concatenate messages with the same timestamp+name | 525 -- concatenate messages with the same timestamp+name |
473 if (AmrLogData._current2[name] == nil) then | 526 if (AmrDb.LogData._current2[name] == nil) then |
474 AmrLogData._current2[name] = {} | 527 AmrDb.LogData._current2[name] = {} |
475 end | 528 end |
476 | 529 |
477 if (AmrLogData._current2[name][timestamp] == nil) then | 530 if (AmrDb.LogData._current2[name][timestamp] == nil) then |
478 AmrLogData._current2[name][timestamp] = data | 531 AmrDb.LogData._current2[name][timestamp] = data |
479 else | 532 else |
480 AmrLogData._current2[name][timestamp] = AmrLogData._current2[name][timestamp] .. data | 533 AmrDb.LogData._current2[name][timestamp] = AmrDb.LogData._current2[name][timestamp] .. data |
481 end | 534 end |
482 end | 535 end |
483 end | 536 end |