SelectBattleMode.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using Photon.Pun;
  6. using Photon.Realtime;
  7. using UnityEngine.SceneManagement;
  8. using System;
  9. using System.Linq;
  10. using Hashtable = ExitGames.Client.Photon.Hashtable;
  11. using UnityEngine.Events;
  12. using UnityEngine.EventSystems;
  13. public class SelectBattleMode : MonoBehaviour
  14. {
  15. [Header("バトルモード選択")]
  16. public YesNoObject selectBattleModeWindow;
  17. [Header("ルームマッチ選択")]
  18. [SerializeField] YesNoObject selectRoomMatchWindow;
  19. [Header("ルームID入力")]
  20. [SerializeField] EnterRoom enterRoom;
  21. [Header("ルームマッチマネージャ")]
  22. [SerializeField] RoomManager roomManager;
  23. [Header("LoadingObject")]
  24. public LoadingObject loadingObject;
  25. public void OffSelectBattleMode()
  26. {
  27. Off();
  28. }
  29. public void Off()
  30. {
  31. this.gameObject.SetActive(false);
  32. }
  33. bool connecting = false;
  34. public void SetUpSelectBattleMode()
  35. {
  36. if (connecting)
  37. {
  38. return;
  39. }
  40. ContinuousController.instance.StartCoroutine(SetUpSelectBattleModeCoroutine());
  41. }
  42. public IEnumerator SetUpSelectBattleModeCoroutine()
  43. {
  44. selectBattleModeWindow.CloseOnButtonClicked = false;
  45. selectRoomMatchWindow.CloseOnButtonClicked = false;
  46. selectBattleModeWindow.Off();
  47. selectRoomMatchWindow.Off();
  48. enterRoom.Off();
  49. Opening.instance.battle.selectBattleDeck.Off();
  50. connecting = true;
  51. if (PhotonNetwork.IsConnected)
  52. {
  53. yield return ContinuousController.instance.StartCoroutine(loadingObject.StartLoading("Disconnecting"));
  54. yield return ContinuousController.instance.StartCoroutine(PhotonUtility.DisconnectCoroutine());
  55. yield return ContinuousController.instance.StartCoroutine(loadingObject.EndLoading());
  56. }
  57. connecting = false;
  58. this.gameObject.SetActive(true);
  59. StartSelectBattleMode();
  60. }
  61. public void StartSelectBattleMode()
  62. {
  63. List<UnityAction> Commands = new List<UnityAction>()
  64. {
  65. () =>
  66. {
  67. //ランダムマッチ
  68. StartSelectBattleDeck(false);
  69. },
  70. () =>
  71. {
  72. //ルームマッチ
  73. StartSelectRoomMatch();
  74. },
  75. () =>
  76. {
  77. //AI戦
  78. StartSelectBattleDeck(true);
  79. },
  80. };
  81. List<string> CommandTexts = new List<string>()
  82. {
  83. LocalizeUtility.GetLocalizedString(
  84. EngMessage:"Random Match",
  85. JpnMessage:"ランダムマッチ"
  86. ),
  87. LocalizeUtility.GetLocalizedString(
  88. EngMessage:"Room Match",
  89. JpnMessage:"ルームマッチ"
  90. ),
  91. LocalizeUtility.GetLocalizedString(
  92. EngMessage:"Bot Match",
  93. JpnMessage:"Bot戦"
  94. ),
  95. };
  96. selectBattleModeWindow.SetUpYesNoObject(
  97. Commands,
  98. CommandTexts,
  99. LocalizeUtility.GetLocalizedString(
  100. EngMessage: "Please select the mode to play.",
  101. JpnMessage: "対戦モードを選択してください"
  102. ),
  103. true);
  104. }
  105. void StartSelectBattleDeck(bool isAI)
  106. {
  107. Opening.instance.OffYesNoObjects();
  108. Opening.instance.deck.trialDraw.Close();
  109. Opening.instance.deck.deckListPanel.Close();
  110. enterRoom.Close_(false);
  111. selectRoomMatchWindow.Close_(false);
  112. ContinuousController.instance.isAI = isAI;
  113. ContinuousController.instance.isRandomMatch = true;
  114. Opening.instance.battle.selectBattleDeck.Off();
  115. if (!ContinuousController.instance.isAI)
  116. {
  117. Opening.instance.battle.selectBattleDeck.SetUpSelectBattleDeck(Opening.instance.battle.selectBattleDeck.OnClickSelectButton_RandomMatch, 0);
  118. }
  119. else
  120. {
  121. Opening.instance.battle.selectBattleDeck.SetUpSelectBattleDeck(() =>
  122. {
  123. Opening.instance.battle.selectBattleDeck.OnClickSelectButton_BotMatch();
  124. ContinuousController.instance.StartCoroutine(StartBattleCoroutine());
  125. }
  126. , 0);
  127. }
  128. IEnumerator StartBattleCoroutine()
  129. {
  130. selectRoomMatchWindow.Close_(false);
  131. enterRoom.Close_(false);
  132. ContinuousController.instance.StartCoroutine(Opening.instance.OpeningBGM.FadeOut(0.1f));
  133. yield return ContinuousController.instance.StartCoroutine(Opening.instance.LoadingObject.StartLoading("Now Loading"));
  134. foreach (Camera camera in Opening.instance.openingCameras)
  135. {
  136. camera.gameObject.SetActive(false);
  137. }
  138. Opening.instance.OffYesNoObjects();
  139. Opening.instance.deck.trialDraw.Close();
  140. Opening.instance.deck.deckListPanel.Close();
  141. yield return new WaitForSeconds(0.1f);
  142. SceneManager.LoadSceneAsync("BattleScene", LoadSceneMode.Additive);
  143. }
  144. }
  145. public void StartSelectRoomMatch()
  146. {
  147. Opening.instance.OffYesNoObjects();
  148. Opening.instance.deck.trialDraw.Close();
  149. Opening.instance.deck.deckListPanel.Close();
  150. Opening.instance.battle.selectBattleDeck.Off();
  151. ContinuousController.instance.isAI = false;
  152. List<UnityAction> Commands = new List<UnityAction>()
  153. {
  154. () =>
  155. {
  156. //部屋を作る
  157. StartCreateRoom();
  158. },
  159. () =>
  160. {
  161. //部屋に入る
  162. StartEnterRoomID();
  163. },
  164. };
  165. List<string> CommandTexts = new List<string>()
  166. {
  167. LocalizeUtility.GetLocalizedString(
  168. EngMessage:"Create Room",
  169. JpnMessage:"ルーム作成"
  170. ),
  171. LocalizeUtility.GetLocalizedString(
  172. EngMessage:"Join Room",
  173. JpnMessage:"ルームに入る"
  174. ),
  175. };
  176. selectRoomMatchWindow.SetUpYesNoObject(
  177. Commands,
  178. CommandTexts,
  179. LocalizeUtility.GetLocalizedString(
  180. EngMessage: "Please choose between creating a room or joining an existing one.",
  181. JpnMessage: "ルームを作成するかルームに入るか\n選択してください"
  182. ),
  183. true);
  184. }
  185. void StartCreateRoom()
  186. {
  187. roomManager.SetUpRoom();
  188. }
  189. void StartEnterRoomID()
  190. {
  191. Opening.instance.OffYesNoObjects();
  192. Opening.instance.deck.trialDraw.Close();
  193. Opening.instance.deck.deckListPanel.Close();
  194. enterRoom.SetUpEnterRoom();
  195. }
  196. public void OnClickCloseEnterRoomWindow()
  197. {
  198. enterRoom.Close_(false);
  199. ContinuousController.instance.PlaySE(Opening.instance.CancelSE);
  200. Opening.instance.OffYesNoObjects();
  201. Opening.instance.deck.trialDraw.Close();
  202. Opening.instance.deck.deckListPanel.Close();
  203. }
  204. public void OnClickCloseSelectRoomMatchWindow()
  205. {
  206. enterRoom.Close_(false);
  207. selectRoomMatchWindow.Close_(false);
  208. ContinuousController.instance.PlaySE(Opening.instance.CancelSE);
  209. Opening.instance.OffYesNoObjects();
  210. Opening.instance.deck.trialDraw.Close();
  211. Opening.instance.deck.deckListPanel.Close();
  212. }
  213. public void OnClickSelectBattleModeWindow()
  214. {
  215. enterRoom.Close_(true);
  216. selectRoomMatchWindow.Close_(false);
  217. selectBattleModeWindow.Close_(false);
  218. ContinuousController.instance.PlaySE(Opening.instance.CancelSE);
  219. Opening.instance.OffYesNoObjects();
  220. Opening.instance.deck.trialDraw.Close();
  221. Opening.instance.deck.deckListPanel.Close();
  222. ContinuousController.instance.StartCoroutine(OnClickSelectBattleModeWindowIEnumerator());
  223. }
  224. IEnumerator OnClickSelectBattleModeWindowIEnumerator()
  225. {
  226. yield return new WaitForSeconds(0.3f);
  227. Opening.instance.battle.OffBattle();
  228. Opening.instance.home.SetUpHomeMode_Disconnect();
  229. this.gameObject.SetActive(false);
  230. }
  231. }