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

92 lines
3.4 KiB
C#

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;
public Transform deviceParent;
private List<GameObject> deviceList;
private DeviceInfo lastSelectedDevice;
private DeviceInfo selectedDevice;
public void InitDeviceList(List<DeviceInfo> ownedDevices, List<DeviceInfo> sharedDevices, DeviceInfo selectedDevice)
{
lastSelectedDevice = selectedDevice;
this.selectedDevice = selectedDevice;
devicePrefab.SetActive(false);
if (deviceList != null && deviceList.Count > 0)
{
foreach (var item in deviceList)
{
Destroy(item);
}
deviceList.Clear();
}
deviceList = new List<GameObject>();
foreach (var device in ownedDevices)
{
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);
});
}
foreach (var device in sharedDevices)
{
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)
{
if (deviceItem.GetComponent<HomePageDeviceItem>().deviceInfo.device_sn == selectedDevice.device_sn)
{
deviceItem.GetComponent<HomePageDeviceItem>().SetSelectedState(true);
deviceItem.transform.SetAsFirstSibling();
}
}
}
}
public void OnClickDeviceItem(GameObject deviceItem)
{
foreach (var item in deviceList)
{
item.GetComponent<HomePageDeviceItem>().SetSelectedState(item == deviceItem);
}
selectedDevice = deviceItem.GetComponent<HomePageDeviceItem>().deviceInfo;
}
public void AddNewDevice()
{
UIManager.Instance.OpenPage(UIManager.PageName.connectDevicePage);
}
public void ClosePage()
{
if(lastSelectedDevice==selectedDevice)
{
gameObject.SetActive(false);
}
else
{
DataManager.Instance.SavaSelectedDeviceMac(selectedDevice.device_sn);
UIManager.Instance.OpenPage(UIManager.PageName.homePage,null,true);
}
}
}
}