You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
182 lines
7.7 KiB
182 lines
7.7 KiB
3 years ago
|
using UnityEngine;
|
||
|
using System.Collections;
|
||
|
using UnityEngine.UI;
|
||
|
using System;
|
||
|
using AX.MessageSystem;
|
||
|
using AX.TrackRecord;
|
||
|
using System.Text.RegularExpressions;
|
||
|
using System.Collections.Generic;
|
||
|
|
||
|
public class OilTankDisasterSetting : MonoBehaviour {
|
||
|
|
||
|
public Button SaveButton;
|
||
|
//public string OilTankName;
|
||
|
public GameObject OilTankObj;
|
||
|
private OilTank oilTank;
|
||
|
|
||
|
private InputField storage;
|
||
|
private InputField reserves;
|
||
|
private Toggle isExplode;
|
||
|
private Toggle isTwist;
|
||
|
private InputField startTime;
|
||
|
private InputField happenTime;
|
||
|
private Text TiShiText;
|
||
|
// Use this for initialization
|
||
|
void Start () {
|
||
|
SaveButton = this.transform.Find("SaveButton").GetComponent<Button>();
|
||
|
SaveButton.onClick.AddListener(SaveExposionInfo);
|
||
|
|
||
|
storage = this.transform.Find("ChuWuInputField").GetComponent<InputField>();
|
||
|
reserves = this.transform.Find("ChuLiangInputField").GetComponent<InputField>();
|
||
|
isExplode = this.transform.Find("Image").Find("Toggle").GetComponent<Toggle>();
|
||
|
isTwist = this.transform.Find("Image").Find("Toggle1").GetComponent<Toggle>();
|
||
|
startTime = this.transform.Find("StartTimeInputField").GetComponent<InputField>();
|
||
|
happenTime = this.transform.Find("HappenTimeInputField").GetComponent<InputField>();
|
||
|
TiShiText = this.transform.Find("TiShiText").GetComponent<Text>();
|
||
|
|
||
|
isExplode.onValueChanged.AddListener(CtrlExplosionEdit);
|
||
|
isTwist.onValueChanged.AddListener(CtrlTwistEdit);
|
||
|
}
|
||
|
|
||
|
private void SaveExposionInfo()
|
||
|
{
|
||
|
if (!string.IsNullOrEmpty(reserves.text) && reserves.text != "0")
|
||
|
{
|
||
|
if (!(Regex.Match(reserves.text, "^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$").Success
|
||
|
|| Regex.Match(reserves.text, "^[1-9]\\d*$").Success))
|
||
|
{
|
||
|
TiShiText.text = "储量应为大于0的整数或小数";
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (isExplode.isOn || isTwist.isOn)
|
||
|
{
|
||
|
if (string.IsNullOrEmpty(happenTime.text))
|
||
|
{
|
||
|
TiShiText.text = "发生时间不能为空";
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (!string.IsNullOrEmpty(startTime.text) && startTime.text != "0")
|
||
|
{
|
||
|
if (!Regex.Match(startTime.text, "^[1-9]\\d*$").Success)
|
||
|
{
|
||
|
TiShiText.text = "开始时间应为大于0的整数";
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!string.IsNullOrEmpty(happenTime.text))
|
||
|
{
|
||
|
if (!Regex.Match(happenTime.text, "^[1-9]\\d*$").Success)
|
||
|
{
|
||
|
TiShiText.text = "发生时间应为大于0的整数";
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (OilTankObj.transform.parent.Find("Canvas1").Find("Slider").GetComponent<OilTankDisasterControl>().happening)
|
||
|
{
|
||
|
TiShiText.text = "油罐已进入爆炸/变形前危险阶段,不能保存";
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(OilTankObj != null)
|
||
|
oilTank = OilTankObj.GetComponent<ShowOilTankDisasterSetWin>().oilTank;
|
||
|
oilTank.Storage = storage.text;
|
||
|
oilTank.Reserves = float.Parse(reserves.text);
|
||
|
oilTank.IsExplode = isExplode.isOn;
|
||
|
oilTank.IsTwist = isTwist.isOn;
|
||
|
if (isExplode.isOn || isTwist.isOn)
|
||
|
{
|
||
|
oilTank.StartTime = int.Parse(startTime.text);
|
||
|
oilTank.HappenTime = int.Parse(happenTime.text);
|
||
|
|
||
|
//1.没按F5来触发过爆炸或变形前修改的情况下,重新设置保存时需要删除设置时随机产生的火
|
||
|
//2.如已按F5触发过爆炸或变形后再修改的情况,重新设置保存时需要删除设置时随机产生的火后爆炸(变形后)随机产生的火
|
||
|
//3.对于初始记录和事件型记录还没开始发生,发生一半的情况,加载节点后,重新编辑保存触发之前,要销毁加载出来的油罐设置时产生的火
|
||
|
Transform pfire = GameObject.Find("pfire").transform;
|
||
|
foreach (Transform child in pfire)
|
||
|
{
|
||
|
if (child.GetComponent<ExplodeFire>() && child.GetComponent<ExplodeFire>().youGuan == OilTankObj)
|
||
|
{
|
||
|
Destroy(child.gameObject);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (RecordManager.Instance.IsRecording)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RecordResetOilTankEvent", (object)OilTankObj.name);
|
||
|
}
|
||
|
|
||
|
OilTankObj.transform.parent.Find("Canvas1").Find("Slider").GetComponent<OilTankDisasterControl>().RandomCloneFire();
|
||
|
}
|
||
|
|
||
|
//新建课件里,再次编辑保存时,清空属性器里不是通过编辑产生的值CanvasSliderValue,避免加载后不是通过编辑的属性有值的情况下,再次编辑保存立马爆炸
|
||
|
oilTank.CanvasSliderValue = 0f;
|
||
|
oilTank.OilTankLid_Transform_List = new List<BaseTransformAttribute>();
|
||
|
oilTank.OilTankColor = new Vector3();
|
||
|
//新建课件里,加载节点后加载完再次编辑保存时,填充条值归0,颜色值归0.以达到加载完初始记录一半的情况后,再次编辑保存后,从初始状态开始触发
|
||
|
//对加载初始记录还没开始和爆炸完的情况无影响,事件型记录记录一半的情况也一样,其他情况无影响
|
||
|
OilTankObj.transform.parent.Find("Canvas1").Find("Slider").GetComponent<Slider>().value = 0;
|
||
|
OilTankObj.transform.parent.Find("Canvas1").Find("Slider").GetComponent<OilTankDisasterControl>().r = 0f;
|
||
|
OilTankObj.transform.parent.Find("Canvas1").Find("Slider").GetComponent<OilTankDisasterControl>().g = 0f;
|
||
|
OilTankObj.transform.parent.Find("Canvas1").Find("Slider").GetComponent<OilTankDisasterControl>().b = 0f;
|
||
|
|
||
|
//if (!OilTankObj.GetComponent<RecordOilTankAttri>())
|
||
|
//{
|
||
|
// OilTankObj.AddComponent<RecordOilTankAttri>();
|
||
|
//}
|
||
|
if (RecordManager.Instance.IsRecording)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("RECORD_EDITOILTANKATTRI_EVENT", (object)OilTankObj.name);
|
||
|
}
|
||
|
|
||
|
this.gameObject.SetActive(false);
|
||
|
|
||
|
//已经爆炸或变形过一次,发生后,若再次设置并保存,需要重置flag标识才能再次按F5启动爆炸或变形;且也需要重置控制加载设置的属性的标识flag1
|
||
|
//OilTankObj.transform.parent.FindChild("Canvas1").FindChild("Slider").GetComponent<OilTankDisasterControl>().flag = false;
|
||
|
//OilTankObj.transform.parent.FindChild("Canvas1").FindChild("Slider").GetComponent<OilTankDisasterControl>().flag1 = false;
|
||
|
|
||
|
//多次编辑需注销掉之前的等待,以最后一次保存的为准开始等待(若F5,或等待0分钟这种立即开始的情况只能等到发生完重置后才能再设置保存,所以无影响)
|
||
|
OilTankObj.transform.parent.Find("Canvas1").Find("Slider").GetComponent<OilTankDisasterControl>().StopTrigger();
|
||
|
|
||
|
MessageDispatcher.SendMessage(OilTankObj.name, "SETOILTANK", oilTank);
|
||
|
}
|
||
|
|
||
|
private void CtrlExplosionEdit(bool isOn)
|
||
|
{
|
||
|
if (isOn == true)
|
||
|
{
|
||
|
startTime.interactable = true;
|
||
|
happenTime.interactable = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
startTime.interactable = false;
|
||
|
happenTime.interactable = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void CtrlTwistEdit(bool isOn)
|
||
|
{
|
||
|
if (isOn == true)
|
||
|
{
|
||
|
startTime.interactable = true;
|
||
|
happenTime.interactable = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
startTime.interactable = false;
|
||
|
happenTime.interactable = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Update is called once per frame
|
||
|
void Update () {
|
||
|
|
||
|
}
|
||
|
}
|