private void CharacterAnalyzer(CombatData combat, List<LogEntry> log) { var allSources = log.DistinctSources(); var allTargets = log.DistinctTargets(); var allCharacters = allSources.Union(allTargets).Distinct(); foreach (var character in allCharacters) { var metrics = new CharacterData(); combat.Characters.Add(character, metrics); CombatAnalyzer(metrics.AsSource, log.WithSource(character)); CombatAnalyzer(metrics.AsTarget, log.WithTarget(character)); } }
private CombatLog ParseCombatLog(List<LogEntry> log) { var cLog = new CombatLog(); CombatData currentCombat = null; foreach (LogEntry logEntry in log) { if (logEntry.effect.name == "EnterCombat") currentCombat = new CombatData(); if (currentCombat != null) currentCombat.Log.Add(logEntry); if (logEntry.effect.name == "ExitCombat") { cLog.Combats.Add(currentCombat); currentCombat = null; } } if (currentCombat != null) // we have a partial combat cLog.Combats.Add(currentCombat); return cLog; }