YanCheng_Metrology/Assets/Scripts/Project/UI/UI_Panel/UI_SelectDevicePanel.cs

118 lines
4.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using Sirenix.OdinInspector;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UI_SelectDevicePanel : BasePanel
{
private List<TB_Scheme> allSchemeName;
private Dictionary<int, TB_DeviceType> allDeviceTypes;
public void Init()
{
allSchemeName = GameManager.DataMgr.GetAllSchemeName();
allDeviceTypes = GameManager.DataMgr.GetAllDeviceTypes();
CreatTitleAndBtnItem();
}
private void CreatTitleAndBtnItem()
{
var onlyDeviceHashSet = new HashSet<int>();
foreach (var scheme in allSchemeName)
{
if (!onlyDeviceHashSet.Contains(scheme.deviceTypeId)) //没有这个设备类型ID就添加唯一标识
{
onlyDeviceHashSet.Add(scheme.deviceTypeId);
var titleItem =
GameManager.ResourcesMgr.Load<GameObject>(Const.UI_Item + "UI_SelectDevicePanel/titleItem");
titleItem.transform.parent = GetControl<ScrollRect>("DeviceScrollView").content;
if (allDeviceTypes.TryGetValue(scheme.deviceTypeId, out TB_DeviceType deviceNameItem))
{
titleItem.GetComponentInChildren<TextMeshProUGUI>().text = deviceNameItem.deviceTypeName;
var currentIdList = allSchemeName.FindAll(s => s.deviceTypeId == scheme.deviceTypeId);
//遍历每个当前设备类型,并生成按钮
currentIdList.ForEach(x =>
{
var deviceItemBtn =
GameManager.ResourcesMgr.Load<GameObject>(Const.UI_Item +
"UI_SelectDevicePanel/deviceItemBtn");
//按钮的父节点是标题的父节点content
deviceItemBtn.transform.parent = titleItem.transform.parent;
deviceItemBtn.GetComponentInChildren<TextMeshProUGUI>().text = x.schemeName;
var deviceBtnAComponent = deviceItemBtn.GetComponent<Button>();
deviceItemBtn.name = x.id.ToString();
AddEventForDeviceBtn(deviceBtnAComponent, x.deviceMap);
});
}
}
}
}
private void AddEventForDeviceBtn(Button deviceBtnAComponent, string mapName)
{
GameManager.UIMgr.AddEventTriggerListener(deviceBtnAComponent, EventTriggerType.PointerEnter,
_ =>
{
//deviceBtnAComponent.transform.DOScale(1.3f, 0.2f);
this.GetControl<Image>("DeviceShowImg").sprite =
GameManager.ResourcesMgr.Load<Sprite>(Const.UI_SelectDevicePanel + mapName);
this.GetControl<Image>("DeviceShowImg").color = new Color(1, 1, 1, 1);
});
GameManager.UIMgr.AddEventTriggerListener(deviceBtnAComponent, EventTriggerType.PointerExit,
_ =>
{
//deviceBtnAComponent.transform.DOScale(1f, 0.2f);
this.GetControl<Image>("DeviceShowImg").color = new Color(1, 1, 1, 0);
});
deviceBtnAComponent.onClick.AddListener(() =>
{
GameManager.RunModelMgr.schemeID = int.Parse(deviceBtnAComponent.name);
GameManager.ProcessMgr.Init(GameManager.RunModelMgr.schemeID, E_ModeType.Study);
GameManager.UIMgr.ShowPanel<UI_LoadingPanel>(E_UI_Layer.System, (panel) =>
{
GameManager.UIMgr.ShowPanel<UI_MainTitlePanel>(E_UI_Layer.Bot, (panel) =>
{
panel.Init();
});
panel.Init();
GameManager.EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.1f);
GameManager.ScenesMgr.LoadSceneAsyn("03_OfficeScene", () =>
{
GameManager.UIMgr.HidePanel<UI_SelectDevicePanel>();
GameManager.UIMgr.HidePanel<UI_BGPanel>();
GameManager.EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.9f);
});
});
});
}
protected override void OnClick(string btnName)
{
base.OnClick(btnName);
Debug.Log(btnName);
switch (btnName)
{
case "backBtn":
UIManager.Instance.ShowPanel<UI_SelectModePanel>(E_UI_Layer.Mid, panel => { panel.Init(); });
UIManager.Instance.HidePanel<UI_SelectDevicePanel>();
break;
}
}
[Button]
public void Test1()
{
foreach (var VARIABLE in allSchemeName)
{
Debug.LogError(VARIABLE.deviceMap + VARIABLE.schemeName);
}
Debug.LogError(allDeviceTypes.Count);
}
}