killapp/Assets/Scripts/UI/Pages/HomePage/HomePageDevicePage.cs

141 lines
5.4 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using Kill.Managers;
using UnityEngine;
using UnityEngine.UI;
namespace Kill.UI.Pages
{
public class HomePageDevicePage : MonoBehaviour
{
public GameObject devicePrefab;
2026-05-18 08:42:33 +08:00
public GameObject typePrefab;
private string[] typeKey = new string[] { "100148", "100149" };
private string[] typeStr=new string[2];
public Transform deviceParent;
private List<GameObject> deviceList;
2026-05-18 08:42:33 +08:00
private List<GameObject> typeList;
2026-06-08 08:55:10 +08:00
public DeviceInfo lastSelectedDevice;
public DeviceInfo selectedDevice;
2026-05-18 08:42:33 +08:00
public Text selectedDeviceName;
public void InitDeviceList(List<DeviceInfo> ownedDevices, List<DeviceInfo> sharedDevices, DeviceInfo selectedDevice)
{
2026-05-18 08:42:33 +08:00
selectedDeviceName.text=selectedDevice.device_name;
typeStr[0]=LanguageManager.Instance.GetLanguage(typeKey[0]);
typeStr[1]=LanguageManager.Instance.GetLanguage(typeKey[1]);
lastSelectedDevice = selectedDevice;
this.selectedDevice = selectedDevice;
devicePrefab.SetActive(false);
2026-05-18 08:42:33 +08:00
typePrefab.SetActive(false);
if (deviceList != null && deviceList.Count > 0)
{
foreach (var item in deviceList)
{
Destroy(item);
}
deviceList.Clear();
}
2026-05-18 08:42:33 +08:00
if (typeList != null && typeList.Count > 0)
{
foreach (var item in typeList)
{
Destroy(item);
}
typeList.Clear();
}
deviceList = new List<GameObject>();
2026-05-18 08:42:33 +08:00
typeList=new List<GameObject>();
if(ownedDevices!=null&&ownedDevices.Count>0)
{
Text type=Instantiate(typePrefab, deviceParent).GetComponent<Text>();
type.text=typeStr[0].Replace("{0}",ownedDevices.Count.ToString());
type.gameObject.SetActive(true);
typeList.Add(type.gameObject);
}
foreach (var device in ownedDevices)
{
2026-06-08 08:55:10 +08:00
if (string.IsNullOrEmpty(device.ble_mac))
{
device.ble_mac=device.device_sn;
}
var deviceItem = Instantiate(devicePrefab, deviceParent);
deviceItem.SetActive(true);
deviceItem.GetComponent<HomePageDeviceItem>().InitDeviceItem(device);
deviceList.Add(deviceItem);
deviceItem.gameObject.SetActive(true);
deviceItem.GetComponent<Button>().onClick.AddListener(() =>
{
OnClickDeviceItem(deviceItem);
});
}
2026-05-18 08:42:33 +08:00
if(sharedDevices!=null&&sharedDevices.Count>0)
{
2026-06-08 08:55:10 +08:00
2026-05-18 08:42:33 +08:00
Text type=Instantiate(typePrefab, deviceParent).GetComponent<Text>();
type.text=typeStr[1].Replace("{0}",sharedDevices.Count.ToString());
type.gameObject.SetActive(true);
typeList.Add(type.gameObject);
}
foreach (var device in sharedDevices)
{
2026-06-08 08:55:10 +08:00
if (string.IsNullOrEmpty(device.ble_mac))
{
device.ble_mac=device.device_sn;
}
var deviceItem = Instantiate(devicePrefab, deviceParent);
deviceItem.SetActive(true);
deviceItem.GetComponent<HomePageDeviceItem>().InitDeviceItem(device);
deviceList.Add(deviceItem);
deviceItem.gameObject.SetActive(true);
deviceItem.GetComponent<Button>().onClick.AddListener(() =>
{
OnClickDeviceItem(deviceItem);
});
}
if (selectedDevice != null)
{
foreach (var deviceItem in deviceList)
{
2026-06-08 08:55:10 +08:00
if (deviceItem.GetComponent<HomePageDeviceItem>().deviceInfo.ble_mac == selectedDevice.ble_mac)
{
deviceItem.GetComponent<HomePageDeviceItem>().SetSelectedState(true);
2026-06-08 08:55:10 +08:00
Debug.Log("选中设备:" + deviceItem.GetComponent<HomePageDeviceItem>().deviceInfo.ble_mac);
}
else
{
deviceItem.GetComponent<HomePageDeviceItem>().SetSelectedState(false);
}
2026-06-08 08:55:10 +08:00
}
}
}
public void OnClickDeviceItem(GameObject deviceItem)
{
foreach (var item in deviceList)
{
item.GetComponent<HomePageDeviceItem>().SetSelectedState(item == deviceItem);
}
selectedDevice = deviceItem.GetComponent<HomePageDeviceItem>().deviceInfo;
2026-05-18 08:42:33 +08:00
selectedDeviceName.text=selectedDevice.device_name;
}
public void AddNewDevice()
{
UIManager.Instance.OpenPage(UIManager.PageName.connectDevicePage);
}
public void ClosePage()
{
if(lastSelectedDevice==selectedDevice)
{
gameObject.SetActive(false);
}
else
{
2026-06-08 08:55:10 +08:00
DataManager.Instance.SavaSelectedDeviceMac(selectedDevice.ble_mac);
UIManager.Instance.OpenPage(UIManager.PageName.homePage,null,true);
}
}
}
}