public SessionStats( int encounters, TimeSpan duration, long damageTotal, int damageEvents, long healingTotal, int healingEvents, long shieldingTotal, int shieldingEvents, Dictionary <string, int> playerDeaths, Dictionary <string, int> npcDeaths, Dictionary <string, long> npcDamageTaken) { Encounters = encounters; Duration = duration; DamageStats = new DamageDoneStats { Events = damageEvents, Total = damageTotal }; HealingStats = new HealingDoneStats { Events = healingEvents, Total = healingTotal }; ShieldingStats = new ShieldingDoneStats { Events = shieldingEvents, Total = shieldingTotal }; Deaths = new DeathStats { NpcDeaths = new List <CharacterDeath>(), PlayerDeaths = new List <CharacterDeath>() }; foreach (var(k, v) in playerDeaths.OrderByDescending(e => e.Value)) { Deaths.PlayerDeaths.Add(new CharacterDeath { Name = k, Deaths = v }); } foreach (var(k, v) in npcDeaths.OrderByDescending(e => e.Value)) { Deaths.NpcDeaths.Add(new CharacterDeath { Name = k, Deaths = v }); } NpcDamageTaken = new Dictionary <string, long>(); foreach (var(k, v) in npcDamageTaken.OrderByDescending(e => e.Value)) { NpcDamageTaken.Add(k, v); } }
public EncounterStats( int encounterNumber, TimeSpan duration, long damageTotal, int damageEvents, long healingTotal, int healingEvents, long shieldingTotal, int shieldingEvents, Dictionary<string, int> playerDeaths, Dictionary<string, int> npcDeaths, Dictionary<string, long> npcDamageTaken) { EncounterNumber = encounterNumber; Duration = duration; DamageStats = new DamageDoneStats { Events = damageEvents, Total = damageTotal }; HealingStats = new HealingDoneStats { Events = healingEvents, Total = healingTotal }; ShieldingStats = new ShieldingDoneStats { Events = shieldingEvents, Total = shieldingTotal }; Deaths = new DeathStats { NpcDeaths = new List<CharacterDeath>(), PlayerDeaths = new List<CharacterDeath>() }; foreach (var (k, v) in playerDeaths.OrderByDescending(e => e.Value)) { Deaths.PlayerDeaths.Add(new CharacterDeath { Name = k, Deaths = v }); } foreach (var (k, v) in npcDeaths.OrderByDescending(e => e.Value)) { Deaths.NpcDeaths.Add(new CharacterDeath { Name = k, Deaths = v }); } if (npcDamageTaken.Any()) { var topNpc = npcDamageTaken.OrderByDescending(e => e.Value).First(); TopDamageTakenNpcTotal = topNpc.Value; TopDamageTakenNpcName = topNpc.Key; } }