Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
 protected virtual void OnPieceEaten(CellChangeEventArgs e)
 {
     PieceEaten?.Invoke(e);
 }