/*public List<DamageLog> getHealingLogs(ParsedEvtcLog log, long start, long end) * { * List<DamageLog> res = new List<DamageLog>(); * foreach (Minion minion in this) * { * res.AddRange(minion.getHealingLogs(log, start, end)); * } * return res; * }*/ public override IReadOnlyList <AbstractHealthDamageEvent> GetDamageTakenEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end) { if (DamageTakenEvents == null) { DamageTakenEvents = new List <AbstractHealthDamageEvent>(); foreach (NPC minion in _minionList) { DamageTakenEvents.AddRange(minion.GetDamageTakenEvents(null, log, 0, log.FightData.FightEnd)); } DamageTakenEvents = DamageTakenEvents.OrderBy(x => x.Time).ToList(); DamageTakenEventsBySrc = DamageTakenEvents.GroupBy(x => x.From).ToDictionary(x => x.Key, x => x.ToList()); } if (target != null) { if (DamageTakenEventsBySrc.TryGetValue(target.AgentItem, out List <AbstractHealthDamageEvent> list)) { return(list.Where(x => x.Time >= start && x.Time <= end).ToList()); } else { return(new List <AbstractHealthDamageEvent>()); } } return(DamageTakenEvents.Where(x => x.Time >= start && x.Time <= end).ToList()); }
public override IReadOnlyList <AbstractHealthDamageEvent> GetDamageTakenEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end) { if (DamageTakenEvents == null) { DamageTakenEvents = new List <AbstractHealthDamageEvent>(); DamageTakenEvents.AddRange(log.CombatData.GetDamageTakenData(AgentItem)); DamageTakenEvents = DamageTakenEvents.OrderBy(x => x.Time).ToList(); DamageTakenEventsBySrc = DamageTakenEvents.GroupBy(x => x.From).ToDictionary(x => x.Key, x => x.ToList()); } if (target != null) { if (DamageTakenEventsBySrc.TryGetValue(target.AgentItem, out List <AbstractHealthDamageEvent> list)) { long targetStart = target.FirstAware; long targetEnd = target.LastAware; return(list.Where(x => x.Time >= start && x.Time >= targetStart && x.Time <= end && x.Time <= targetEnd).ToList()); } else { return(new List <AbstractHealthDamageEvent>()); } } return(DamageTakenEvents.Where(x => x.Time >= start && x.Time <= end).ToList()); }