SelectBattleMode.cs 8.5 KB

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