You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
4.3 KiB

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
public class InfoWindow : WindowBase
{
private Dictionary<string, AearInfo> _AearInfoDict = new Dictionary<string, AearInfo>();
[Header("当前激活面板")]
public GameObject CurrentActivePanel=null;
[Header("AearInfo")]
public Transform AearInfoParent;
public Animator AearInfoAnimator;
public Button AearInfoActiveBtn;
public Text emptytipTxt;
public GameObject miniMap;
public override void Init()
{
base.Init();
AearInfoActiveBtn.onClick.AddListener(SetAearInfoPanelActive);
}
#region 区域数据相关
public void AddAearInfo(string aearID, AearInfoType infoType)
{
if (!_AearInfoDict.ContainsKey(aearID))
{
//添加
GameObject go = GameObject.Instantiate(Resources.Load<GameObject>("Prefab/UI/AearInfo"), AearInfoParent);
AearInfo aearInfo = go.GetComponent<AearInfo>();
if (aearInfo != null)
{
aearInfo._aearID = aearID;
_AearInfoDict.Add(aearID, aearInfo);
}
else
{
Debug.LogError(aearID + "不存在AearInfo");
}
//设定数据
switch (infoType)
{
case AearInfoType.:
aearInfo.SetCameraBtn();
break;
case AearInfoType.湿:
aearInfo.shidu = Random.Range(20, 30);
aearInfo.kejiandu = Random.Range(500, 600);
break;
case AearInfoType.PM2_5:
aearInfo.pm2_5 = Random.Range(50, 70);
break;
case AearInfoType.:
aearInfo.zaoyin = Random.Range(50, 80);
break;
}
//初始化Info脚本
aearInfo.Init();
}
else
{
AearInfo aearInfo;
if (_AearInfoDict.TryGetValue(aearID, out aearInfo))
{
//设定数据
switch (infoType)
{
case AearInfoType.:
aearInfo.SetCameraBtn();
break;
case AearInfoType.湿:
aearInfo.shidu = Random.Range(20, 30);
aearInfo.kejiandu = Random.Range(500, 600);
break;
case AearInfoType.PM2_5:
aearInfo.pm2_5 = Random.Range(50, 70);
break;
case AearInfoType.:
aearInfo.zaoyin = Random.Range(50, 80);
break;
}
}
}
//更新排序
UpdateAearInfo();
if (emptytipTxt.gameObject.activeSelf)
{
emptytipTxt.gameObject.SetActive(false);
}
}
public void UpdateAearInfo()
{
//先排号字典
AearDictSort();
//数据的数组
AearInfo[] aearInfos = AearInfoParent.gameObject.GetComponentsInChildren<AearInfo>();
int index = 0;
foreach (var item in _AearInfoDict)
{
for (int i = 0; i < aearInfos.Length; i++)
{
if (aearInfos[i]._aearID == item.Key)
{
aearInfos[i].transform.SetSiblingIndex(index);
index++;
break;
}
}
}
}
/// <summary>
/// 区域字典排序
/// </summary>
private void AearDictSort()
{
Dictionary<string, AearInfo> dict = _AearInfoDict.OrderBy(o => o.Key).ToDictionary(o => o.Key, p => p.Value);
_AearInfoDict = dict;
}
public void SetAearInfoPanelActive()
{
if (AearInfoActiveBtn.transform.localScale.x==1)
{
AearInfoAnimator.CrossFade("AearInfoShow", 0.1f);
AearInfoActiveBtn.transform.localScale = new Vector3(-1, 1, 1);
}
else
{
AearInfoAnimator.CrossFade("AearInfoHide", 0.1f);
AearInfoActiveBtn.transform.localScale = new Vector3(1, 1, 1);
}
}
#endregion
}