天津23维预案
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.
 
 
 
 
 
 

181 lines
7.7 KiB

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 () {
}
}