Sanguosha.UI.Controls.PlayerViewModel._OnSkillCommandSelected C# (CSharp) Method

_OnSkillCommandSelected() private method

private _OnSkillCommandSelected ( object sender, EventArgs args ) : void
sender object
args System.EventArgs
return void
        private void _OnSkillCommandSelected(object sender, EventArgs args)
        {
            var skill = sender as SkillCommand;
            bool doCleanUp = (skill.IsSelected && skill != _lastSelectedCommand) ||
                             (!skill.IsSelected && skill == _lastSelectedCommand);

            if (skill.IsSelected)
            {
                if (skill == _lastSelectedCommand)
                {
                    // Trace.Assert(skill is GuHuoSkillCommand);
                }
                else if (_lastSelectedCommand != null)
                {
                    _lastSelectedCommand.OnSelectedChanged -= _OnSkillCommandSelected;
                    _lastSelectedCommand.IsSelected = false;
                    _lastSelectedCommand.OnSelectedChanged += _OnSkillCommandSelected;
                    // Trace.Assert(_lastSelectedCommand == null);
                }
                _lastSelectedCommand = skill;
                CancelAnswerCommand = cancelSkillSelectionCommand;
            }
            else
            {
                _lastSelectedCommand = null;
                CancelAnswerCommand = cancelCardUsageCommand;
            }

            if (doCleanUp)
            {
                foreach (EquipCommand equipCmd in EquipCommands)
                {
                    equipCmd.IsSelected = false;
                }

                foreach (CardViewModel card in HandCards)
                {
                    card.IsSelected = false;
                }

                foreach (var playerModel in _game.PlayerModels)
                {
                    playerModel.IsSelected = false;
                }

                _lastSelectedPlayers.Clear();

            }

            if (currentUsageVerifier != null)
            {
                _UpdateCardUsageStatus();
            }
        }