ModeSelectView.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. using AdaptUI;
  2. using AppUI.Bluetooth;
  3. using AppUI.Manager.View;
  4. using System.Collections;
  5. using System.Collections.Generic;
  6. using UnityEngine;
  7. using UnityEngine.SceneManagement;
  8. using UnityEngine.UI;
  9. public class ModeSelectView : JCUnityLib.ViewBase
  10. {
  11. public static ModeSelectView ins;
  12. //显示双人同屏
  13. public bool isShowButton { get; set; } = false;
  14. //显示本地pk
  15. public bool isShowLocalPKBtn { get; set; } = false;
  16. //联网pk
  17. public bool isShowNetworkPKBtn { get; set; } = false;
  18. [SerializeField]
  19. List<Button> allButtons;
  20. List<Button> buttons = new List<Button>();
  21. private void Awake()
  22. {
  23. ins = this;
  24. }
  25. // Start is called before the first frame update
  26. void Start()
  27. {
  28. if (CommonConfig.StandaloneMode)
  29. {
  30. buttons.Add(allButtons[0]);
  31. buttons.Add(allButtons[1]);
  32. }
  33. else
  34. {
  35. if (GlobalData.MyDeviceMode == DeviceMode.Gun)
  36. {
  37. buttons.Add(allButtons[0]);
  38. buttons.Add(allButtons[1]);
  39. buttons.Add(allButtons[2]);
  40. }
  41. else
  42. {
  43. buttons.Add(allButtons[0]);
  44. buttons.Add(allButtons[1]);
  45. buttons.Add(allButtons[2]);
  46. //只有iphone才显示双人游戏
  47. DeviceTypeHelper.DeviceType detectedType = DeviceTypeHelper.DetectDeviceType();
  48. if (detectedType == DeviceTypeHelper.DeviceType.iPhone) {
  49. // 目前只有奥运射箭和塔防有双人模式,先显示奥运射箭
  50. if (CommonConfig.bDisplayTwoPlayerGames && isShowButton && allButtons.Count > 3)
  51. {
  52. buttons.Add(allButtons[3]);
  53. allButtons[3].gameObject.SetActive(true);
  54. }
  55. }
  56. }
  57. }
  58. // 设置未添加的按钮为隐藏
  59. HideUnselectedButtons();
  60. // 初始化按钮
  61. InitButtons();
  62. }
  63. private void HideUnselectedButtons()
  64. {
  65. foreach (var button in allButtons)
  66. {
  67. // 如果当前按钮不在 buttons 中,隐藏它
  68. if (!buttons.Contains(button))
  69. {
  70. button.gameObject.SetActive(false);
  71. }
  72. else
  73. {
  74. // 如果在 buttons 中,确保设置为可见
  75. button.gameObject.SetActive(true);
  76. }
  77. }
  78. }
  79. //枪模式下显示
  80. //public void InitGunButtons() {
  81. // for (int i = 0; i < buttons.Count; i++)
  82. // {
  83. // int temp = i;
  84. // buttons[i].onClick.AddListener(() => {
  85. // AudioMgr.ins.PlayBtn();
  86. // OnChangeButton(temp);
  87. // });
  88. // }
  89. //}
  90. public void InitButtons() {
  91. for (int i = 0; i < buttons.Count; i++)
  92. {
  93. int temp = i;
  94. buttons[i].onClick.AddListener(() => {
  95. AudioMgr.ins.PlayBtn();
  96. OnChangeButton(temp);
  97. });
  98. //if (GameMgr.judgmentGameType != 1 && i == 3)
  99. //{
  100. // //目前只有奥运射箭和塔防有双人模式,先显示奥运射箭
  101. // buttons[i].gameObject.SetActive(false);
  102. //}
  103. }
  104. //隐藏按钮,这里避免高亮面板index问题
  105. buttons[1].gameObject.SetActive(isShowLocalPKBtn);
  106. buttons[2].gameObject.SetActive(isShowNetworkPKBtn);
  107. }
  108. void OnDestroy()
  109. {
  110. if (ins == this) ins = null;
  111. }
  112. void OnChangeButton(int index)
  113. {
  114. bool _selected = false;
  115. string gotoName = "";
  116. for (int i = 0; i < buttons.Count; i++)
  117. {
  118. Button _button = buttons[i];
  119. if (!buttons[i].gameObject.activeSelf) continue;
  120. if (index == i)
  121. {
  122. _button.GetComponent<ModeSelectView_Button>().OnSetButtonState(true);
  123. _selected = true;
  124. gotoName = _button.name;
  125. }
  126. else
  127. {
  128. _button.GetComponent<ModeSelectView_Button>().OnSetButtonState(false);
  129. }
  130. }
  131. if (_selected)
  132. {
  133. //进入选中的页面
  134. AudioMgr.ins.PlayBtn();
  135. GoToLocalByName(gotoName);
  136. }
  137. }
  138. public void OnChangeButtonState(int index)
  139. {
  140. for (int i = 0; i < buttons.Count; i++)
  141. {
  142. Button _button = buttons[i];
  143. if (!buttons[i].gameObject.activeSelf) continue;
  144. if (index == i)
  145. {
  146. _button.GetComponent<ModeSelectView_Button>().OnSetButtonState(true);
  147. }
  148. else
  149. {
  150. _button.GetComponent<ModeSelectView_Button>().OnSetButtonState(false);
  151. }
  152. }
  153. }
  154. public void GoToLocalByName(string _gotoName)
  155. {
  156. switch (_gotoName)
  157. {
  158. case "SINGLE_PLYAER": //本地游戏(单人模式)
  159. GlobalDataTemp.pkMatchType = PKMatchType.None;
  160. if (GameMgr.judgmentGameType == 1)
  161. {
  162. //限时射箭
  163. GlobalData.pkMatchType = PKMatchType.None;
  164. GameMgr.gameType = 1;
  165. SceneManager.LoadScene("Game", LoadSceneMode.Single);
  166. }
  167. else if (GameMgr.judgmentGameType == 14) {
  168. //塔防单人
  169. GameMgr.gameType = GameMgr.judgmentGameType;
  170. GlobalData.singlePlayerGameType = GameMgr.judgmentGameType;
  171. SceneManager.LoadScene("WildAttack", LoadSceneMode.Single);
  172. }
  173. else
  174. {
  175. //打野鸡,打野兔,打野狼
  176. GameMgr.gameType = GameMgr.judgmentGameType;
  177. SceneManager.LoadScene("GameChallenge", LoadSceneMode.Single);
  178. }
  179. break;
  180. case "PLAY_LOCALLY": //本地对战
  181. Debug.Log("触发本地对战:PLAY_LOCALLY");
  182. GlobalDataTemp.pkMatchType = PKMatchType.LocalPK;
  183. ViewManager.ShowView(UIViewType.RoleSelectView);
  184. break;
  185. case "PLAY_GLOBALLY": //联网
  186. Debug.Log("触发联网:PLAY_GLOBALLY");
  187. GlobalDataTemp.pkMatchType = PKMatchType.OnlinePK;
  188. //ViewMgr.Instance.ShowView<PKGameOptionView>();
  189. if (GameMgr.judgmentGameType == 1)
  190. {
  191. //射箭
  192. //GlobalDataTemp.pkMatchType = PKMatchType.OnlinePK;
  193. GlobalDataTemp.matchGameType = 9;
  194. ViewManager.ShowView(UIViewType.PKMatchView);
  195. }
  196. else
  197. {
  198. //打野鸡,打野兔,打野狼
  199. int newGameType = 0;
  200. if (GameMgr.judgmentGameType == 3) newGameType = 10;
  201. else if (GameMgr.judgmentGameType == 4) newGameType = 11;
  202. else if (GameMgr.judgmentGameType == 5) newGameType = 12;
  203. GlobalDataTemp.matchGameType = newGameType;
  204. ViewManager.ShowView(UIViewType.PKMatchView);
  205. }
  206. break;
  207. case "DOUBLE_PLYAER": //双人游戏,目前包括(奥运射箭,塔防)
  208. Debug.Log("DOUBLE_PLYAER");
  209. if (GameMgr.judgmentGameType == 14)
  210. {
  211. //塔防
  212. GameMgr.gameType = GameMgr.judgmentGameType;
  213. GlobalData.singlePlayerGameType = GameMgr.judgmentGameType;
  214. SceneManager.LoadScene("WildAttackDouble", LoadSceneMode.Single);
  215. }
  216. else {
  217. if (SmartBowDeviceHub.ins?.Aim?.bRuning9Axis() == true)
  218. {
  219. SceneManager.LoadScene("GameDouble", LoadSceneMode.Single);
  220. }
  221. else {
  222. SceneManager.LoadScene("InfraredGameDouble", LoadSceneMode.Single);
  223. }
  224. }
  225. break;
  226. default:
  227. break;
  228. }
  229. }
  230. public void OnClick_Back()
  231. {
  232. AudioMgr.ins.PlayBtn();
  233. //ViewMgr.Instance.DestroyView<ModeSelectView>();
  234. ViewManager.HideView(UIViewType.ModeSelectView);
  235. }
  236. }