Exemple #1
0
        protected override void OnMouseDown(MouseButtonEventArgs e)
        {
            base.OnMouseDown(e);
            if (e.ChangedButton != MouseButton.Left)
            {
                return;
            }
            _mouseDown      = true;
            _mouseDownPoint = e.GetPosition(Grid);
            _clickedSquare  = SquareAt(e.GetPosition(Grid));

            if (_clickedSquare == null)
            {
                return;
            }

            if (_selected && _possibleMoves.Contains(_clickedSquare))
            {
                return;
            }

            ResetBoardColor();
            _selectedPiece = _clickedSquare.PieceView;


            //--Verified--//
            //Concerned controllers to get the possible moves
            List <BoardViewPlayerController> concernedControllers =
                BoardViewPlayerControllers.FindAll(
                    x => (x.Player.Color == (_selectedPiece?.Piece.Color) && x.IsPlayable));

            if (concernedControllers.Count == 0)
            {
                return;
            }
            _initDragAndDropOnMouseMove = true;

            //Possible move drawing
            foreach (Square square in concernedControllers.First().PossibleMoves(_selectedPiece.Piece))
            {
                SquareView squareView =
                    Grid.Children.Cast <SquareView>()
                    .First(x => Grid.GetRow(x) == square.Y && Grid.GetColumn(x) == square.X);

                squareView.SetResourceReference(BackgroundProperty,
                                                (square.X + square.Y) % 2 == 0
                        ? "CleanWindowCloseButtonBackgroundBrush"
                        : "CleanWindowCloseButtonPressedBackgroundBrush");

                _possibleMoves.Add(squareView);
            }
        }
Exemple #2
0
        public void GameStateChanged(BoardState state)
        {
            SquareView squareView = null;

            ResetBoardColor();

            switch (state)
            {
            case BoardState.Normal:
                if (_lastChangedSquareView != null)
                {
                    ResetSquareViewColor(_lastChangedSquareView);
                }
                break;

            case BoardState.WhiteCheck:
                squareView =
                    SquareViews.First(
                        x => (x.Square?.Piece?.Type == Type.King) && (x.Square?.Piece?.Color == Color.White));
                squareView.SetResourceReference(BackgroundProperty, "ValidationBrush5");
                break;

            case BoardState.BlackCheck:
                squareView =
                    SquareViews.First(
                        x => (x.Square?.Piece?.Type == Type.King) && (x.Square?.Piece?.Color == Color.Black));
                squareView.SetResourceReference(BackgroundProperty, "ValidationBrush5");
                break;

            case BoardState.BlackCheckMate:
                squareView =
                    SquareViews.First(
                        x => (x.Square?.Piece?.Type == Type.King) && (x.Square?.Piece?.Color == Color.Black));
                squareView.SetResourceReference(BackgroundProperty, "TextBrush");
                break;

            case BoardState.WhiteCheckMate:
                squareView =
                    SquareViews.First(
                        x => (x.Square?.Piece?.Type == Type.King) && (x.Square?.Piece?.Color == Color.White));
                squareView.SetResourceReference(BackgroundProperty, "TextBrush");
                break;

            case BoardState.BlackPat:
                squareView =
                    SquareViews.First(
                        x => (x.Square?.Piece?.Type == Type.King) && (x.Square?.Piece?.Color == Color.Black));
                squareView.SetResourceReference(BackgroundProperty, "WhiteColorBrush");
                break;

            case BoardState.WhitePat:
                squareView =
                    SquareViews.First(
                        x => (x.Square?.Piece?.Type == Type.King) && (x.Square?.Piece?.Color == Color.White));
                squareView.SetResourceReference(BackgroundProperty, "WhiteColorBrush");
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(state), state, null);
            }
            _lastChangedSquareView = squareView;
        }
Exemple #3
0
 private static void ResetSquareViewColor(SquareView squareView)
 {
     squareView.SetResourceReference(BackgroundProperty,
                                     (squareView.Square.X + squareView.Square.Y) % 2 == 0 ? "AccentColorBrush" : "AccentColorBrush4");
 }