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;
}