예제 #1
0
        public override PieceOperations GetNextOperation(PieceOperations state)
        {
            switch (state)
            {
            case PieceOperations.OP_PUT_PIECE_BLACK:
            case PieceOperations.OP_PUT_PIECE_WHITE:
                return(PieceOperations.OP_FLIP_PIECE);

            default:
                return(state);
            }
        }
예제 #2
0
        private bool ManipulatePiece(PieceOperations op)
        {
            bool success = false;

            switch (op)
            {
            case PieceOperations.OP_PUT_PIECE_BLACK:
                if (rule.PutPiece(PieceKind.PIECE_BLACK))
                {
                    RemovePiece();
                    DisplayCursor(null);        // update cursor position (it might be changed not via mouse)
                    SetPiece2D(Colors.Black);
                    SetPiece3D(true);
                    success = true;
                }
                break;

            case PieceOperations.OP_PUT_PIECE_WHITE:
                if (rule.PutPiece(PieceKind.PIECE_WHITE))
                {
                    RemovePiece();
                    DisplayCursor(null);        // update cursor position (it might be changed not via mouse)
                    SetPiece2D(Colors.White);
                    SetPiece3D(false);
                    success = true;
                }
                break;

            case PieceOperations.OP_REMOVE_PIECE:
                if (rule.PutPiece(PieceKind.PIECE_EMPTY))
                {
                    RemovePiece();
                    success = true;
                }
                break;

            case PieceOperations.OP_FLIP_PIECE:
                if (rule.FlipPiece())
                {
                    RemovePiece();
                    DisplayCursor(null);        // update cursor position (it might be changed not via mouse)
                    if (rule.GetPiece() == PieceKind.PIECE_WHITE)
                    {
                        SetPiece2D(Colors.White);
                        SetPiece3D(false);
                    }
                    else
                    {
                        SetPiece2D(Colors.Black);
                        SetPiece3D(true);
                    }
                    success = true;
                }
                break;

            case PieceOperations.OP_GET_PIECE:
                if (rule.RetrievePiece())
                {
                    RemovePiece();
                    success = true;
                }
                break;

            case PieceOperations.OP_PUT_TERRITORY_BLACK:
                if (rule.PutTerritory(PieceKind.PIECE_BLACK))
                {
                    RemoveTerritory();
                    DisplayCursor(null);        // update cursor position (it might be changed not via mouse)
                    SetTerritory2D(new Color()
                    {
                        R = 0x00, G = 0x00, B = 0x00, A = 0x88
                    });
                    SetTerritory3D(true);
                    success = true;
                }
                break;

            case PieceOperations.OP_PUT_TERRITORY_WHITE:
                if (rule.PutTerritory(PieceKind.PIECE_WHITE))
                {
                    RemoveTerritory();
                    DisplayCursor(null);        // update cursor position (it might be changed not via mouse)
                    SetTerritory2D(new Color()
                    {
                        R = 0xFF, G = 0xFF, B = 0xFF, A = 0x88
                    });
                    SetTerritory3D(false);
                    success = true;
                }
                break;

            case PieceOperations.OP_REMOVE_TERRITORY:
                if (rule.PutTerritory(PieceKind.PIECE_EMPTY))
                {
                    RemoveTerritory();
                    success = true;
                }
                break;

            default:
                break;
            }

            // ------------------------------
            // Show scores
            // ------------------------------
            UserInterface.UpdateDispScore();

            return(success);
        }
예제 #3
0
 public OperationState()
 {
     _CurrentOption = PieceOperations.OP_PUT_PIECE_BLACK;
 }
예제 #4
0
 public abstract PieceOperations GetNextOperation(PieceOperations state);