comparison CombatLog.lua @ 69:69db1c3025ac v27

fixed some bugs with 6.2 item link format changes, added bib overwolf support
author yellowfive
date Mon, 06 Jul 2015 17:39:57 -0700
parents e638168c3395
children 6bbe64d587b4
comparison
equal deleted inserted replaced
68:6c523f147709 69:69db1c3025ac
214 _panelUndoWipe = nil 214 _panelUndoWipe = nil
215 _chkAutoAll = nil 215 _chkAutoAll = nil
216 _autoChecks = nil 216 _autoChecks = nil
217 end 217 end
218 218
219 -- update the game's logging state
220 local function updateGameLogging(enabled)
221 if enabled then
222 -- always enable advanced combat logging via our addon, gathers more detailed data for better analysis
223 SetCVar("advancedCombatLogging", 1)
224 LoggingCombat(true)
225 else
226 LoggingCombat(false)
227 end
228 end
229
230 local function isAnyAutoLoggingEnabled()
231 local anyChecked = false
232 for i, instanceId in ipairs(Amr.InstanceIdsOrdered) do
233 for k, difficultyId in pairs(Amr.Difficulties) do
234 if Amr.db.profile.Logging.Auto[instanceId][difficultyId] then
235 anyChecked = true
236 break
237 end
238 end
239 if anyChecked then break end
240 end
241
242 return anyChecked
243 end
244
219 local function isAllAutoLoggingEnabled() 245 local function isAllAutoLoggingEnabled()
220 -- see if all auto-logging options are enabled 246 -- see if all auto-logging options are enabled
221 local allChecked = true 247 local allChecked = true
222 for i, instanceId in ipairs(Amr.InstanceIdsOrdered) do 248 for i, instanceId in ipairs(Amr.InstanceIdsOrdered) do
223 for k, difficultyId in pairs(Amr.Difficulties) do 249 for k, difficultyId in pairs(Amr.Difficulties) do
231 257
232 return allChecked 258 return allChecked
233 end 259 end
234 260
235 -- check current zone and auto-logging settings, and enable logging if appropriate 261 -- check current zone and auto-logging settings, and enable logging if appropriate
236 local function updateAutoLogging(force) 262 local function updateAutoLogging(force, noWait)
263
264 local hasAuto = isAnyAutoLoggingEnabled()
265
266 -- before doing anything, make sure logging matches the user's current setting, deals with any inconsistency due to a crash or disconnect
267 if hasAuto then
268 updateGameLogging(Amr:IsLogging())
269 end
237 270
238 -- get the info about the instance 271 -- get the info about the instance
239 local zone, _, difficultyId, _, _, _, _, instanceId = GetInstanceInfo() 272 local zone, _, difficultyId, _, _, _, _, instanceId = GetInstanceInfo()
240 273
274 if Amr.IsSupportedInstanceId(instanceId) and difficultyId == 0 and not noWait then
275 -- the game is sometimes returning no difficulty id for raid zones... not sure why, wait 10 seconds and check again
276 Amr.Wait(10, function()
277 updateAutoLogging(false, false)
278 end)
279 return
280 end
281
241 if not force and zone == Amr.db.char.Logging.LastZone and difficultyId == Amr.db.char.Logging.LastDiff then 282 if not force and zone == Amr.db.char.Logging.LastZone and difficultyId == Amr.db.char.Logging.LastDiff then
242 -- do nothing if the zone hasn't actually changed, otherwise we may override the user's manual enable/disable 283 -- do nothing if the zone hasn't actually changed, otherwise we may override the user's manual enable/disable
243 return 284 return
244 end 285 end
245 286
246 Amr.db.char.Logging.LastZone = zone 287 Amr.db.char.Logging.LastZone = zone
247 Amr.db.char.Logging.LastDiff = difficultyId 288 Amr.db.char.Logging.LastDiff = difficultyId
248 289
249 if Amr.IsSupportedInstanceId(instanceId) and Amr.db.profile.Logging.Auto[tonumber(instanceId)][tonumber(difficultyId)] then 290 if Amr.IsSupportedInstanceId(instanceId) and Amr.db.profile.Logging.Auto[tonumber(instanceId)][tonumber(difficultyId)] then
250 -- we are in a supported zone that we want to auto-log, turn logging on 291 -- we are in a supported zone that we want to auto-log, turn logging on
292
251 -- (supported check is probably redundant, but just in case someone has old settings lying around) 293 -- (supported check is probably redundant, but just in case someone has old settings lying around)
252 if not Amr:IsLogging() then 294 if not Amr:IsLogging() then
253 Amr:StartLogging() 295 Amr:StartLogging()
254 end 296 end
255 else 297 elseif hasAuto then
256 -- not in a zone that we want to auto-log, turn logging off 298 -- not in a zone that we want to auto-log, turn logging off
257 if Amr:IsLogging() then 299 if Amr:IsLogging() then
258 Amr:StopLogging() 300 Amr:StopLogging()
259 end 301 end
260 end 302 end
356 -- delete the last wipe date if it is more than 10 days old 398 -- delete the last wipe date if it is more than 10 days old
357 if Amr.db.char.Logging.LastWipe and difftime(now, Amr.db.char.Logging.LastWipe) > oldDuration then 399 if Amr.db.char.Logging.LastWipe and difftime(now, Amr.db.char.Logging.LastWipe) > oldDuration then
358 Amr.db.char.Logging.LastWipe = nil 400 Amr.db.char.Logging.LastWipe = nil
359 end 401 end
360 402
361 -- always enable advanced combat logging via our addon, gathers more detailed data for better analysis 403 -- enable game log file
362 SetCVar("advancedCombatLogging", 1) 404 updateGameLogging(true)
363 LoggingCombat(true)
364 Amr.db.char.Logging.Enabled = true 405 Amr.db.char.Logging.Enabled = true
365 406
366 self:Print(L.LogChatStart) 407 self:Print(L.LogChatStart)
367 408
368 self:UpdateMinimap() 409 self:UpdateMinimap()
369 self:RefreshLogUi() 410 self:RefreshLogUi()
370 end 411 end
371 412
372 function Amr:StopLogging() 413 function Amr:StopLogging()
373 414
374 LoggingCombat(false) 415 updateGameLogging(false)
375 Amr.db.char.Logging.Enabled = false 416 Amr.db.char.Logging.Enabled = false
376 417
377 self:Print(L.LogChatStop) 418 self:Print(L.LogChatStop)
378 419
379 self:UpdateMinimap() 420 self:UpdateMinimap()