Inheritance: SkillCommand
Exemple #1
0
        private void _UpdateSkills()
        {
            // SkillCommands.Clear();
            ActiveSkillCommands.Clear();
            AutoInvokeSkillCommands.Clear();

            var backup = new List<SkillCommand>(DockedSkillCommands);
            backup.AddRange(RulerGivenSkillCommands);

            foreach (ISkill skill in _player.Skills)
            {
                if (!backup.Any(s => s.Skill == skill))
                {
                    SkillCommand command;

                    if (skill is IAdditionalTypedSkill)
                    {
                        command = new GuHuoSkillCommand() { Skill = skill, IsEnabled = false };
                    }
                    else
                    {
                        command = new SkillCommand() { Skill = skill, IsEnabled = false };
                    }

                    if (command.IsAutoInvokeSkill)
                    {
                        command.IsEnabled = true;
                        command.OnSelectedChanged += triggerSkill_OnSelectedChanged;
                    }

                    if (command.HeroName != null)
                    {
                        RulerGivenSkillCommands.Add(command);
                    }
                    else
                    {
                        DockedSkillCommands.Add(command);
                    }

                }
            }

            foreach (var skillCommand in backup)
            {
                if (!_player.Skills.Any(s => skillCommand.Skill == s))
                {
                    AutoInvokeSkillCommands.Remove(skillCommand);
                    DockedSkillCommands.Remove(skillCommand);
                    RulerGivenSkillCommands.Remove(skillCommand);
                }
            }

            foreach (var command in SkillCommands)
            {
                if (command.IsAutoInvokeSkill)
                {
                    AutoInvokeSkillCommands.Add(command);
                }
                else if ((command.Skill is ActiveSkill || command.Skill is CardTransformSkill))
                {
                    ActiveSkillCommands.Add(command);
                }
            }
        }