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