예제 #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 SendBlockerMove(Cell block)
    {
        Debug.Log("Used Blocker");
        //string block = "BLOCKER MOFO";
        int    val      = 0;
        int    row      = block.row;
        int    col      = block.collum;
        string cellName = block.gameObject.name;

        object[] message = { val, row, col, cellName };

        turnManager.SendMove(message, false);
    }
예제 #3
0
 public void OnPlayerFinished(PhotonPlayer player, int turn, object move)
 {
     print($"OnPlayerFinished. Player: {player} ,Turn: {turn} ,Move: {move}");
     t.Info();
     if (t.IsOver)
     {
         return;
     }
     if (!player.IsLocal && move != null)
     {
         t.SendMove(null, true);
     }
 }
예제 #4
0
    void Update()
    {
        // 自分のオブジェクトではない場合は操作させない、何もしない
        if (!m_view.IsMine)
        {
            return;
        }

        // まだ落としていないオブジェクトは操作できる
        if (!m_isDropped)
        {
            float v = Input.GetAxisRaw("Vertical");
            float h = Input.GetAxisRaw("Horizontal");
            m_rb.velocity = Vector2.right * m_moveSpeed * h;

            if (v > 0)
            {
                transform.Rotate(Vector3.back, m_rotateSpeed * Time.deltaTime);
            }
            else if (v < 0)
            {
                m_isDropped = true;
                m_view.RPC("Drop", RpcTarget.All, null);
                m_turnManager.SendMove(null, true);
            }
        }
    }
    public void OnClick(BaseEventData d)
    {
        print("Turn: " + turnManager.Turn);
        print("Click");
        print("text != \"\": " + (gameOverText.text != ""));
        if (!isReady)
        {
            return;
        }
        if (gameOverText.text != "" || turnManager.IsFinishedByMe || turnManager.IsOver)
        {
            return;
        }
        bool isMaster = PhotonNetwork.player.IsMasterClient;
        bool isOdd    = turnManager.Turn % 2 != 0;

        if (isMaster != isOdd)
        {
            return;
        }
        var p = (PointerEventData)d;

        if (p.IsPointerMoving())
        {
            return;
        }
        var cell  = map.WorldToCell(Camera.main.ScreenToWorldPoint(p.pressPosition));
        var index = cell - offset;

        print("Index: " + index);
        if (index.x < 0 || index.x >= array.Length || index.y < 0 || index.y >= array[0].Length || array[index.x][index.y] != Empty)
        {
            return;
        }

        print("Click successful !");
        array[index.x][index.y] = isMaster ? PlayerO : PlayerX;
        map.SetTile(cell, isMaster ? tileO : tileX);
        //array[index.x][index.y] = PlayerO;
        //map.SetTile(cell, tileO);
        bool isWin = CheckWin(index);

        turnManager.SendMove(new MoveData()
        {
            index = index, state = isWin ? MoveData.State.WIN : MoveData.State.NORMAL
        }, true);
    }
    public void onGridTabClick(string val)
    {
        if (isGameOver [PhotonNetwork.player.ID - 1])
        {
            return;
        }

        if (isClicked)
        {
            return;
        }

        if (isBlasting)
        {
            return;
        }

        int x = Int32.Parse(val[0].ToString());
        int y = Int32.Parse(val[1].ToString());

        if (!textsValues [x, y].transform.parent.CompareTag("-1"))
        {
            if (!textsValues [x, y].transform.parent.CompareTag(currentTurn.ToString()))
            {
                return;
            }
        }

        if ((PhotonNetwork.player.ID - 1) != currentTurn)
        {
            return;
        }

        isClicked = true;
        turnManager.SendMove(val, false);
        callLogic(val);
    }
    void Update()
    {
        // 自分の番ではない時は何もしない
        if (!m_isMyTurn)
        {
            return;
        }

        // カメラの位置 → マウスでクリックした場所に Ray を飛ばすように設定する
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit; // out パラメータで Ray の衝突情報を受け取るための変数
                        // Ray を飛ばして、コライダーに当たったかどうかを戻り値で受け取る
        bool isHit = Physics.Raycast(ray, out hit);

        // Ray が当たったかどうかで異なる処理をする
        if (isHit)
        {
            // Ray が当たっている時は線を引くために hitpoint にアンカーを移動する
            Vector3 lookAtPosition = hit.point;
            lookAtPosition.y = this.transform.position.y;
            this.transform.LookAt(lookAtPosition);
            m_hitPoint.position = hit.point;
            // Ray が当たっている状態で Fire したら
            if (Input.GetButtonUp("Fire1"))
            {
                // 自分のターンが終わったことを通知する
                PunTurnManager turnManager = GameObject.FindObjectOfType <PunTurnManager>();
                turnManager.SendMove(null, true);                                                 // 第一引数でメッセージを送れるが、今回は何もしない / 第二引数に true を渡すことで「自分のターンを終了する」ことを通知する
                FinishMyTurn();                                                                   // ローカルでの自ターン管理をする
                PhotonNetwork.Instantiate(m_explosionPrefabName, hit.point, Quaternion.identity); // 爆発エフェクトを生成する
            }
        }
        else
        {
            // Ray が当たっていない時は、レーザーを消すために銃口とレーザーの終点を同じ位置にする
            m_hitPoint.position = m_muzzle.position;
        }
    }
