DeviceListView.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. using AppUI.Bluetooth;
  2. using AppUI.Manager.View;
  3. using AppUI.View.Component;
  4. using SmartBowSDK;
  5. using System.Collections.Generic;
  6. using UnityEngine;
  7. using UnityEngine.UI;
  8. namespace AppUI.View.Home.DeviceView
  9. {
  10. public class DeviceListView : MonoBehaviour
  11. {
  12. public enum DeviceCategory
  13. {
  14. Bow,
  15. Gun
  16. }
  17. [System.Serializable]
  18. public class DeviceItemData
  19. {
  20. [Header("设备类型")]
  21. public AimDeviceType aimDeviceType;
  22. [Header("分类")]
  23. public DeviceCategory category;
  24. [Header("按钮")]
  25. public Button button;
  26. [Header("是否需要解密")]
  27. public bool needDecryption;
  28. [Header("是否红外引导")]
  29. public bool infraredGuide;
  30. }
  31. [Header("设备列表")]
  32. [SerializeField]
  33. List<DeviceItemData> deviceItems;
  34. [Header("分类")]
  35. public DeviceCategory category;
  36. [SerializeField]
  37. Sprite[] arrowImages;
  38. [SerializeField]
  39. Material lineMaterial;
  40. Material materialGrey;
  41. Material materialGreen;
  42. void Start()
  43. {
  44. materialGrey = Instantiate(lineMaterial);
  45. materialGreen = Instantiate(lineMaterial);
  46. materialGreen.SetColor("_BorderColor",
  47. new Color32(16, 194, 198, 255));
  48. for (int i = 0; i < deviceItems.Count; i++)
  49. {
  50. int temp = i;
  51. var item = deviceItems[i];
  52. // B端隐藏弓箭设备
  53. if (CommonConfig.StandaloneModeOrPlatformB &&
  54. item.category == DeviceCategory.Bow)
  55. {
  56. item.button.gameObject.SetActive(false);
  57. continue;
  58. }
  59. item.button.onClick.AddListener(() =>
  60. {
  61. AudioMgr.ins.PlayBtn();
  62. OnSelectDevice(temp);
  63. });
  64. }
  65. }
  66. void OnSelectDevice(int index)
  67. {
  68. bool selected = false;
  69. for (int i = 0; i < deviceItems.Count; i++)
  70. {
  71. var item = deviceItems[i];
  72. Button button = item.button;
  73. bool isCurrent = (i == index);
  74. Color32 titleColor;
  75. if (isCurrent)
  76. {
  77. selected = true;
  78. SmartBowDeviceHub hub = SmartBowDeviceHub.ins;
  79. BluetoothPlayer player = hub.GetActivePlayer();
  80. hub.Aim.OverwriteAimDeviceInfoForPlayer(player, item.aimDeviceType);
  81. titleColor = new Color32(16, 194, 198, 255);
  82. button.transform.Find("right/arrow")
  83. .GetComponent<Image>()
  84. .sprite = arrowImages[1];
  85. button.GetComponent<Image>().material =
  86. materialGreen;
  87. }
  88. else
  89. {
  90. titleColor = new Color32(0, 0, 0, 255);
  91. button.transform.Find("right/arrow")
  92. .GetComponent<Image>()
  93. .sprite = arrowImages[0];
  94. button.GetComponent<Image>().material =
  95. materialGrey;
  96. }
  97. button.transform.Find("right/title")
  98. .GetComponent<Text>()
  99. .color = titleColor;
  100. }
  101. if (!selected)
  102. return;
  103. var current = deviceItems[index];
  104. SmartBowDeviceHub.ins.NeedDecryption =
  105. current.needDecryption;
  106. AudioMgr.ins.PlayBtn();
  107. DeviceView.Active?.EndDeviceSelectionFlow();
  108. ModuleSideSlip.Show(guideDeviceType: current.aimDeviceType);
  109. //if (current.infraredGuide)
  110. //{
  111. // GameObject connectGuidanceView =
  112. // ViewManager2.getGameObjectAndShowView(
  113. // ViewManager2.Path_ConnectGuidanceView);
  114. // connectGuidanceView
  115. // .GetComponent<ConnectGuidanceView>()
  116. // .showTextipInfrared();
  117. //}
  118. //else
  119. //{
  120. // ViewManager2.ShowView(
  121. // ViewManager2.Path_ConnectGuidanceView);
  122. //}
  123. }
  124. public void OnChangeSmartArcheryButtonState(int index)
  125. {
  126. for (int i = 0; i < deviceItems.Count; i++)
  127. {
  128. var item = deviceItems[i];
  129. Button button = item.button;
  130. bool isCurrent = (i == index);
  131. Color32 titleColor;
  132. if (isCurrent)
  133. {
  134. SmartBowDeviceHub.ins.Aim.SetTempAimDeviceType(
  135. item.aimDeviceType);
  136. titleColor = new Color32(16, 194, 198, 255);
  137. button.transform.Find("right/arrow")
  138. .GetComponent<Image>()
  139. .sprite = arrowImages[1];
  140. button.GetComponent<Image>().material =
  141. materialGreen;
  142. }
  143. else
  144. {
  145. titleColor = new Color32(0, 0, 0, 255);
  146. button.transform.Find("right/arrow")
  147. .GetComponent<Image>()
  148. .sprite = arrowImages[0];
  149. button.GetComponent<Image>().material =
  150. materialGrey;
  151. }
  152. button.transform.Find("right/title")
  153. .GetComponent<Text>()
  154. .color = titleColor;
  155. }
  156. }
  157. public void OnClick_Back()
  158. {
  159. Debug.Log("DeviceListView OnClick_Back");
  160. AudioMgr.ins.PlayBtn();
  161. DeviceView.Active?.EndDeviceSelectionFlow();
  162. DeviceView.Active?.RefreshConnectContent(force: true);
  163. if (category == DeviceCategory.Bow)
  164. {
  165. ViewManager.HideView(UIViewType.DeviceArcheryView);
  166. }
  167. else {
  168. ViewManager.HideView(UIViewType.DeviceGunView);
  169. }
  170. }
  171. }
  172. }