public override IReadOnlyList <EXTAbstractBarrierEvent> GetOutgoingBarrierEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end) { if (!log.CombatData.HasEXTBarrier) { throw new InvalidOperationException("Healing Stats extension not present"); } if (BarrierEvents == null) { BarrierEvents = new List <EXTAbstractBarrierEvent>(); BarrierEvents.AddRange(log.CombatData.EXTBarrierCombatData.GetBarrierData(_agentItem).Where(x => x.ToFriendly)); IReadOnlyDictionary <long, Minions> minionsList = _actor.GetMinions(log); foreach (Minions mins in minionsList.Values) { BarrierEvents.AddRange(mins.EXTBarrier.GetOutgoingBarrierEvents(null, log, 0, log.FightData.FightEnd)); } BarrierEvents = BarrierEvents.OrderBy(x => x.Time).ToList(); BarrierEventsByDst = BarrierEvents.GroupBy(x => x.To).ToDictionary(x => x.Key, x => x.ToList()); } if (target != null) { if (BarrierEventsByDst.TryGetValue(target.AgentItem, out List <EXTAbstractBarrierEvent> list)) { return(list.Where(x => x.Time >= start && x.Time <= end).ToList()); } else { return(new List <EXTAbstractBarrierEvent>()); } } return(BarrierEvents.Where(x => x.Time >= start && x.Time <= end).ToList()); }
public override IReadOnlyList <EXTAbstractBarrierEvent> GetOutgoingBarrierEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end) { if (BarrierEvents == null) { BarrierEvents = new List <EXTAbstractBarrierEvent>(); foreach (NPC minion in _minionList) { BarrierEvents.AddRange(minion.EXTBarrier.GetOutgoingBarrierEvents(null, log, 0, log.FightData.FightEnd)); } BarrierEvents = BarrierEvents.OrderBy(x => x.Time).ToList(); BarrierEventsByDst = BarrierEvents.GroupBy(x => x.To).ToDictionary(x => x.Key, x => x.ToList()); } if (target != null) { if (BarrierEventsByDst.TryGetValue(target.AgentItem, out List <EXTAbstractBarrierEvent> list)) { return(list.Where(x => x.Time >= start && x.Time <= end).ToList()); } else { return(new List <EXTAbstractBarrierEvent>()); } } return(BarrierEvents.Where(x => x.Time >= start && x.Time <= end).ToList()); }