124 lines
5.0 KiB
C#
124 lines
5.0 KiB
C#
using System;
|
|
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;
|
|
private List<Button> deviceItemBtns = new List<Button>();
|
|
public Sprite[] showTips;
|
|
public RectTransform content;
|
|
public void Init()
|
|
{
|
|
//allSchemeName = GameManager.DataMgr.GetAllSchemeName();
|
|
allDeviceTypes = GameManager.DataMgr.GetAllDeviceTypes();
|
|
CreatTitleAndBtnItem();
|
|
deviceItemBtns[0].GetComponent<Image>().sprite = showTips[1];
|
|
deviceItemBtns[0].GetComponent<EventTrigger>().OnPointerEnter(null);
|
|
if (GameManager.RunModelMgr.ModeType == E_ModeType.Exam)
|
|
GetControl<Button>("backBtn").gameObject.SetActive(false);
|
|
}
|
|
|
|
private void CreatTitleAndBtnItem()
|
|
{
|
|
foreach (var scheme in GameManager.DataMgr.d_System.subjects)
|
|
{
|
|
if (allDeviceTypes.TryGetValue(scheme.deviceTypeId, out TB_DeviceType deviceNameItem))
|
|
{
|
|
var titleItem =
|
|
GameManager.ResourcesMgr.Load<GameObject>(Const.UI_Item + "UI_SelectDevicePanel/titleItem");
|
|
titleItem.transform.parent = content;
|
|
titleItem.GetComponentInChildren<TextMeshProUGUI>().text = deviceNameItem.deviceTypeName;
|
|
}
|
|
CreateDeviceItem(scheme);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 创建科目
|
|
/// </summary>
|
|
private void CreateDeviceItem(D_Scheme scheme)
|
|
{
|
|
var deviceItemBtn = GameManager.ResourcesMgr.Load<GameObject>(Const.UI_Item + "UI_SelectDevicePanel/deviceItemBtn");
|
|
//按钮的父节点是标题的父节点content
|
|
deviceItemBtn.transform.parent = content;
|
|
deviceItemBtn.GetComponentInChildren<TextMeshProUGUI>().text = scheme.schemeName;
|
|
var deviceBtnAComponent = deviceItemBtn.GetComponent<Button>();
|
|
deviceItemBtn.name = scheme.id.ToString();
|
|
deviceItemBtns.Add(deviceBtnAComponent);
|
|
AddEventForDeviceBtn(deviceBtnAComponent, scheme.deviceMap);
|
|
}
|
|
|
|
private void AddEventForDeviceBtn(Button deviceBtnAComponent, string mapName)
|
|
{
|
|
GameManager.UIMgr.AddEventTriggerListener(deviceBtnAComponent, EventTriggerType.PointerEnter,
|
|
_ =>
|
|
{
|
|
this.GetControl<Image>("DeviceShowImg").sprite =
|
|
GameManager.ResourcesMgr.Load<Sprite>(Const.UI_SelectDevicePanel + mapName);
|
|
this.GetControl<Image>("DeviceShowImg").color = new Color(1, 1, 1, 1);
|
|
SwitchState(deviceBtnAComponent);
|
|
});
|
|
|
|
deviceBtnAComponent.onClick.AddListener(() =>
|
|
{
|
|
GameManager.RunModelMgr.schemeID = int.Parse(deviceBtnAComponent.name);
|
|
GameManager.ProcessMgr.Init(GameManager.RunModelMgr.schemeID);
|
|
GameManager.NetMgr.schemeID = GameManager.RunModelMgr.schemeID;
|
|
|
|
StepState ss = StepStateControl.instance.GetStepstate(GameManager.RunModelMgr.schemeID);
|
|
if (ss.choseSubjectAction == null)
|
|
{
|
|
GameManager.UIMgr.ShowPanel<UI_LoadingPanel>(E_UI_Layer.System, (panel) =>
|
|
{
|
|
panel.Init();
|
|
GameManager.EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.1f);
|
|
GameManager.ScenesMgr.LoadSceneAsyn($"{GameManager.Instance.systemId}_{GameManager.RunModelMgr.schemeID}_{GameManager.Instance.startSceneName}", () =>
|
|
{
|
|
GameManager.UIMgr.HidePanel<UI_SelectDevicePanel>();
|
|
GameManager.UIMgr.HidePanel<UI_BGPanel>();
|
|
GameManager.EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.9f);
|
|
if (GameManager.RunModelMgr.ModeType != E_ModeType.Study)
|
|
{
|
|
GameManager.RunModelMgr.startTime = DateTime.Now;
|
|
Debug.Log("开始记时:" + GameManager.RunModelMgr.startTime.ToString());
|
|
}
|
|
});
|
|
});
|
|
}
|
|
else
|
|
{
|
|
ss.choseSubjectAction.Invoke();
|
|
GameManager.UIMgr.HidePanel<UI_SelectDevicePanel>();
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
private void SwitchState(Button currentBtn)
|
|
{
|
|
for (int i = 0; i < deviceItemBtns.Count; i++)
|
|
{
|
|
deviceItemBtns[i].GetComponent<Image>().sprite = showTips[0];
|
|
}
|
|
currentBtn.GetComponent<Image>().sprite = showTips[1];
|
|
}
|
|
|
|
protected override void OnClick(string btnName)
|
|
{
|
|
base.OnClick(btnName);
|
|
switch (btnName)
|
|
{
|
|
case "backBtn":
|
|
GameManager.UIMgr.ShowPanel<UI_SelectModePanel>(E_UI_Layer.Mid, panel => { panel.Init(); });
|
|
GameManager.UIMgr.HidePanel<UI_SelectDevicePanel>();
|
|
break;
|
|
}
|
|
}
|
|
} |