コード例 #1
0
        /// <summary>
        /// Processes the left button press when there is another selection present.
        /// </summary>
        /// <param name="previousSelection">The previous selection.</param>
        /// <param name="selectedPosition">The selection position on board.</param>
        /// <param name="selectedPiece">The selected piece (null if the selected field is empty).</param>
        private void ProcessLeftButtonPressWithPreviousSelection(Selection previousSelection, Position selectedPosition, FriendlyPiece selectedPiece)
        {
            var previousSelectedPiece = FriendlyBoard.GetPiece(previousSelection.Position);

            if (previousSelectedPiece == null)
            {
                OnFieldSelection?.Invoke(this, new FieldSelectedEventArgs(selectedPosition, selectedPiece));
            }
            else if (selectedPiece == null || selectedPiece.Color != previousSelectedPiece.Color)
            {
                var from = previousSelection.Position;
                var to   = selectedPosition;

                OnPieceMove?.Invoke(this, new PieceMovedEventArgs(previousSelectedPiece, from, to));

                _selectionsManager.RemoveAllSelections();
            }
        }
コード例 #2
0
 /// <summary>
 /// Processes the left button press when there is no previous selection.
 /// </summary>
 /// <param name="selectionPosition">The selection position on board.</param>
 /// <param name="selectedPieceType">The selected piece type (null if the selected field empty)/</param>
 private void ProcessLeftButtonPressWithoutPreviousSelection(Position selectionPosition, FriendlyPiece selectedPieceType)
 {
     OnFieldSelection?.Invoke(this, new FieldSelectedEventArgs(selectionPosition, selectedPieceType));
 }