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(); } }
/// <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); }
public void ClearSquares() { foreach (SquareView squareView in BoardView.Squares) { squareView.SetNormalColor(); } StartSquare = null; EndSquare = null; }
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); } } }
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); } } }
/// <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(); } } } }
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); }
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(); } } }
private void AddClickEvents(Square squareModel, SquareView squareView) { squareView.DataContext = squareModel; squareView.Click += SquareView_Click; }
private void AddSquare(SquareView square) { Squares.Add(square); Children.Add(square); }