private void InitializeChessboardBoxesArea() { panelChessBoard.Controls.Clear(); boxUserControls = new BoxUserControl[9, 9]; for (var row = 1; row < 9; row++) { for (var column = 1; column < 9; column++) { boxUserControls[row, column] = new BoxUserControl(chessboard[row, column]); boxUserControls[row, column].Click += BoxClick; boxUserControls[row, column].Location = new Point { X = (column - 1) * 64, Y = (8 - row) * 64 }; panelChessBoard.Controls.Add(boxUserControls[row, column]); } } }
private async void BoxClick(object sender, EventArgs e) { if (chessboard.RetakingIsActive || chessboard.CurrentTurn != playerTurn) { return; } var clickedBox = (BoxUserControl)sender; if (firstClickedBox == null && clickedBox.Piece != null && playerTurn == clickedBox.Piece.Color) { var boxPosition = clickedBox.Position; clickedBox.Box.Piece.CheckPossibilitiesForProvidedLocationAndMarkThem(chessboard, boxPosition); SetChessboardBoxesColors(); if (clickedBox.Box.Piece.CanMove) { firstClickedBox = clickedBox; } } else if (firstClickedBox != null) { if (clickedBox == firstClickedBox) { chessboard.SetChessboardBoxesAsUnavailable(); SetChessboardBoxesColors(); firstClickedBox = null; } else if (clickedBox != firstClickedBox && clickedBox.Available) { MovePiece(firstClickedBox.Box, clickedBox.Box); firstClickedBox = null; RedrawChessboardBoxes(); } } }
private bool ShouldHighlightBoxAsAvailable(BoxUserControl boxUserControl) { return(boxUserControl.Box.Available && HighlightAvailableMoves); }