private static void UpdateSkillStats(SkillResult message, Entity entityTarget, PlayerInfo playerInfo, long time) { var entities = playerInfo.Dealt; entities.AddStats(time, entityTarget, new SkillsStats(playerInfo)); var skillName = message.SkillId.ToString(); if (message.Skill != null) { skillName = message.Skill.Name; } var skillKey = new Skill(skillName, new List <int> { message.SkillId }); SkillStats skillStats; var dictionarySkillStats = entities.GetSkills(time, entityTarget); dictionarySkillStats.TryGetValue(skillKey, out skillStats); if (skillStats == null) { skillStats = new SkillStats(playerInfo, entityTarget); } if (message.IsHp) { if (message.Amount > 0) { skillStats.AddData(message.SkillId, message.Heal, message.IsCritical, SkillStats.Type.Heal, time); } else { skillStats.AddData(message.SkillId, message.Damage, message.IsCritical, SkillStats.Type.Damage, time); } } else { skillStats.AddData(message.SkillId, message.Mana, message.IsCritical, SkillStats.Type.Mana, time); } var skill = dictionarySkillStats.Keys.ToList(); var indexSkill = skill.IndexOf(skillKey); if (indexSkill != -1) { foreach ( var skillid in skill[indexSkill].SkillId.Where(skillid => !skillKey.SkillId.Contains(skillid))) { skillKey.SkillId.Add(skillid); } } dictionarySkillStats.Remove(skillKey); dictionarySkillStats.Add(skillKey, skillStats); }
public bool Equals(PlayerInfo other) { return(Player.Equals(other.Player)); }