Exemplo n.º 1
0
    // constructor
    public ChessBoard()
    {
        battleChessMain = null;

        bitBoard = new ChessBitBoard();
        bitBoardVirtual = new ChessBitBoard();
    }
Exemplo n.º 2
0
    // interface
    public void Init( BattleChessMain chessMain, Transform[] aPieceRef, ParticleSystem selectPSystemRef, ParticleSystem movablePSystemRef )
    {
        // etc property
        CurrTurn = PlayerSide.e_White;
        UserPlayerSide = PlayerSide.e_White;
        ThinkingTime = 18000;
        nCurrHalfMove = 0;
        nCurrTotalMove = 0;

        Ready = false;

        // move
        currMove = new ChessMoveManager.sMove();
        currCastlingState = new ChessCastling() {

            CastlingWKSide = CastlingState.eCastling_Enable_State,
            CastlingWQSide = CastlingState.eCastling_Enable_State,
            CastlingBKSide = CastlingState.eCastling_Enable_State,
            CastlingBQSide = CastlingState.eCastling_Enable_State
        };

        listCurrMovable = new List<ChessMoveManager.sMove>();

        // init board
        // piece list
        listPiece = new List<ChessPiece>();
        aBoardSquare = new ChessBoardSquare[ChessData.nNumPile,ChessData.nNumRank];

        ChessPiece currPiece = null;
        for( int i=0; i<ChessData.nNumPile; i++ ){
            for( int j=0; j<ChessData.nNumRank; j++ ){

                // movable square effect Particle System
                ParticleSystem movablePiecePSystem = MonoBehaviour.Instantiate( movablePSystemRef, Vector3.zero, Quaternion.identity ) as ParticleSystem;

                if( ChessData.aStartPiecePos[i,j] == PiecePlayerType.eNone_Piece ) {

                    aBoardSquare[i,j] = new ChessBoardSquare( null, movablePiecePSystem, i, j );
                }
                else
                {
                    Vector3 currPos = new Vector3( j - 3.5f, 0.0f, i - 3.5f );

                    Transform currTransform = aPieceRef[(int)ChessData.aStartPiecePos[i,j]];
                    Transform currPieceObject = MonoBehaviour.Instantiate( currTransform, currPos, currTransform.rotation ) as Transform;

                    if( i == 0 || i == 1 ) {

                        currPiece = new ChessPiece( currPieceObject.gameObject, PlayerSide.e_White,	ChessData.aStartPiecePos[i,j] );
                        listPiece.Add( currPiece );

                        aBoardSquare[i,j] = new ChessBoardSquare( currPiece, movablePiecePSystem, i, j );
                    }
                    else if( i == 6 || i == 7 ) {

                        currPiece = new ChessPiece( currPieceObject.gameObject, PlayerSide.e_Black,	ChessData.aStartPiecePos[i,j] );
                        listPiece.Add( currPiece );

                        aBoardSquare[i,j] = new ChessBoardSquare( currPiece, movablePiecePSystem, i, j );
                    }
                }
            }
        }

        // piece coloar
        SetWhiteSidePieceColor( Color.white );
        SetBlackSidePieceColor( Color.white );

        // board material
        if( chessMain.renderer.materials.Length == 2 ) {

            matBoard1 = chessMain.renderer.materials[0];
            matBoard2 = chessMain.renderer.materials[1];

            Color rgbaWhiteBoard, rgbaBlackBoard;
            rgbaWhiteBoard = new Color( 1.0f, 1.0f, 1.0f, 1.0f );
            rgbaBlackBoard = new Color( 0.039f, 0.34f, 0.22f, 1.0f );

            SetWhiteSideBoardColor( rgbaWhiteBoard );
            SetBlackSideBoardColor( rgbaBlackBoard );
        }

        // particle effect
        selectSquare = null;
        selectPiecePSystem = MonoBehaviour.Instantiate( selectPSystemRef, Vector3.zero, Quaternion.identity ) as ParticleSystem;
        selectPiecePSystem.Stop();
    }
