public IReadOnlyList <int> Get1SHealingList(ParsedEvtcLog log, long start, long end, AbstractSingleActor target, EXTHealingType healingType = EXTHealingType.All) { if (!_healing1S.TryGetValue(healingType, out CachingCollectionWithTarget <int[]> graphs)) { graphs = new CachingCollectionWithTarget <int[]>(log); _healing1S[healingType] = graphs; } if (!graphs.TryGetValue(start, end, target, out int[] graph))
internal IReadOnlyList <EXTAbstractHealingEvent> GetJustActorTypedOutgoingHealEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end, EXTHealingType healingType) { if (!_typedSelfHealEvents.TryGetValue(healingType, out CachingCollectionWithTarget <List <EXTAbstractHealingEvent> > healEventsPerPhasePerTarget)) { healEventsPerPhasePerTarget = new CachingCollectionWithTarget <List <EXTAbstractHealingEvent> >(log); _typedSelfHealEvents[healingType] = healEventsPerPhasePerTarget; } if (!healEventsPerPhasePerTarget.TryGetValue(start, end, target, out List <EXTAbstractHealingEvent> dls)) { dls = GetTypedOutgoingHealEvents(target, log, start, end, healingType).Where(x => x.From == _agentItem).ToList(); healEventsPerPhasePerTarget.Set(start, end, target, dls); } return(dls); }
public IReadOnlyList <EXTAbstractHealingEvent> GetTypedOutgoingHealEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end, EXTHealingType healingType) { if (!_typedHealEvents.TryGetValue(healingType, out CachingCollectionWithTarget <List <EXTAbstractHealingEvent> > healEventsPerPhasePerTarget)) { healEventsPerPhasePerTarget = new CachingCollectionWithTarget <List <EXTAbstractHealingEvent> >(log); _typedHealEvents[healingType] = healEventsPerPhasePerTarget; } if (!healEventsPerPhasePerTarget.TryGetValue(start, end, target, out List <EXTAbstractHealingEvent> dls)) { dls = GetOutgoingHealEvents(target, log, start, end).ToList(); switch (healingType) { case EXTHealingType.HealingPower: dls.RemoveAll(x => x.GetHealingType(log) != EXTHealingType.HealingPower); break; case EXTHealingType.ConversionBased: dls.RemoveAll(x => x.GetHealingType(log) != EXTHealingType.ConversionBased); break; case EXTHealingType.Hybrid: dls.RemoveAll(x => x.GetHealingType(log) != EXTHealingType.Hybrid); break; case EXTHealingType.All: break; default: throw new NotImplementedException("Not implemented healing type " + healingType); } healEventsPerPhasePerTarget.Set(start, end, target, dls); } return(dls); }