예제 #1
0
    /// <summary>
    /// 自分のターンを終了する
    /// </summary>
    /// <param name="source"></param>
    /// <param name="destination"></param>
    /// <param name="IsBring"></param>
    public void TurnEnd(BoardIndex source, BoardIndex destination, bool IsBring)
    {
        /* 自分のコマを非アクティブにする */
        List <BoardIndex> indexList = board.GetMyTopBoardIndex();

        foreach (BoardIndex index in indexList)
        {
            GameObject obj = board.GetObjByIndex(index);
            obj.GetComponent <BattleTopCtrl>().SetIsMyTurn(false);
        }

        //自分の持ち駒をすべてアクティブにする
        List <GameObject> objList = myTopStage.GetGameObjectAll();

        foreach (GameObject obj in objList)
        {
            obj.GetComponent <BattleTopCtrl>().SetIsMyTurn(false);
        }

        /* ターン情報通知 */
        TopMoveInf inf  = new TopMoveInf(source, destination, IsBring);
        float      move = ConvMoveInf(inf);

        Debug.Log(move);
        //自分のターンはここで終了
        turnManager.SendMove(move, true);
    }
예제 #2
0
    //プレイヤーのムーブが終了したとき
    public void OnPlayerFinished(Player player, int turn, object move)
    {
        //ターンは1から開始されるので-1しておく
        int activePlayerIndex = (turn - 1) % 2;

        /* 自分のターンでなければに相手からのメッセージを受信 */
        if (myTurnIndex != activePlayerIndex)
        {
            //送信されてきたデータをもとにオブジェクトを動かす
            if (player != PhotonNetwork.LocalPlayer)
            {
                float inf = (float)move;
                if (inf != 0)
                {
                    TopMoveInf moveInf = ConvSetMoveInf(inf);
                    BoardUpDate(moveInf);
                }
            }
        }
    }
예제 #3
0
    /// <summary>
    /// 移動情報をfloat型に変換する
    /// </summary>
    /// <param name="inf"></param>
    /// <returns></returns>
    public float ConvMoveInf(TopMoveInf inf)
    {
        float i = 0x00000000;

        if (inf.IsBring)
        {
            i += 1 * Mathf.Pow(0x10, 4);
        }
        else
        {
            i += 2 * Mathf.Pow(0x10, 4);
        }

        i += inf.source.xIndex * Mathf.Pow(0x10, 3);      /* 4桁目 */
        i += inf.source.yIndex * Mathf.Pow(0x10, 2);      /* 3桁目 */
        i += inf.destination.xIndex * Mathf.Pow(0x10, 1); /* 2桁目 */
        i += inf.destination.yIndex * Mathf.Pow(0x10, 0); /* 1桁目 */

        return(i);
    }
예제 #4
0
    /// <summary>
    /// 盤面アップデート
    /// </summary>
    /// <param name="inf"></param>
    private void BoardUpDate(TopMoveInf inf)
    {
        BoardIndex source;

        //持ち駒かどうかによってソースは変わる
        if (inf.IsBring)
        {
            source = ComvOppenentIndexChild(inf.source);
        }
        else
        {
            source = ComvOpponentIndex(inf.source);
        }
        BoardIndex distination = ComvOpponentIndex(inf.destination);


        //行先にコマがあれば削除して相手の持ち駒とする
        if (board.ChkBoardTop(distination))
        {
            GameObject obj = board.GetObjByIndex(distination);
            board.DelBoardInf(distination);

            int id = obj.GetComponent <BattleTopCtrl>().topId;
            LostATop(obj);
        }

        //盤面情報更新
        if (inf.IsBring)
        {
            GameObject obj = opponentTopStage.GetObjByIndex(source);
            //相手からの情報なので相手の持ち駒を削除
            opponentTopStage.DelBoardInf(source);

            int     topId  = obj.GetComponent <BattleTopCtrl>().topId;
            Vector2 tmpVec = board.GetBoardPosByIndex(distination);
            obj.transform.position = new Vector3(tmpVec.x, 1, tmpVec.y);
            board.SetBoardInf(topId, obj, false, distination);
            PaintCell(new BoardIndex(distination.xIndex, distination.yIndex), false);
        }
        else
        {
            GameObject obj = board.GetObjByIndex(source);

            board.DelBoardInf(source);

            int     topId  = obj.GetComponent <BattleTopCtrl>().topId;
            Vector2 tmpVec = board.GetBoardPosByIndex(distination);
            obj.transform.position = new Vector3(tmpVec.x, 1, tmpVec.y);
            board.SetBoardInf(topId, obj, false, distination);

            //とびがないかチェック(狙撃手はとび確認不要)
            if (topId != 9)
            {
                List <BoardIndex> indexList =
                    board.GetCellIndexBitweenCells(source, distination);

                foreach (BoardIndex index in indexList)
                {
                    PaintCell(index, false);
                }
            }
            PaintCell(new BoardIndex(distination.xIndex, distination.yIndex), false);
        }
    }