public GeneralStatistics(CombatData combatData, List <Player> players, BuffsContainer boons) { HashSet <long> skillIDs = combatData.GetSkills(); // Main boons foreach (Buff boon in boons.BuffsByNature[BuffNature.Boon]) { if (skillIDs.Contains(boon.ID)) { PresentBoons.Add(boon); } } // Main Conditions foreach (Buff boon in boons.BuffsByNature[BuffNature.Condition]) { if (skillIDs.Contains(boon.ID)) { PresentConditions.Add(boon); } } // Important class specific boons foreach (Buff boon in boons.BuffsByNature[BuffNature.OffensiveBuffTable]) { if (skillIDs.Contains(boon.ID)) { PresentOffbuffs.Add(boon); } } foreach (Buff boon in boons.BuffsByNature[BuffNature.DefensiveBuffTable]) { if (skillIDs.Contains(boon.ID)) { PresentDefbuffs.Add(boon); } } // All class specific boons var remainingBuffsByIds = boons.BuffsByNature[BuffNature.GraphOnlyBuff].GroupBy(x => x.ID).ToDictionary(x => x.Key, x => x.ToList().FirstOrDefault()); foreach (Player player in players) { PresentPersonalBuffs[player] = new HashSet <Buff>(); foreach (AbstractBuffEvent item in combatData.GetBuffDataByDst(player.AgentItem)) { if (item is BuffApplyEvent && item.To == player.AgentItem && remainingBuffsByIds.TryGetValue(item.BuffID, out Buff boon)) { PresentPersonalBuffs[player].Add(boon); } } } }
public Statistics(ParsedEvtcContainer evtcContainer) { HashSet <long> skillIDs = evtcContainer.CombatData.GetSkills(); // Main boons foreach (Boon boon in evtcContainer.Boons.GetBoonList()) { if (skillIDs.Contains(boon.ID)) { PresentBoons.Add(boon); } } // Main Conditions foreach (Boon boon in evtcContainer.Boons.GetCondiBoonList()) { if (skillIDs.Contains(boon.ID)) { PresentConditions.Add(boon); } } // Important class specific boons foreach (Boon boon in evtcContainer.Boons.GetOffensiveTableList()) { if (skillIDs.Contains(boon.ID)) { PresentOffbuffs.Add(boon); } } foreach (Boon boon in evtcContainer.Boons.GetDefensiveTableList()) { if (skillIDs.Contains(boon.ID)) { PresentDefbuffs.Add(boon); } } // All class specific boons Dictionary <long, Boon> remainingBuffsByIds = evtcContainer.Boons.GetRemainingBuffsList().GroupBy(x => x.ID).ToDictionary(x => x.Key, x => x.ToList().FirstOrDefault()); foreach (Player player in evtcContainer.PlayerList) { PresentPersonalBuffs[player.InstID] = new HashSet <Boon>(); foreach (CombatItem item in evtcContainer.CombatData.GetBoonDataByDst(player.InstID, player.FirstAware, player.LastAware)) { if (item.DstInstid == player.InstID && item.IsBuffRemove == ParseEnum.BuffRemove.None && remainingBuffsByIds.TryGetValue(item.SkillID, out Boon boon)) { PresentPersonalBuffs[player.InstID].Add(boon); } } } }