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