HKMBFZ/Assets/Scripts/Szz_Scripts/UI/122/射击实施/DanYaoZhunBeiPage.cs

361 lines
11 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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