private void ComputeMechanicData(long start, long end) { var presentMechanics = new HashSet <Mechanic>(); var presentOnEnemyMechanics = new HashSet <Mechanic>(); var presentOnPlayerMechanics = new HashSet <Mechanic>(); var enemyHash = new HashSet <AbstractSingleActor>(); foreach (KeyValuePair <Mechanic, List <MechanicEvent> > pair in _mechanicLogs) { if (pair.Value.Any(x => x.Time >= start && x.Time <= end)) { presentMechanics.Add(pair.Key); if (pair.Key.IsEnemyMechanic) { presentOnEnemyMechanics.Add(pair.Key); } else if (pair.Key.ShowOnTable) { presentOnPlayerMechanics.Add(pair.Key); } } } // ready enemy list foreach (Mechanic m in _mechanicLogs.Keys.Where(x => x.IsEnemyMechanic)) { foreach (MechanicEvent mechanicEvent in _mechanicLogs[m].Where(x => x.Time >= start && x.Time <= end)) { enemyHash.Add(mechanicEvent.Actor); } } _presentMechanics.Set(start, end, presentMechanics); _presentOnEnemyMechanics.Set(start, end, presentOnEnemyMechanics); _presentOnPlayerMechanics.Set(start, end, presentOnPlayerMechanics); _enemyList.Set(start, end, new List <AbstractSingleActor>(enemyHash)); }
public FinalToPlayersSupport GetToPlayerSupportStats(ParsedEvtcLog log, long start, long end) { if (_toPlayerSupportStats == null) { _toPlayerSupportStats = new CachingCollection <FinalToPlayersSupport>(log); } if (!_toPlayerSupportStats.TryGetValue(start, end, out FinalToPlayersSupport value)) { value = new FinalToPlayersSupport(log, this, start, end); _toPlayerSupportStats.Set(start, end, value); } return(value); }
public IReadOnlyDictionary <long, FinalBuffs> GetBuffs(ParsedEvtcLog log, long start, long end) { if (_buffs == null) { _buffs = new CachingCollection <Dictionary <long, FinalBuffs> >(log); } if (!_buffs.TryGetValue(start, end, out Dictionary <long, FinalBuffs> value)) { value = ComputeBuffs(log, start, end); _buffs.Set(start, end, value); } return(value); }
// Gameplay Stats public FinalGameplayStats GetGameplayStats(ParsedEvtcLog log, long start, long end) { if (_gameplayStats == null) { _gameplayStats = new CachingCollection <FinalGameplayStats>(log); } if (!_gameplayStats.TryGetValue(start, end, out FinalGameplayStats value)) { value = new FinalGameplayStats(log, start, end, this); _gameplayStats.Set(start, end, value); } return(value); }