using AppUI.Bluetooth; using AppUI.Manager.View; using AppUI.View.Component; using SmartBowSDK; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace AppUI.View.Home.DeviceView { public class DeviceListView : MonoBehaviour { public enum DeviceCategory { Bow, Gun } [System.Serializable] public class DeviceItemData { [Header("设备类型")] public AimDeviceType aimDeviceType; [Header("分类")] public DeviceCategory category; [Header("按钮")] public Button button; [Header("是否需要解密")] public bool needDecryption; [Header("是否红外引导")] public bool infraredGuide; } [Header("设备列表")] [SerializeField] List deviceItems; [Header("分类")] public DeviceCategory category; [SerializeField] Sprite[] arrowImages; [SerializeField] Material lineMaterial; Material materialGrey; Material materialGreen; void Start() { materialGrey = Instantiate(lineMaterial); materialGreen = Instantiate(lineMaterial); materialGreen.SetColor("_BorderColor", new Color32(16, 194, 198, 255)); for (int i = 0; i < deviceItems.Count; i++) { int temp = i; var item = deviceItems[i]; // B端隐藏弓箭设备 if (CommonConfig.StandaloneModeOrPlatformB && item.category == DeviceCategory.Bow) { item.button.gameObject.SetActive(false); continue; } item.button.onClick.AddListener(() => { AudioMgr.ins.PlayBtn(); OnSelectDevice(temp); }); } } void OnSelectDevice(int index) { bool selected = false; for (int i = 0; i < deviceItems.Count; i++) { var item = deviceItems[i]; Button button = item.button; bool isCurrent = (i == index); Color32 titleColor; if (isCurrent) { selected = true; SmartBowDeviceHub hub = SmartBowDeviceHub.ins; BluetoothPlayer player = hub.GetActivePlayer(); hub.Aim.OverwriteAimDeviceInfoForPlayer(player, item.aimDeviceType); titleColor = new Color32(16, 194, 198, 255); button.transform.Find("right/arrow") .GetComponent() .sprite = arrowImages[1]; button.GetComponent().material = materialGreen; } else { titleColor = new Color32(0, 0, 0, 255); button.transform.Find("right/arrow") .GetComponent() .sprite = arrowImages[0]; button.GetComponent().material = materialGrey; } button.transform.Find("right/title") .GetComponent() .color = titleColor; } if (!selected) return; var current = deviceItems[index]; SmartBowDeviceHub.ins.NeedDecryption = current.needDecryption; AudioMgr.ins.PlayBtn(); DeviceView.Active?.EndDeviceSelectionFlow(); ModuleSideSlip.Show(guideDeviceType: current.aimDeviceType); //if (current.infraredGuide) //{ // GameObject connectGuidanceView = // ViewManager2.getGameObjectAndShowView( // ViewManager2.Path_ConnectGuidanceView); // connectGuidanceView // .GetComponent() // .showTextipInfrared(); //} //else //{ // ViewManager2.ShowView( // ViewManager2.Path_ConnectGuidanceView); //} } public void OnChangeSmartArcheryButtonState(int index) { for (int i = 0; i < deviceItems.Count; i++) { var item = deviceItems[i]; Button button = item.button; bool isCurrent = (i == index); Color32 titleColor; if (isCurrent) { SmartBowDeviceHub.ins.Aim.SetTempAimDeviceType( item.aimDeviceType); titleColor = new Color32(16, 194, 198, 255); button.transform.Find("right/arrow") .GetComponent() .sprite = arrowImages[1]; button.GetComponent().material = materialGreen; } else { titleColor = new Color32(0, 0, 0, 255); button.transform.Find("right/arrow") .GetComponent() .sprite = arrowImages[0]; button.GetComponent().material = materialGrey; } button.transform.Find("right/title") .GetComponent() .color = titleColor; } } public void OnClick_Back() { Debug.Log("DeviceListView OnClick_Back"); AudioMgr.ins.PlayBtn(); DeviceView.Active?.EndDeviceSelectionFlow(); DeviceView.Active?.RefreshConnectContent(force: true); if (category == DeviceCategory.Bow) { ViewManager.HideView(UIViewType.DeviceArcheryView); } else { ViewManager.HideView(UIViewType.DeviceGunView); } } } }