SelectBattleMode.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  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. if (PhotonNetwork.IsConnected)
  51. {
  52. yield return ContinuousController.instance.StartCoroutine(PhotonUtility.DisconnectCoroutine());
  53. }
  54. this.gameObject.SetActive(true);
  55. StartSelectBattleMode();
  56. }
  57. public void StartSelectBattleMode()
  58. {
  59. List<UnityAction> Commands = new List<UnityAction>()
  60. {
  61. () =>
  62. {
  63. //ランダムマッチ
  64. StartSelectBattleDeck(false);
  65. },
  66. () =>
  67. {
  68. //ルームマッチ
  69. StartSelectRoomMatch();
  70. },
  71. () =>
  72. {
  73. //AI戦
  74. StartSelectBattleDeck(true);
  75. },
  76. };
  77. List<string> CommandTexts = new List<string>()
  78. {
  79. LocalizeUtility.GetLocalizedString(
  80. EngMessage:"Random Match",
  81. JpnMessage:"ランダムマッチ"
  82. ),
  83. LocalizeUtility.GetLocalizedString(
  84. EngMessage:"Room Match",
  85. JpnMessage:"ルームマッチ"
  86. ),
  87. LocalizeUtility.GetLocalizedString(
  88. EngMessage:"Bot Match",
  89. JpnMessage:"Bot戦"
  90. ),
  91. };
  92. selectBattleModeWindow.SetUpYesNoObject(
  93. Commands,
  94. CommandTexts,
  95. LocalizeUtility.GetLocalizedString(
  96. EngMessage: "Please select the mode to play.",
  97. JpnMessage: "対戦モードを選択してください"
  98. ),
  99. true);
  100. }
  101. void StartSelectBattleDeck(bool isAI)
  102. {
  103. Opening.instance.OffYesNoObjects();
  104. Opening.instance.deck.trialDraw.Close();
  105. Opening.instance.deck.deckListPanel.Close();
  106. enterRoom.Close_(false);
  107. selectRoomMatchWindow.Close_(false);
  108. ContinuousController.instance.isAI = isAI;
  109. ContinuousController.instance.isRandomMatch = true;
  110. Opening.instance.battle.selectBattleDeck.Off();
  111. if (!ContinuousController.instance.isAI)
  112. {
  113. Opening.instance.battle.selectBattleDeck.SetUpSelectBattleDeck(Opening.instance.battle.selectBattleDeck.OnClickSelectButton_RandomMatch, 0);
  114. }
  115. else
  116. {
  117. Opening.instance.battle.selectBattleDeck.SetUpSelectBattleDeck(() =>
  118. {
  119. Opening.instance.battle.selectBattleDeck.OnClickSelectButton_BotMatch();
  120. ContinuousController.instance.StartCoroutine(StartBattleCoroutine());
  121. }
  122. , 0);
  123. }
  124. IEnumerator StartBattleCoroutine()
  125. {
  126. selectRoomMatchWindow.Close_(false);
  127. enterRoom.Close_(false);
  128. ContinuousController.instance.StartCoroutine(Opening.instance.OpeningBGM.FadeOut(0.1f));
  129. yield return ContinuousController.instance.StartCoroutine(Opening.instance.LoadingObject.StartLoading("Now Loading"));
  130. foreach (Camera camera in Opening.instance.openingCameras)
  131. {
  132. camera.gameObject.SetActive(false);
  133. }
  134. Opening.instance.OffYesNoObjects();
  135. Opening.instance.deck.trialDraw.Close();
  136. Opening.instance.deck.deckListPanel.Close();
  137. yield return new WaitForSeconds(0.1f);
  138. SceneManager.LoadSceneAsync("BattleScene", LoadSceneMode.Additive);
  139. }
  140. }
  141. public void StartSelectRoomMatch()
  142. {
  143. Opening.instance.OffYesNoObjects();
  144. Opening.instance.deck.trialDraw.Close();
  145. Opening.instance.deck.deckListPanel.Close();
  146. Opening.instance.battle.selectBattleDeck.Off();
  147. ContinuousController.instance.isAI = false;
  148. List<UnityAction> Commands = new List<UnityAction>()
  149. {
  150. () =>
  151. {
  152. //部屋を作る
  153. StartCreateRoom();
  154. },
  155. () =>
  156. {
  157. //部屋に入る
  158. StartEnterRoomID();
  159. },
  160. };
  161. List<string> CommandTexts = new List<string>()
  162. {
  163. LocalizeUtility.GetLocalizedString(
  164. EngMessage:"Create Room",
  165. JpnMessage:"ルーム作成"
  166. ),
  167. LocalizeUtility.GetLocalizedString(
  168. EngMessage:"Join Room",
  169. JpnMessage:"ルームに入る"
  170. ),
  171. };
  172. selectRoomMatchWindow.SetUpYesNoObject(
  173. Commands,
  174. CommandTexts,
  175. LocalizeUtility.GetLocalizedString(
  176. EngMessage: "Please choose between creating a room or joining an existing one.",
  177. JpnMessage: "ルームを作成するかルームに入るか\n選択してください"
  178. ),
  179. true);
  180. }
  181. void StartCreateRoom()
  182. {
  183. roomManager.SetUpRoom();
  184. }
  185. void StartEnterRoomID()
  186. {
  187. Opening.instance.OffYesNoObjects();
  188. Opening.instance.deck.trialDraw.Close();
  189. Opening.instance.deck.deckListPanel.Close();
  190. enterRoom.SetUpEnterRoom();
  191. }
  192. public void OnClickCloseEnterRoomWindow()
  193. {
  194. enterRoom.Close_(false);
  195. ContinuousController.instance.PlaySE(Opening.instance.CancelSE);
  196. Opening.instance.OffYesNoObjects();
  197. Opening.instance.deck.trialDraw.Close();
  198. Opening.instance.deck.deckListPanel.Close();
  199. }
  200. public void OnClickCloseSelectRoomMatchWindow()
  201. {
  202. enterRoom.Close_(false);
  203. selectRoomMatchWindow.Close_(false);
  204. ContinuousController.instance.PlaySE(Opening.instance.CancelSE);
  205. Opening.instance.OffYesNoObjects();
  206. Opening.instance.deck.trialDraw.Close();
  207. Opening.instance.deck.deckListPanel.Close();
  208. }
  209. public void OnClickSelectBattleModeWindow()
  210. {
  211. enterRoom.Close_(true);
  212. selectRoomMatchWindow.Close_(false);
  213. selectBattleModeWindow.Close_(false);
  214. ContinuousController.instance.PlaySE(Opening.instance.CancelSE);
  215. Opening.instance.OffYesNoObjects();
  216. Opening.instance.deck.trialDraw.Close();
  217. Opening.instance.deck.deckListPanel.Close();
  218. ContinuousController.instance.StartCoroutine(OnClickSelectBattleModeWindowIEnumerator());
  219. }
  220. IEnumerator OnClickSelectBattleModeWindowIEnumerator()
  221. {
  222. yield return new WaitForSeconds(0.3f);
  223. Opening.instance.battle.OffBattle();
  224. Opening.instance.home.SetUpHomeMode_Disconnect();
  225. this.gameObject.SetActive(false);
  226. }
  227. }