public override IReadOnlyList <AbstractBreakbarDamageEvent> GetBreakbarDamageEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end) { if (BreakbarDamageEvents == null) { BreakbarDamageEvents = new List <AbstractBreakbarDamageEvent>(); foreach (NPC minion in _minionList) { BreakbarDamageEvents.AddRange(minion.GetBreakbarDamageEvents(null, log, 0, log.FightData.FightEnd)); } BreakbarDamageEvents = BreakbarDamageEvents.OrderBy(x => x.Time).ToList(); BreakbarDamageEventsByDst = BreakbarDamageEvents.GroupBy(x => x.To).ToDictionary(x => x.Key, x => x.ToList()); } if (target != null) { if (BreakbarDamageEventsByDst.TryGetValue(target.AgentItem, out List <AbstractBreakbarDamageEvent> list)) { return(list.Where(x => x.Time >= start && x.Time <= end).ToList()); } else { return(new List <AbstractBreakbarDamageEvent>()); } } return(BreakbarDamageEvents.Where(x => x.Time >= start && x.Time <= end).ToList()); }
public override IReadOnlyList <AbstractBreakbarDamageEvent> GetBreakbarDamageEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end) { if (BreakbarDamageEvents == null) { BreakbarDamageEvents = new List <AbstractBreakbarDamageEvent>(); BreakbarDamageEvents.AddRange(log.CombatData.GetBreakbarDamageData(AgentItem).Where(x => !x.ToFriendly)); IReadOnlyDictionary <long, Minions> minionsList = GetMinions(log); foreach (Minions mins in minionsList.Values) { BreakbarDamageEvents.AddRange(mins.GetBreakbarDamageEvents(null, log, 0, log.FightData.FightEnd)); } BreakbarDamageEvents = BreakbarDamageEvents.OrderBy(x => x.Time).ToList(); BreakbarDamageEventsByDst = BreakbarDamageEvents.GroupBy(x => x.To).ToDictionary(x => x.Key, x => x.ToList()); } if (target != null) { if (BreakbarDamageEventsByDst.TryGetValue(target.AgentItem, out List <AbstractBreakbarDamageEvent> list)) { return(list.Where(x => x.Time >= start && x.Time <= end).ToList()); } else { return(new List <AbstractBreakbarDamageEvent>()); } } return(BreakbarDamageEvents.Where(x => x.Time >= start && x.Time <= end).ToList()); }