public void MakeMove(PieceMove move) { ChessColor oppositeColor = move.piece.color == ChessColor.White ? ChessColor.Black : ChessColor.White; Piece piece = move.piece; if (piece.color != turn) { return; } if (move.moveType == MoveType.Evolve) { ApplyMove(move); PieceEvolve?.Invoke(move.newPos, piece.color); //send a evolve event and ask for the piece to evolve } else if (move.moveType == MoveType.Switch) { //switch with king } else if (move.moveType == MoveType.Eat) { Piece deadPiece = chessBoard.Board[move.newPos.row, move.newPos.column]; chessBoard.AddToGrave(deadPiece); PieceEaten?.Invoke(move.newPos); ApplyMove(move); } else if (move.moveType == MoveType.Normal) { ApplyMove(move); } check = IsCheckMate(move.newPos); ChangeTurn(); CheckGame(); }
protected virtual void OnPieceEaten(CellChangeEventArgs e) { PieceEaten?.Invoke(e); }