118 lines
4.8 KiB
C#
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);
|
|
}
|
|
} |