示例#1
0
        //駒の移動範囲取得と強調
        private void ChangeMovePoint()
        {
            selectAllRelativePieceMoveRange = GameManager.ManagerStore.piecesManager.GetMoveRange(selectPiece.GetKind());
            selectRelativePieceMoveRange    = selectAllRelativePieceMoveRange[selectPiece.GetShape()];
            //絶対位置に変換し、移動可能なマス(敵の駒が存在するか、駒がない)をハイライト
            selectAbsolutePieceMoveRange = new List <int>();
            selectedPieceDirection       = selectPiece.GetForwardDirection();
            int absFaceId;

            foreach (int moveFace in selectRelativePieceMoveRange)
            {
                absFaceId = GameManager.ManagerStore.fieldManager.ConvertRelative2AbsId(selectPiece.GetFaceId(), moveFace, selectedPieceDirection);

                //Queenの二週目の挙動を無理やり矯正(kisuke)
                if (selectPiece.GetKind() == PieceKind.Queen && moveFace == (selectPiece.GetShape()))
                {
                    var fFaceId_ = selectPiece.GetForwardFaceId();
                    var ffFace_  = ManagerStore.fieldManager.GetFace2Face(fFaceId_, selectPiece.GetFaceId());
                    absFaceId = ffFace_.GetComponent <Field.SurfaceInfo>().FaceId;
                }

                int returnPieceId = ManagerStore.fieldManager.IsPieceOnFace(absFaceId);
                if (returnPieceId == -1 || (returnPieceId > -1 && ManagerStore.cp.HasPiece(returnPieceId) == true))
                {
                    selectAbsolutePieceMoveRange.Add(absFaceId);
                }
            }
            GameManager.ManagerStore.fieldManager.PointMovableFace(selectAbsolutePieceMoveRange);
        }
示例#2
0
        //駒を実際に動かす ターン交代 勝利条件確認
        private void ExcuteMotion(Piece.Pieces piece, int moveFaceId, int rotateDirection)
        {
            fromFaceIdforRecord = piece.GetFaceId();
            toFaceIdforRecord   = moveFaceId;
            if (moveFaceId > -1)
            {
                if (CanMoveCollision(TM.IsPlayerTurn(), moveFaceId, piece) == true)
                {
                    //Debug.Log("pi:"+piece.IsAnimate());
                    piece.MoveBeginEffect();
                    //Debug.Log("pi:"+piece.IsAnimate());
                    piece.MovePiece(moveFaceId);
                    piece.MoveFinishEffect();
                    //Debug.Log("pi:" + piece.IsAnimate());

                    if (effectHumanPiece == -1)
                    {
                        GameManager.ResultData.positionRecord.Add(Position.PositionData.SaveByPlayer(ManagerStore.humanPlayer, ManagerStore.cp));
                        //Move.ReversibleMove rm = new Move.ReversibleMove();
                        //rm.InitNotCapturedMove(fromFaceIdforRecord, toFaceIdforRecord);
                        //GameManager.ResultData.moveRecord.Add(rm);
                    }
                }
            }
            else
            {
                //駒を移動しない場合Record記録 移動する場合はエフェクト終了後に記録
                GameManager.ResultData.positionRecord.Add(Position.PositionData.SaveByPlayer(ManagerStore.humanPlayer, ManagerStore.cp));
                //Move.ReversibleMove rm = new Move.ReversibleMove();
                //rm.InitRotation(fromFaceIdforRecord,rotateDirection);
                //GameManager.ResultData.moveRecord.Add(rm);
            }
            if (rotateDirection != 0)
            {
                piece.RotatePiece(rotateDirection);
            }
            GJ.WinnerCheck();
            TM.ChangeTuen();
        }