Exemplo n.º 3
0
    // interface
    public void Init( BattleChessMain chessMain, Transform[] aPieceRef, ParticleSystem selectPSystemRef, ParticleSystem movablePSystemRef )
    {
        battleChessMain = chessMain;

        // etc property
        CurrTurn = PlayerSide.e_White;
        UserPlayerSide = PlayerSide.e_White;
        ThinkingTime = 18000;
        nCurrHalfMove = 0;
        nCurrTotalMove = 0;

        Ready = false;

        IsWhiteCallCheck = false;
        IsBlackCallCheck = false;

        IsWhiteInCheckMate = false;
        IsBlackInCheckMate = false;

        // move
        currWhiteMove = new ChessMover.sMove();
        currBlackMove = new ChessMover.sMove();

        listWhiteMoveHistory = new List<ChessMover.sMove>();
        listBlackMoveHistory = new List<ChessMover.sMove>();

        listCurrMovable = new List<ChessMover.sMove>();

        listCapturedPiece = new List<ChessPiece>();

        // init board
        bitBoard.Init();
        bitBoardVirtual.Init();

        // piece list
        listAllPiece = new List<ChessPiece>();
        listLivePiece = new List<ChessPiece>();
        aBoardSquare = new ChessBoardSquare[ChessData.nNumPile,ChessData.nNumRank];

        ChessPiece currPiece = null;
        for( int i=0; i<ChessData.nNumPile; i++ ){
            for( int j=0; j<ChessData.nNumRank; j++ ){

                // movable square effect Particle System
                //ParticleSystem movablePiecePSystem = MonoBehaviour.Instantiate( movablePSystemRef.gameObject, Vector3.zero, Quaternion.identity ) as ParticleSystem;
                ParticleSystem movablePiecePSystem = battleChessMain.gameObject.AddChildInstantiate<ParticleSystem>( movablePSystemRef, Vector3.zero, Quaternion.identity );

                if( ChessData.aStartPiecePos[i,j] == PiecePlayerType.eNone_Piece ) {

                    aBoardSquare[i,j] = new ChessBoardSquare( null, movablePiecePSystem, i, j );
                }
                else
                {
                    Vector3 currPos = new Vector3( j - 3.5f, 0.0f, i - 3.5f );

                    Transform currTransform = aPieceRef[(int)ChessData.aStartPiecePos[i,j]];
                    //Transform currPieceObject = MonoBehaviour.Instantiate( currTransform, currPos, currTransform.rotation ) as Transform;
                    Transform currPieceObject = battleChessMain.gameObject.AddChildInstantiate<Transform>( currTransform, currPos, currTransform.rotation );

                    if( i == 0 || i == 1 ) {

                        currPiece = new ChessPiece( currPieceObject.gameObject, PlayerSide.e_White,	ChessData.aStartPiecePos[i,j] );
                        listAllPiece.Add( currPiece );

                        aBoardSquare[i,j] = new ChessBoardSquare( currPiece, movablePiecePSystem, i, j );
                    }
                    else if( i == 6 || i == 7 ) {

                        currPiece = new ChessPiece( currPieceObject.gameObject, PlayerSide.e_Black,	ChessData.aStartPiecePos[i,j] );
                        listAllPiece.Add( currPiece );

                        aBoardSquare[i,j] = new ChessBoardSquare( currPiece, movablePiecePSystem, i, j );
                    }
                }
            }
        }

        // piece coloar
        SetWhiteSidePieceColor( Color.white );
        SetBlackSidePieceColor( Color.white );

        // board material
        if( chessMain.renderer.materials.Length == 2 ) {

            matBoard1 = chessMain.renderer.materials[0];
            matBoard2 = chessMain.renderer.materials[1];

            Color rgbaWhiteBoard, rgbaBlackBoard;
            rgbaWhiteBoard = new Color( 1.0f, 1.0f, 1.0f, 1.0f );
            rgbaBlackBoard = new Color( 0.039f, 0.34f, 0.22f, 1.0f );

            SetWhiteSideBoardColor( rgbaWhiteBoard );
            SetBlackSideBoardColor( rgbaBlackBoard );
        }

        // particle effect
        currSelectedSquare = null;
        //selectPiecePSystem = MonoBehaviour.Instantiate( selectPSystemRef, Vector3.zero, Quaternion.identity ) as ParticleSystem;
        selectPiecePSystem = battleChessMain.gameObject.AddChildInstantiate<ParticleSystem>( selectPSystemRef, Vector3.zero, Quaternion.identity );
        selectPiecePSystem.Stop();
    }