コード例 #1
0
 internal IReadOnlyList <AbstractHealthDamageEvent> GetConditionHitDamageEvents(AbstractActor target, ParsedEvtcLog log, long start, long end)
 {
     if (_conditionHitDamageEventsPerPhasePerTarget == null)
     {
         _conditionHitDamageEventsPerPhasePerTarget = new CachingCollectionWithTarget <List <AbstractHealthDamageEvent> >(log);
     }
     if (!_conditionHitDamageEventsPerPhasePerTarget.TryGetValue(start, end, target, out List <AbstractHealthDamageEvent> dls))
     {
         dls = GetHitDamageEvents(target, log, start, end).Where(x => x.ConditionDamageBased(log)).ToList();
         _conditionHitDamageEventsPerPhasePerTarget.Set(start, end, target, dls);
     }
     return(dls);
 }
コード例 #2
0
 public abstract IReadOnlyList <AbstractBreakbarDamageEvent> GetBreakbarDamageEvents(AbstractActor target, ParsedEvtcLog log, long start, long end);
コード例 #3
0
 public abstract List <AbstractDamageEvent> GetDamageTakenLogs(AbstractActor target, ParsedEvtcLog log, long start, long end);
コード例 #4
0
 public abstract IReadOnlyList <AbstractHealthDamageEvent> GetDamageTakenEvents(AbstractActor target, ParsedEvtcLog log, long start, long end);
コード例 #5
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(AbstractActor 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));
                }
                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());
        }