Beispiel #1
0
        private void SquareView_Click(object sender, RoutedEventArgs e)
        {
            SquareView clickedSquare = sender as SquareView;

            if (StartSquare == null)
            {
                // Only highlight if it has a piece
                Square square = clickedSquare.DataContext as Square;

                if (square.HasPiece())
                {
                    StartSquare = clickedSquare;
                    StartSquare.SetHighlightColor();
                    ShowMovePreviews();
                }
            }
            else if ((StartSquare == clickedSquare) || (StartSquare != null && EndSquare != null))
            {
                ClearSquares();
            }
            else
            {
                EndSquare = clickedSquare;
                GameController.Update();
            }
        }
Beispiel #2
0
        /// <summary>
        /// Returns a square view from a position
        /// </summary>
        /// <param name="pos"></param>
        /// <returns></returns>
        private SquareView SquareViewFromPosition(Position pos)
        {
            int        index      = SquareViewIndexFromPosition(pos);
            SquareView squareView = BoardView.Squares[index];

            return(squareView);
        }
Beispiel #3
0
 public void ClearSquares()
 {
     foreach (SquareView squareView in BoardView.Squares)
     {
         squareView.SetNormalColor();
     }
     StartSquare = null;
     EndSquare   = null;
 }
Beispiel #4
0
        public void AddPiecesToView(Dictionary <Position, Square> boardSquares)
        {
            foreach (Position p in boardSquares.Keys)
            {
                Square     square     = boardSquares[p];
                int        viewIndex  = SquareViewIndexFromPosition(p);
                SquareView squareView = BoardView.Squares[viewIndex];

                AddClickEvents(square, squareView);

                if (square.HasPiece())
                {
                    UpdateSquarePiece(square, viewIndex);
                }
            }
        }
Beispiel #5
0
 private void CreateSquares()
 {
     // vertical columns
     for (int col = 0; col < COLUMN_COUNT; ++col)
     {
         // horizontal rows
         for (int row = 0; row < ROW_COUNT; ++row)
         {
             // alternate between colors
             SquareView square = ((row + col) % 2 == 0) ?
                                 SquareView.FromColor(Checkers.Model.Color.Black) :
                                 SquareView.FromColor(Checkers.Model.Color.Red);
             AddSquare(square);
         }
     }
 }
Beispiel #6
0
        /// <summary>
        /// Shows a preview of all the squares you can move to
        /// </summary>
        private void ShowMovePreviews()
        {
            if (StartSquare != null)
            {
                List <Move> validMoves = GameController.GetValidMoves();

                foreach (Move m in validMoves)
                {
                    Square moveStartSquare = SquareFromPosition(m.StartPosition);
                    if (moveStartSquare == StartSquare.DataContext as Square)
                    {
                        SquareView moveEndSquare = SquareViewFromPosition(m.EndPosition);
                        moveEndSquare.SetPreviewColor();
                    }
                }
            }
        }
Beispiel #7
0
        public static SquareView FromColor(Checkers.Model.Color color)
        {
            SquareView squareView = new SquareView();

            switch (color)
            {
            case Checkers.Model.Color.Black:
                squareView.SquareColor = Brushes.Gray;
                break;

            case Checkers.Model.Color.Red:
                squareView.SquareColor = Brushes.White;
                break;
            }
            squareView.Background = squareView.SquareColor;
            return(squareView);
        }
Beispiel #8
0
        public void UpdateView(Dictionary <Position, Square> boardSquares)
        {
            foreach (Position p in boardSquares.Keys)
            {
                Square     square     = boardSquares[p];
                int        viewIndex  = SquareViewIndexFromPosition(p);
                SquareView squareView = BoardView.Squares[viewIndex];

                squareView.DataContext = square;

                if (square.HasPiece())
                {
                    UpdateSquarePiece(square, viewIndex);
                }
                else
                {
                    squareView.ClearPieceImage();
                }
            }
        }
Beispiel #9
0
 private void AddClickEvents(Square squareModel, SquareView squareView)
 {
     squareView.DataContext = squareModel;
     squareView.Click      += SquareView_Click;
 }
Beispiel #10
0
 private void AddSquare(SquareView square)
 {
     Squares.Add(square);
     Children.Add(square);
 }