/// <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); }
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); }
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); } }
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; } }
public void MakeTurn(Hand selection) => turnManager.SendMove((byte)selection, true);
public void TurnEnd() { _turnManager.SendMove(null, true); }
/// <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; } } }
/// <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; } }