예제 #8
0
 public void MakeTurn(Hand selection) => turnManager.SendMove((byte)selection, true);
예제 #9
0
 public void TurnEnd()
 {
     _turnManager.SendMove(null, true);
 }
예제 #10
0
    /// <summary>
    /// 当玩家有动作时调用(但是没有完成该回合)
    /// </summary>
    /// <param name="player">玩家引用</param>
    /// <param name="turn">回合索引</param>
    /// <param name="move">移动对象数据</param>
    /// <param name="photonPlayer">Photon player.</param>
    public void OnPlayerMove(PhotonPlayer photonPlayer, int turn, object move)
    {
        //Debug.Log("OnPlayerMove: " + photonPlayer + " turn: " + turn + " action: " + move);
        string strMove = move.ToString();

        if (strMove.StartsWith("+C"))
        {
            if (!photonPlayer.IsLocal)
            {
                string[] strArr = strMove.Split(char.Parse(" "));
                if (strArr [0] == "+ConfirmedSelect")
                {
                    ConfirmedSelect(int.Parse(strArr [1]));
                }
                else
                {
                    CancelSelected(int.Parse(strArr [1]));
                }
            }
        }
        else
        {
            switch (strMove)
            {
            case "Hurry":               //催棋
                PlayMusic(hurryUp);
                break;

            case "Restart":
                if (!photonPlayer.IsLocal)
                {
                    PopRequest("重新开始对局");
                }
                break;

            case "Draw":
                if (!photonPlayer.IsLocal)
                {
                    PopRequest("和棋");
                }
                break;

            case "Back":
                if (!photonPlayer.IsLocal)
                {
                    PopRequest("悔棋");
                }
                break;

            case "重新开始对局Yes":
                Restart();
                break;

            case "重新开始对局No":
                LocalGameStatusText.text = "重新开局失败";
                break;

            case "和棋Yes":
                turnManager.SendMove("Draw", true);
                break;

            case "和棋No":
                LocalGameStatusText.text = "和棋失败";
                break;

            case "悔棋Yes":
                BackOne();
                break;

            case "悔棋No":
                LocalGameStatusText.text = "悔棋失败";
                break;
            }
        }
    }
예제 #11
0
    /// <summary>
    /// 当玩家有动作时调用(但是没有完成该回合)
    /// </summary>
    /// <param name="player">玩家引用</param>
    /// <param name="turn">回合索引</param>
    /// <param name="move">移动对象数据</param>
    /// <param name="photonPlayer">Photon player.</param>
    public void OnPlayerMove(PhotonPlayer photonPlayer, int turn, object move)
    {
        Debug.Log("OnPlayerMove: " + photonPlayer + " turn: " + turn + " action: " + move);
        string strMove = move.ToString();

        switch (strMove)
        {
        case "Hurry":           //催棋
            PlayMusic(hurryUp);
            break;

        case "Restart":
            if (!photonPlayer.IsLocal)
            {
                PopRequest("重新开始对局");
            }
            else
            {
                localSelection = true;
            }
            break;

        case "Draw":
            if (!photonPlayer.IsLocal)
            {
                PopRequest("和棋");
            }
            else
            {
                localSelection = true;
            }
            break;

        case "Back":
            if (!photonPlayer.IsLocal)
            {
                PopRequest("悔棋");
            }
            else
            {
                localSelection = true;
            }
            break;

        case "重新开始对局Yes":
            Restart();
            break;

        case "重新开始对局No":
            GameStatusText.text = "重新开局失败";
            break;

        case "和棋Yes":
            turnManager.SendMove("Draw", true);
            break;

        case "和棋No":
            GameStatusText.text = "和棋失败";
            break;

        case "悔棋Yes":
            BackOne();
            break;

        case "悔棋No":
            GameStatusText.text = "悔棋失败";
            break;

        default:
            break;
        }
    }