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); } } }