361 lines
11 KiB
C#
361 lines
11 KiB
C#
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<string> chooseList=new List<string>();
|
||
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<int> 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<int> ParseNumbers(string input)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(input))
|
||
return new List<int>();
|
||
|
||
|
||
// 使用正则表达式提取所有数字
|
||
var matches = Regex.Matches(input, @"\d+");
|
||
|
||
|
||
return matches
|
||
.Cast<Match>()
|
||
.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();
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 页面中的循环逻辑,F1开始
|
||
/// </summary>
|
||
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();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 显示对应的装弹状态
|
||
/// </summary>
|
||
/// <param name="pointName"></param>
|
||
/// <param name="state">0:有弹 1:选中 2:留膛 3:默认(空白)</param>
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 重置所有point状态
|
||
/// </summary>
|
||
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);
|
||
}
|
||
}
|
||
}
|
||
}
|