示例#1
0
 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
     });
 }
示例#2
0
        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();
        }
示例#3
0
        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);
            }
        }