Ejemplo n.º 1
0
        /*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());
        }
Ejemplo n.º 2
0
 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());
 }