using UnityEngine; using UnityEngine.UI; using QFramework; using System.Collections.Generic; using UniRx.Triggers; using System.Xml.Linq; using System; using UnityEngine.Rendering; namespace QFramework { public class ChallengeConfigurationPanelData : UIPanelData { /// /// 设备编码 /// public int DeviceUniqueNumber = 1003; /// /// 关卡配置信息 /// public ChallengeConfigurationManager ChallengeConfigurations = new ChallengeConfigurationManager(); } public partial class ChallengeConfigurationPanel : UIPanel { Dictionary m_DicCorrespondTabelOfEquipmentInfos; private List m_LeveItems = new List(); private int m_MinIndex = -1; private int m_MaxIndex = -1; protected override void OnInit(IUIData uiData = null) { mData = uiData as ChallengeConfigurationPanelData ?? new ChallengeConfigurationPanelData(); //读取数据 //m_DicCorrespondTabelOfEquipmentInfos = ExcelDataAnalyze.GetAllDataForTable(Enum_TableType.CorrespondTabelOfEquipmentTable); //保存按钮 SaveBtn.onClick.AddListener(OnSaveBtnClick); } protected override void OnOpen(IUIData uiData = null) { mData = uiData as ChallengeConfigurationPanelData ?? new ChallengeConfigurationPanelData(); if (UIKit.GetPanel()) UIKit.GetPanel(); CorrespondTabelOfEquipmentInfo correspondTabelOfEquipmentInfo; if (m_DicCorrespondTabelOfEquipmentInfos.TryGetValue(mData.DeviceUniqueNumber, out correspondTabelOfEquipmentInfo)) { StepListProxy tmpStepListProxy = DAL.Instance.Get(); List tmpOperationStepInfos = tmpStepListProxy.ReadStepMsgInfoFromTable(correspondTabelOfEquipmentInfo.MaintenancConfigurationTableName); Dictionary> tmpDic = tmpStepListProxy.ProcessingData(tmpOperationStepInfos); GenerateLeveItem(tmpDic); } } private void GenerateLeveItem(Dictionary> keyValues) { int tmpIndex = 0; foreach (var item in keyValues) { GameObject tmpLeveItemObj = Instantiate(LeveItem.gameObject, Content); tmpLeveItemObj.SetActive(true); LeveItem tmpLeveItem = tmpLeveItemObj.GetComponent(); tmpLeveItem.InitData(tmpIndex, keyValues[item.Key][0]); m_LeveItems.Add(tmpLeveItem); tmpIndex++; } //设置初始选择的关卡的选中状态 SetSelectedLeveItemState(); //刷新分数 RefreshSelectItems(); } /// /// 设置已选中的关卡状态 /// private void SetSelectedLeveItemState() { if (mData.ChallengeConfigurations.challengeConfigurations == null)return; StepListProxy tmpStepListProxy = DAL.Instance.Get(); foreach (var item in mData.ChallengeConfigurations.challengeConfigurations) { OperationStepDataInfo tmpInfo = tmpStepListProxy.GetOperationStepDataInfoById(item.LeveId); LeveItem tmpIeveItem = m_LeveItems.Find(t => t.m_LevelName == tmpInfo.parentStepName); if (tmpIeveItem != null) { if (m_MinIndex == -1) m_MinIndex = tmpIeveItem.m_index; tmpIeveItem.SetSelectedData(item); m_MaxIndex = tmpIeveItem.m_index; } } } /// /// 设置选择状态 /// /// public void SetSelectState(int index, bool selectSate) { if (selectSate) { if (m_MinIndex > index) { m_LeveItems[index].SetSelectState(false); return; } if (GetSelectCount() == 1) m_MinIndex = index; if (GetSelectCount() > 1) m_MaxIndex = index; } else { if (m_MinIndex == index) { m_MinIndex = -1; m_MaxIndex = -1; } else if (index > m_MinIndex) { m_MaxIndex = index; } } RefreshSelectItems(); } public void RefreshSelectItems() { for (int i = 0; i < m_LeveItems.Count; i++) { if (m_MinIndex != -1 && m_MinIndex == i) { continue; } else { if (i >= m_MinIndex && i <= m_MaxIndex) { m_LeveItems[i].SetSelectState(true); } else { m_LeveItems[i].SetSelectState(false); } } } RefreshTotalTime(); } /// /// 获取目前选择的数量 /// public int GetSelectCount() { return m_LeveItems.FindAll(t => t.m_SelectState == true).Count; } /// /// 刷新总时间 /// public void RefreshTotalTime() { int totalTime = 0; for (int i = 0; i < m_LeveItems.Count; i++) { if (m_LeveItems[i].m_SelectState) { if (!string.IsNullOrEmpty(m_LeveItems[i].TimeInputField.text)) { totalTime += int.Parse(m_LeveItems[i].TimeInputField.text); } } } TimeText.text = totalTime.ToString(); } public void OnSaveBtnClick() { } protected override void OnShow() { } protected override void OnHide() { } protected override void OnClose() { } } } [Serializable] public class ChallengeConfigurationManager { public ChallengeConfiguration[] challengeConfigurations; } /// /// 关卡信息 /// [Serializable] public class ChallengeConfiguration { /// /// 关卡名称 /// public int LeveId; /// /// 关卡时间 /// public string LeveTime; } public class LeveInfo { /// /// 关卡名称 /// public string leveName; /// /// 关卡时间 /// public string leveTime; }