public SkillAggregate(Skill skill, Skills skillsData, Entity source, Entity target, PlayerDamageDealt playerDamageDealt, bool timed, Database.Database.Type type) { _playerDamageDealt = playerDamageDealt; _timed = timed; _target = target; Type = type; Skills = new Dictionary <Skill, List <Entity> >(); Name = skill.ShortName; SkillsData = skillsData; Skills.Add(skill, new List <Entity> { source }); }
public SkillsDetail(IEnumerable <SkillAggregate> skillAggregate, Database.Database.Type type) { InitializeComponent(); _skills = skillAggregate; _type = type; switch (_type) { case Database.Database.Type.Damage: { var header = new SkillsHeaderDps(); ContentWidth = header.Width; header.LabelName.MouseRightButtonUp += LabelNameOnMouseRightButtonUp; header.LabelAverageCrit.MouseRightButtonUp += LabelAverageCritOnMouseRightButtonUp; header.LabelAverageHit.MouseRightButtonUp += LabelAverageHitOnMouseRightButtonUp; header.LabelBiggestCrit.MouseRightButtonUp += LabelBiggestCritOnMouseRightButtonUp; header.LabelCritRateDmg.MouseRightButtonUp += LabelCritRateDmgOnMouseRightButtonUp; header.LabelDamagePercentage.MouseRightButtonUp += LabelDamagePercentageOnMouseRightButtonUp; header.LabelNumberHitDmg.MouseRightButtonUp += LabelNumberHitDmgOnMouseRightButtonUp; header.LabelTotalDamage.MouseRightButtonUp += LabelTotalDamageOnMouseRightButtonUp; header.LabelNumberCritDmg.MouseRightButtonUp += LabelNumberCritDmgOnMouseRightButtonUp; header.LabelAverageTotal.MouseRightButtonUp += LabelAverageTotalOnMouseRightButtonUp; _currentSortedLabel = header.LabelTotalDamage; SkillsList.Items.Add(header); } break; case Database.Database.Type.Heal: { var header = new SkillsHeaderHeal(); ContentWidth = header.Width; header.LabelName.MouseRightButtonUp += LabelNameOnMouseRightButtonUp; header.LabelCritRateHeal.MouseRightButtonUp += LabelCritRateHealOnMouseRightButtonUp; header.LabelNumberHitHeal.MouseRightButtonUp += LabelNumberHitHealOnMouseRightButtonUp; header.LabelNumberCritHeal.MouseRightButtonUp += LabelNumberCritHealOnMouseRightButtonUp; header.LabelTotalHeal.MouseRightButtonUp += LabelTotalHealOnMouseRightButtonUp; header.LabelAverage.MouseRightButtonUp += LabelAverageOnMouseRightButtonUp; header.LabelAverageCrit.MouseRightButtonUp += LabelAverageHealCritOnMouseRightButtonUp; header.LabelAverageHit.MouseRightButtonUp += LabelAverageHealHitOnMouseRightButtonUp; header.LabelBiggestCrit.MouseRightButtonUp += LabelBiggestHealCritOnMouseRightButtonUp; header.LabelBiggestHit.MouseRightButtonUp += LabelBiggestHealHitOnMouseRightButtonUp; _currentSortedLabel = header.LabelTotalHeal; SkillsList.Items.Add(header); } break; case Database.Database.Type.Mana: { var header = new SkillsHeaderMana(); ContentWidth = header.Width; header.LabelName.MouseRightButtonUp += LabelNameOnMouseRightButtonUp; header.LabelNumberHitMana.MouseRightButtonUp += LabelNumberHitManaOnMouseRightButtonUp; header.LabelTotalMana.MouseRightButtonUp += LabelTotalManaOnMouseRightButtonUp; _currentSortedLabel = header.LabelTotalMana; SkillsList.Items.Add(header); } break; case Database.Database.Type.Counter: { var header = new SkillsHeaderCounter(); ContentWidth = header.Width; header.LabelName.MouseRightButtonUp += LabelNameOnMouseRightButtonUp; header.LabelNumberHit.MouseRightButtonUp += LabelNumberHitCounterOnMouseRightButtonUp; _currentSortedLabel = header.LabelNumberHit; SkillsList.Items.Add(header); } break; default: throw new ArgumentOutOfRangeException(); } Repaint(); }
public static IEnumerable <SkillAggregate> GetAggregate(PlayerDamageDealt playerDamageDealt, Entity entity, Skills skillsData, bool timedEncounter, Database.Database.Type type) { if (skillsData == null) { return(new List <SkillAggregate>()); } if (type != Database.Database.Type.Damage) { timedEncounter = false; } if (!playerDamageDealt.Source.IsHealer && type != Database.Database.Type.Damage) { var skills = skillsData.SkillsIdByTarget(playerDamageDealt.Source.User); var skillsAggregate = new Dictionary <string, SkillAggregate>(); foreach (var skill in skills) { if (skill.Value == null) { continue; } if (!skillsData.Type(skill.Key, playerDamageDealt.Source.User, skill.Value.Id, skill.Value.NpcInfo, false, type)) { continue; } if (!skillsAggregate.ContainsKey(skill.Value.ShortName)) { skillsAggregate.Add(skill.Value.ShortName, new SkillAggregate(skill.Value, skillsData, skill.Key, playerDamageDealt.Source.User, playerDamageDealt, false, type)); continue; } skillsAggregate[skill.Value.ShortName].Add(skill.Value, skill.Key); } return(skillsAggregate.Values); } if (playerDamageDealt.Source.IsHealer && type != Database.Database.Type.Damage) { var skills = skillsData.SkillsIdBySource(playerDamageDealt.Source.User, null, true); var skillsAggregate = new Dictionary <string, SkillAggregate>(); foreach (var skill in skills) { if (skill == null) { continue; } if (!skillsData.Type(playerDamageDealt.Source.User, null, skill.Id, skill.NpcInfo, true, type)) { continue; } if (!skillsAggregate.ContainsKey(skill.ShortName)) { skillsAggregate.Add(skill.ShortName, new SkillAggregate(skill, skillsData, playerDamageDealt.Source.User, null, playerDamageDealt, true, type)); continue; } skillsAggregate[skill.ShortName].Add(skill, playerDamageDealt.Source.User); } return(skillsAggregate.Values); } else { var skills = skillsData.SkillsIdBySource(playerDamageDealt.Source.User, entity, timedEncounter); var skillsAggregate = new Dictionary <string, SkillAggregate>(); foreach (var skill in skills) { if (skill == null) { continue; } if (!skillsData.Type(playerDamageDealt.Source.User, entity, skill.Id, skill.NpcInfo, timedEncounter, type)) { continue; } if (!skillsAggregate.ContainsKey(skill.ShortName)) { skillsAggregate.Add(skill.ShortName, new SkillAggregate(skill, skillsData, playerDamageDealt.Source.User, entity, playerDamageDealt, timedEncounter, type)); continue; } skillsAggregate[skill.ShortName].Add(skill, playerDamageDealt.Source.User); } return(skillsAggregate.Values); } }