ModeSelectView.cs 6.5 KB

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