CultivationOfBrewing-2/Assets/Scripts/Project/UI/UI_Panel/UI_LowTensionWorkTicketPane...

409 lines
18 KiB
C#

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using Unity.VisualScripting.FullSerializer;
using System;
using DG.Tweening;
using UnityEngine.Windows;
using UnityEngine.EventSystems;
public class UI_LowTensionWorkTicketPanel : UI_BaseTicket
{
public override void HideMe()
{
base.HideMe();
GameManager.WorkorderMgr.leftBtnActionMap.Clear();
}
protected override void OnClick(string btnName)
{
switch (btnName)
{
case "closeBtn":
GameManager.UIMgr.HidePanel<UI_LowTensionWorkTicketPanel>();
break;
case "ConfirmBtn":
if (GameManager.RunModelMgr.SceneType == E_SceneType.Office)
{
SaveTicketValue();
if (GameManager.RunModelMgr.ModeType == E_ModeType.Study && !ToolFuncManager.GetChild(transform, "ConfirmBtn_ImageTips").gameObject.activeInHierarchy)
{
TipPanel.ShowTip("请完成表格填写!");
}
else
{
if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(triggerName, true) == 0)
{
ScoreManager.instance.Check(triggerName, null);
GameManager.UIMgr.HidePanel<UI_LowTensionWorkTicketPanel>();
}
}
}
else
{
GameManager.UIMgr.HidePanel<UI_LowTensionWorkTicketPanel>();
GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID("办理工作票终结_确定", true);
}
break;
case "NewAddBtn":
WorkingLineNameOrEquipmentDualName temp = Instantiate(itemUIPrefab, backpack);
temp.transform.GetChild(0).gameObject.name = "mission_InputField_" + backpack.transform.childCount;
LayoutRebuilder.ForceRebuildLayoutImmediate(backpack);
LayoutRebuilder.ForceRebuildLayoutImmediate(allContent);
temp.callBack += OnSetUIRect;
break;
case "BackBtn":
GameManager.UIMgr.ShowPanel<UI_SelectWorkTicketPanel>();
GameManager.UIMgr.HidePanel<UI_LowTensionWorkTicketPanel>();
break;
default:
break;
}
}
public override void LoadDefaultValue()//学习模式下填充正确值,并且记录每个空应该填的内容
{
bool Mis_Initialized = (MissionMgr.Instance.defaultTicketValues.Count > 0);
JObject jsonObj = JObject.Parse(MissionMgr.Instance.missionText);
JObject configurations = (JObject)jsonObj["configurations"];
foreach (var config in configurations.Properties())
{
Transform target = ToolFuncManager.GetChild(transform, config.Name + "_InputField");//找InputField填入默认值
if (target != null)
{
if (GameManager.RunModelMgr.ModeType == E_ModeType.Study)
{
TMP_InputField input = target.GetComponent<TMP_InputField>();
input.onSelect.AddListener((str) => {
input.text = config.Value.ToString();
input.interactable = false;
ImageTips tips = ToolFuncManager.FindChildWithComponent<ImageTips>(input.transform);
if (tips != null) tips.gameObject.SetActive(false);
});
}
InitialDefaultValues(config.Name + "_InputField", config.Value.ToString(), Mis_Initialized);
}
}
Transform mc = ToolFuncManager.GetChild(transform, "member_count_InputField");
if (mc != null)
{
if (GameManager.RunModelMgr.ModeType == E_ModeType.Study)
{
TMP_InputField input = mc.GetComponent<TMP_InputField>();
input.onSelect.AddListener((str) =>
{
input.text = MissionMgr.Instance.mission.configurations.member.Split(missionSplitChar).Length.ToString();
input.interactable = false;
ImageTips tips = ToolFuncManager.FindChildWithComponent<ImageTips>(input.transform);
if (tips != null) tips.gameObject.SetActive(false);
});
}
InitialDefaultValues("member_count_InputField", MissionMgr.Instance.mission.configurations.member.Split(missionSplitChar).Length.ToString(), Mis_Initialized);
}
Transform targetTrigger = ToolFuncManager.GetChild(transform, "mission_InputField_1");
if (targetTrigger != null)
{
targetTrigger.GetComponent<TMP_InputField>().onSelect.AddListener((str) =>
{
List<string> list = new List<string>(MissionMgr.Instance.mission.configurations.mission.Split(missionSplitChar));
for (int i = 0; i < list.Count; i++)
{
if (GameManager.RunModelMgr.ModeType == E_ModeType.Study)
{
Transform target = ToolFuncManager.GetChild(transform, "mission_InputField_" + (i + 1));
if (target == null)
{
OnClick("NewAddBtn");
target = ToolFuncManager.GetChild(transform, "mission_InputField_" + (i + 1));
}
TMP_InputField input = target.GetComponent<TMP_InputField>();
input.text = list[i];
}
InitialDefaultValues("mission_InputField_" + (i + 1), list[i], Mis_Initialized);
}
ImageTips tips = ToolFuncManager.FindChildWithComponent<ImageTips>(targetTrigger.transform);
if (tips != null) tips.gameObject.SetActive(false);
});
}
//DateTime start_dt = DateTime.Parse(MissionMgr.Instance.mission.configurations.startdate);
//DateTime end_dt = DateTime.Parse(MissionMgr.Instance.mission.configurations.enddate);
//SetDateTimeField(transform, "startdate", start_dt, Mis_Initialized);//开始日期
//SetDateTimeField(transform, "enddate", end_dt, Mis_Initialized);//结束日期
Transform elc_drop = ToolFuncManager.GetChild(transform, "hasElectric_Dropdown");//是否需要电
if (elc_drop != null)
{
if (GameManager.RunModelMgr.ModeType == E_ModeType.Study)
{
Transform btn_stu = ToolFuncManager.GetChild(elc_drop, "Study_Button");
if (btn_stu != null)
{
ImageTips tips = ToolFuncManager.FindChildWithComponent<ImageTips>(elc_drop.transform);
btn_stu.gameObject.SetActive(true);
ToolFuncManager.ActiveEmbededTip(tips.gameObject);
btn_stu.GetComponent<Button>().onClick.AddListener(() => {
TMP_Dropdown input = elc_drop.GetComponent<TMP_Dropdown>();
input.value = MissionMgr.Instance.mission.configurations.hasElectric == "停电" ? 0 : 1;
if (tips != null) tips.gameObject.SetActive(false);
btn_stu.gameObject.SetActive(false);
});
}
}
InitialDefaultValues("hasElectric_Dropdown", MissionMgr.Instance.mission.configurations.hasElectric, Mis_Initialized);
}
if (GameManager.RunModelMgr.ModeType == E_ModeType.Study)
{
Transform AutoToggles_Button = ToolFuncManager.GetChild(transform, "AutoToggles_Button");
AutoToggles_Button.gameObject.SetActive(true);
AutoToggles_Button.GetComponent<Button>().onClick.AddListener(() =>
{
for (int i = 0; i < workTickeContent.transform.childCount; i++)
{
Transform child = workTickeContent.transform.GetChild(i);
if (child != null)
{
TMP_Text text = ToolFuncManager.FindChildWithComponent<TMP_Text>(child);
if (text != null)
{
if (MissionMgr.Instance.mission.workTicketLabelsSelect.Contains(text.text))
{
Toggle toggle = ToolFuncManager.FindChildWithComponent<Toggle>(child);
if (toggle != null)
{
toggle.isOn = true;
toggle.interactable = false;
}
}
}
}
}
CheckAllToggle();
allToggle.interactable = false;
AutoToggles_Button.gameObject.SetActive(false);
});
}
string req = "";
foreach (var item in MissionMgr.Instance.mission.workTicketLabelsSelect)
{
req += (item + "&");
}
InitialDefaultValues("workTicketLabelsSelect", req, Mis_Initialized);
}
void SetDateTimeField(Transform parentTransform, string fieldNamePrefix, DateTime dateTime, bool misInitialized)
{
void SetField(string suffix, int value)
{
Transform target = ToolFuncManager.GetChild(parentTransform, fieldNamePrefix + suffix);
if (target != null)
{
TMP_InputField input = target.GetComponent<TMP_InputField>();
if (GameManager.RunModelMgr.ModeType == E_ModeType.Study)
{
input.onSelect.AddListener((str) =>
{
input.text = value.ToString();
ImageTips tips = ToolFuncManager.FindChildWithComponent<ImageTips>(input.transform);
if (tips != null)
{
input.interactable = false;
tips.gameObject.SetActive(false);
}
});
}
//InitialDefaultValues(fieldNamePrefix + suffix, value.ToString(), misInitialized);
}
}
SetField("_Y_InputField", dateTime.Year);
SetField("_M_InputField", dateTime.Month);
SetField("_D_InputField", dateTime.Day);
SetField("_h_InputField", dateTime.Hour);
SetField("_m_InputField", dateTime.Minute);
}
public override void SaveTicketValue()
{
base.SaveTicketValue();
for (int i = 0; i < backpack.transform.childCount; i++)//保存安全措施和注意事项
{
GameObject obj = backpack.transform.GetChild(i).gameObject;
if (obj != null)
{
TMP_InputField t_if = obj.GetComponentInChildren<TMP_InputField>();
if (t_if != null && t_if.gameObject.name.StartsWith("mission_InputField_"))
{
if (!MissionMgr.Instance.selectedTicketValues.ContainsKey(t_if.gameObject.name))
MissionMgr.Instance.selectedTicketValues.Add(t_if.gameObject.name, t_if.text);
}
}
}
string req = "";
for(int i = 0; i < workTickeRequstContent.transform.childCount; i++)//保存其他安全措施和注意事项
{
Transform child = workTickeRequstContent.transform.GetChild(i);
if (child != null)
{
TMP_Text text = ToolFuncManager.FindChildWithComponent<TMP_Text>(child);
if (text != null)
req += (text.text + "&");
}
}
MissionMgr.Instance.selectedTicketValues.Add("workTicketLabelsSelect", req);
Debug.Log("保存低压工作票");
}
/// <summary>
/// 加载低压工作票内容,用于完成操作后的最后加载;学习模式加载默认数据,其他模式加载已保存的数据
/// </summary>
public override void LoadTicketValue()
{
if ((GameManager.MissionMgr.selectedTicketValues != null && GameManager.MissionMgr.selectedTicketValues.Count > 0) && GameManager.MissionMgr.selectedWorkTicketType != workTicketType)
return;
//加载默认数据
if (NeedLoadTicketDefaultValue())
{
bool Mis_Initialized = (MissionMgr.Instance.defaultTicketValues.Count > 0);
JObject jsonObj = JObject.Parse(MissionMgr.Instance.missionText);
JObject configurations = (JObject)jsonObj["configurations"];
foreach (var config in configurations.Properties())
{
Transform target = ToolFuncManager.GetChild(transform, config.Name + "_InputField");//找InputField填入默认值
if (target != null)
{
TMP_InputField input = target.GetComponent<TMP_InputField>();
input.text = config.Value.ToString();
input.interactable = false;
}
}
Transform mc = ToolFuncManager.GetChild(transform, "member_count_InputField");
if (mc != null)
{
TMP_InputField input = mc.GetComponent<TMP_InputField>();
input.text = MissionMgr.Instance.mission.configurations.member.Split(missionSplitChar).Length.ToString();
input.interactable = false;
}
Transform targetTrigger = ToolFuncManager.GetChild(transform, "mission_InputField_1");
if (targetTrigger != null)
{
List<string> list = new List<string>(MissionMgr.Instance.mission.configurations.mission.Split(missionSplitChar));
for (int i = 0; i < list.Count; i++)
{
Transform target = ToolFuncManager.GetChild(transform, "mission_InputField_" + (i + 1));
if (target == null)
{
OnClick("NewAddBtn");
target = ToolFuncManager.GetChild(transform, "mission_InputField_" + (i + 1));
}
TMP_InputField input = target.GetComponent<TMP_InputField>();
input.text = list[i];
input.interactable = false;
}
GetControl<Button>("NewAddBtn").interactable = false;
}
Transform elc_drop = ToolFuncManager.GetChild(transform, "hasElectric_Dropdown");//是否需要电
if (elc_drop != null)
{
TMP_Dropdown input = elc_drop.GetComponent<TMP_Dropdown>();
input.value = MissionMgr.Instance.mission.configurations.hasElectric == "停电" ? 0 : 1;
input.interactable = false;
}
for (int i = 0; i < workTickeContent.transform.childCount; i++)
{
Transform child = workTickeContent.transform.GetChild(i);
if (child != null)
{
TMP_Text text = ToolFuncManager.FindChildWithComponent<TMP_Text>(child);
if (text != null)
{
if (MissionMgr.Instance.mission.workTicketLabelsSelect.Contains(text.text))
{
Toggle toggle = ToolFuncManager.FindChildWithComponent<Toggle>(child);
if (toggle != null)
{
toggle.isOn = true;
toggle.interactable = false;
}
}
}
}
}
CheckAllToggle();
allToggle.interactable = false;
}
else//加载保存的数据
{
base.LoadTicketValue();
int num = 0;
while (true)
{
num++;
if (MissionMgr.Instance.selectedTicketValues.ContainsKey("mission_InputField_" + num))
{
Transform target = ToolFuncManager.GetChild(transform, "mission_InputField_" + num);
if (target == null)
{
OnClick("NewAddBtn");
target = ToolFuncManager.GetChild(transform, "mission_InputField_" + num);
}
TMP_InputField input = target.GetComponent<TMP_InputField>();
input.text = MissionMgr.Instance.selectedTicketValues["mission_InputField_" + num];
}
else
break;
}
if (MissionMgr.Instance.selectedTicketValues.ContainsKey("workTicketLabelsSelect"))
{
List<string> selectedicon = new List<string>(MissionMgr.Instance.selectedTicketValues["workTicketLabelsSelect"].Split('&'));
for (int i = 0; i < workTickeContent.transform.childCount; i++)
{
Transform child = workTickeContent.transform.GetChild(i);
if (child != null)
{
TMP_Text text = ToolFuncManager.FindChildWithComponent<TMP_Text>(child);
if (text != null)
{
if (selectedicon.Contains(text.text))
{
Toggle toggle = ToolFuncManager.FindChildWithComponent<Toggle>(child);
if (toggle != null)
{
toggle.isOn = true;
toggle.onValueChanged.AddListener(delegate { CheckAllToggle(); });
//toggle.interactable = false;
}
}
}
}
}
//allToggle.interactable = false;
}
}
}
}