using SK.Framework; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using TMPro; using UnityEngine; public class DanYaoZhunBeiPage : UIPageBtnEventBase { public TextMeshProUGUI downTipMsg; //底部的提示框 public GameObject surePage; Manager122Base manager122; public Transform pointLayout; //圆点的poin // Start is called before the first frame update public TMP_InputField 弹序; bool isChooseStart; public GameObject 发火选弹; public GameObject 装定引信; public GameObject 查询引信; List chooseList=new List(); private void Awake() { manager122 = Manager122Base.instance; } public SheJiShiShi122Page shi122Page; private void OnEnable() { isChooseStart = false; shi122Page.enabled = false; if (!Shoot122Manager.Instance.isShoot) FaHuoXuanDanAc(); else { //自动进行留膛检测 ResetPointsState(); manager122.Show122DwonMsg("弹药状态已初始化"); } } private void OnDisable() { manager122.Show122DwonMsg(""); shi122Page.enabled = true; shi122Page.诸元方式.SetActive(true); } //射击实施打开后,会接收药温等信息,按确认后,开始解算基本信息 public override void Update() { base.Update(); if (isChooseStart) { if (Input.GetKeyDown(KeyCode.Return)) { if (弹序.text == "") return; if (弹序.text.Contains(".")) //有点就是单个选 { List results = ParseNumbers(弹序.text); for (int i = 0; i < results.Count; i++) { if (!chooseList.Contains(results[i].ToString())) { chooseList.Add(results[i].ToString()); Shoot122Manager.Instance.chooseShoot.Add(results[i].ToString()); Shoot122Manager.Instance.AddOrUpdate(results[i].ToString(), 1); FindPointAndShowState(results[i].ToString(), 1); } } } else //没有就是一次选多个 { int allCount = int.Parse(弹序.text); for (int i = 1; i <= allCount; i++) { if (!chooseList.Contains(i.ToString())) { chooseList.Add(i.ToString()); Shoot122Manager.Instance.chooseShoot.Add(i.ToString()); Shoot122Manager.Instance.AddOrUpdate(i.ToString(), 1); FindPointAndShowState(i.ToString(), 1); } } } } } //if (Input.GetKeyDown(KeyCode.F7)) //{ // gameObject.SetActive(false); //} } public static List ParseNumbers(string input) { if (string.IsNullOrWhiteSpace(input)) return new List(); // 使用正则表达式提取所有数字 var matches = Regex.Matches(input, @"\d+"); return matches .Cast() .Select(m => int.Parse(m.Value)) .ToList(); } public override void OnF1Click() { base.OnF1Click(); this.Sequence().Stop(); //F1Event(); manager122.Show122DwonMsg("正在进行装弹检测..."); } GameObject currectPage; public override void OnF2Click() { base.OnF2Click(); 装定引信.SetActive(true); 查询引信.SetActive(false); 发火选弹.SetActive(false); } public override void OnF3Click() { base.OnF3Click(); 查询引信.SetActive(true); 装定引信.SetActive(false); 发火选弹.SetActive(false); } public override void OnF4Click() { base.OnF4Click(); 发火选弹.SetActive(true); 查询引信.SetActive(false); 装定引信.SetActive(false); } public override void OnF6Click() { base.OnF6Click(); StateClear(); } void StateClear() { Debug.Log("状态清除"); this.Sequence().Stop(); this.Sequence() .Event(() => { surePage.SetActive(true); }) .Until(() => Input.GetKeyDown(KeyCode.Return)|| surePage.activeInHierarchy==false) //确认后关闭确认界面 .Events(() => { surePage.SetActive(false); //关闭所有的标点 manager122.Show122DwonMsg("弹药状态已初始化"); ResetPointsState(); chooseList.Clear(); Shoot122Manager.Instance.chooseShoot.Clear(); Shoot122Manager.Instance.choosedValue.Clear(); }) .Begin(); } public override void OnF7Click() { base.OnF7Click(); gameObject.SetActive(false); } void FaHuoXuanDanAc() { surePage.SetActive(false); manager122.Show122DwonMsg("输入完毕弹数按[ 确定 ]键!"); isChooseStart = false; this.Sequence() .Delay(0.1f) .Until(()=> manager122.发火.Get3DBtnState()&& manager122.引信.Get3DBtnState()) //等待发火和引信激活 .Until(() => Input.GetKeyDown(KeyCode.F1)) //F1后开始装弹检测 .Event(() => manager122.Show122DwonMsg("正在进行装弹检测...")) .Delay(3f) .Events(() => { //先让当前界面的按钮失去焦点 //FocusManager.Instance.currentPage.DisableFocus(); manager122.Show122DwonMsg("装弹检测完毕!"); //默认全部都有弹 for (int i = 1; i < 41; i++) { FindPointAndShowState(i.ToString(), 0); } isChooseStart = true; //开始选 }) //.Until(() => Input.GetKeyDown(KeyCode.Alpha1)) //按1选弹 //.Until(() => Input.GetKeyDown(KeyCode.Return)) //确认后弹出确认界面 //.Event(() => { surePage.SetActive(true); }) // .Until(() => Input.GetKeyDown(KeyCode.Return)) //确认后关闭确认界面 // .Events(() => { // //关闭确认后选中 // surePage.SetActive(false); // FindPointAndShowState("33",1); // }) .Until(() => Shoot122Manager.Instance.isShoot) //等待炮长激发 .Event(() => manager122.Show122DwonMsg("击发准备完毕,可以击发!按[ 退出 ]键退出击发准备!")) .Events(() => { //自动进行留膛检测 ResetPointsState(); manager122.Show122DwonMsg("弹药状态已初始化"); }) // .Until(() => Input.GetKeyDown(KeyCode.F6)) //进行状态清除 // .Event(() => { surePage.SetActive(true); }) //.Until(() => Input.GetKeyDown(KeyCode.Return)) //确认后关闭确认界面 // .Events(() => { // surePage.SetActive(false); // //关闭所有的标点 // manager122.Show122DwonMsg("弹药状态已初始化"); // ResetPointsState(); // FocusManager.Instance.currentPage.EnableFocus(); // }) .Begin(); } /// /// 页面中的循环逻辑,F1开始 /// void F1Event() { //surePage.SetActive(false); //manager122.Show122DwonMsg("输入完毕弹数按[ 确定 ]键!"); //this.Sequence() // .Delay(0.1f) // .Until(() => manager122.发火.Get3DBtnState() && manager122.引信.Get3DBtnState()) //等待发火和引信激活 // .Event(() => manager122.Show122DwonMsg("正在进行装弹检测...")) // .Delay(3f) // .Events(() => { // //先让当前界面的按钮失去焦点 // FocusManager.Instance.currentPage.DisableFocus(); // manager122.Show122DwonMsg("装弹检测完毕!"); // FindPointAndShowState("33", 0); // FindPointAndShowState("35", 0); // }) // .Until(() => Input.GetKeyDown(KeyCode.Alpha1)) //按1选弹 // .Until(() => Input.GetKeyDown(KeyCode.Return)) //确认后弹出确认界面 // .Event(() => { surePage.SetActive(true); }) // .Until(() => Input.GetKeyDown(KeyCode.Return)) //确认后关闭确认界面 // .Events(() => { // //关闭确认后选中 // surePage.SetActive(false); // FindPointAndShowState("33", 1); // }) // .Until(() => shootState) //等待炮长激发 // .Event(() => manager122.Show122DwonMsg("击发准备完毕,可以击发!按[ 退出 ]键退出击发准备!")) // .Events(() => { // //自动进行留膛检测 // }) // .Until(() => Input.GetKeyDown(KeyCode.F6)) //进行状态清除 // .Event(() => { surePage.SetActive(true); }) // .Until(() => Input.GetKeyDown(KeyCode.Return)) //确认后关闭确认界面 // .Events(() => { // surePage.SetActive(false); // //关闭所有的标点 // manager122.Show122DwonMsg("弹药状态已初始化"); // ResetPointsState(); // FocusManager.Instance.currentPage.EnableFocus(); // }) // .Begin(); } /// /// 显示对应的装弹状态 /// /// /// 0:有弹 1:选中 2:留膛 3:默认(空白) void FindPointAndShowState(string pointName,int state) { for (int i = 0; i < pointLayout.childCount; i++) { if (pointName == pointLayout.GetChild(i).name) { if (state != 3) { for (int j = 0; j < pointLayout.GetChild(i).childCount; j++) { pointLayout.GetChild(i).GetChild(j).gameObject.SetActive(false); } pointLayout.GetChild(i).GetChild(state).gameObject.SetActive(true); pointLayout.GetChild(i).gameObject.SetActive(true); //Debug.Log(pointLayout.GetChild(i).GetChild(state).gameObject); } else { for (int j = 0; j < pointLayout.GetChild(i).childCount; j++) { pointLayout.GetChild(i).GetChild(j).gameObject.SetActive(false); } pointLayout.GetChild(i).gameObject.SetActive(false); } break; } } } /// /// 重置所有point状态 /// void ResetPointsState() { for (int i = 0; i < pointLayout.childCount; i++) { for (int j = 0; j < pointLayout.GetChild(i).childCount; j++) { pointLayout.GetChild(i).GetChild(j).gameObject.SetActive(false); } } } }