ModeSelectView.cs 7.8 KB

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