EnterRoom.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using Photon.Pun;
  6. using UnityEngine.Events;
  7. public class EnterRoom : MonoBehaviourPunCallbacks
  8. {
  9. private static readonly int OpenHash = Animator.StringToHash("Open");
  10. private static readonly int CloseHash = Animator.StringToHash("Close");
  11. [Header("Room ID InputField")]
  12. public InputField RoomIDInputField;
  13. [Header("Animator")]
  14. public Animator anim;
  15. [Header("Room screen")]
  16. public RoomManager roomManager;
  17. [Header("Enter Room Button")]
  18. public Button EnterRoomButton;
  19. Image _enterRoomButtonImage;
  20. private void Start()
  21. {
  22. _enterRoomButtonImage = EnterRoomButton.GetComponent<Image>();
  23. }
  24. public void SetUpEnterRoom()
  25. {
  26. if (this.gameObject.activeSelf)
  27. {
  28. return;
  29. }
  30. RoomIDInputField.text = "";
  31. this.gameObject.SetActive(true);
  32. anim.SafeSetInt(OpenHash, 1);
  33. anim.SafeSetInt(CloseHash, 0);
  34. }
  35. public void Close_(bool playSE)
  36. {
  37. if (playSE)
  38. {
  39. Opening.instance.PlayCancelSE();
  40. }
  41. anim.SafeSetInt(OpenHash, 0);
  42. anim.SafeSetInt(CloseHash, 1);
  43. }
  44. public void Off()
  45. {
  46. this.gameObject.SetActive(false);
  47. }
  48. bool _canClick = true;
  49. public void OnClickEnterRoomButton()
  50. {
  51. if (CanClickEnterRoomButton() && _canClick)
  52. {
  53. ContinuousController.instance.StartCoroutine(JoinRoomCoroutine());
  54. }
  55. }
  56. IEnumerator JoinRoomCoroutine()
  57. {
  58. _canClick = false;
  59. if (!PhotonNetwork.IsConnectedAndReady)
  60. {
  61. yield return ContinuousController.instance.StartCoroutine(PhotonUtility.ConnectToMasterServerCoroutine());
  62. }
  63. yield return new WaitUntil(() => PhotonNetwork.IsConnectedAndReady);
  64. if (!PhotonNetwork.InLobby)
  65. {
  66. PhotonNetwork.JoinLobby();
  67. }
  68. yield return new WaitUntil(() => PhotonNetwork.InLobby && PhotonNetwork.IsConnectedAndReady);
  69. PhotonNetwork.JoinRoom(RoomIDInputField.text + "-" + ContinuousController.instance.useBanlist);
  70. _canClick = true;
  71. }
  72. public override void OnJoinedRoom()
  73. {
  74. ContinuousController.instance.isAI = false;
  75. ContinuousController.instance.isRandomMatch = false;
  76. roomManager.SetUpRoom();
  77. Close_(false);
  78. }
  79. public override void OnJoinRoomFailed(short returnCode, string message)
  80. {
  81. Debug.Log($"{returnCode} - {message}");
  82. Opening.instance.PlayDecisionSE();
  83. Opening.instance.SetUpActiveYesNoObject(
  84. new List<UnityAction>() { null },
  85. new List<string>() { "OK" },
  86. LocalizeUtility.GetLocalizedString(
  87. EngMessage: "Error!\nThe room could not be found.",
  88. JpnMessage: "エラー!\nルームが見つかりませんでした"
  89. ),
  90. true);
  91. }
  92. bool CanClickEnterRoomButton()
  93. {
  94. if (!string.IsNullOrEmpty(RoomIDInputField.text))
  95. {
  96. if (RoomIDInputField.text.Length == 5)
  97. {
  98. return true;
  99. }
  100. }
  101. return false;
  102. }
  103. private void Update()
  104. {
  105. if (CanClickEnterRoomButton())
  106. {
  107. EnterRoomButton.enabled = true;
  108. if (_enterRoomButtonImage != null)
  109. {
  110. _enterRoomButtonImage.color = Color.white;
  111. }
  112. }
  113. else
  114. {
  115. EnterRoomButton.enabled = false;
  116. if (_enterRoomButtonImage != null)
  117. {
  118. _enterRoomButtonImage.color = new Color32(144, 144, 144, 255);
  119. }
  120. }
  121. }
  122. }