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.
141 lines
4.1 KiB
141 lines
4.1 KiB
using System.Collections; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
using AX.MessageSystem; |
|
using System; |
|
using AX.TrackRecord; |
|
using DevelopEngine; |
|
//Author:YHD |
|
public class SubwayControl : SingletonMono<SubwayControl> { |
|
private Transform trigger; |
|
private bool Flag = true; |
|
private GameObject top; |
|
private BoxCollider bc; |
|
private List<string> SubwayFires = new List<string>(); |
|
private GameObject smoke; |
|
private bool smokeShowFlag = false; |
|
private bool StartKillSmokeFlag = false; |
|
private int maxSize = 300; |
|
private int seconds = 10;//10秒钟烟雾排净 |
|
private float curSize = 300; |
|
// Use this for initialization |
|
void Start () { |
|
trigger = transform.Find("trigger"); |
|
top = transform.Find("DiTie_Top").gameObject; |
|
bc = GetComponent<BoxCollider>(); |
|
smoke = TransformHelper.FindChild(GameObject.Find("TianJinZhan").transform, "nei-subway").gameObject; |
|
maxSize = smoke.transform.GetChild(0).GetComponent<ParticleSystem>().main.maxParticles; |
|
curSize = maxSize; |
|
MessageDispatcher.AddListener("DoubleClick", DoubleClickFunc); |
|
MessageDispatcher.AddListener("Y", SetSmoke); |
|
MessageDispatcher.AddListener("SmokeChange", SmokeChange); |
|
} |
|
void OnDestroy() |
|
{ |
|
MessageDispatcher.RemoveListener("DoubleClick", DoubleClickFunc); |
|
MessageDispatcher.RemoveListener("Y", SetSmoke); |
|
MessageDispatcher.RemoveListener("SmokeChange", SmokeChange); |
|
} |
|
|
|
private void SetSmoke(IMessage msg) |
|
{ |
|
if (msg.Data != null) |
|
return; |
|
if (CheckHasSubwayFire()) |
|
{ |
|
smokeShowFlag = !smokeShowFlag; |
|
SetSmoke(smokeShowFlag); |
|
if (RecordManager.Instance.IsRecording) |
|
{ |
|
TrackRecordHelpClass.RecordTriggerEvent("ShowHideSmoke", smokeShowFlag); |
|
} |
|
} |
|
} |
|
public void SetSmoke(bool flag) |
|
{ |
|
smokeShowFlag = flag; |
|
smoke.SetActive(flag); |
|
|
|
} |
|
|
|
|
|
private void DoubleClickFunc(IMessage msg) |
|
{ |
|
if ((string)msg.Data == (transform.name + trigger.name)) |
|
{ |
|
Flag = !Flag; |
|
SetTop(Flag); |
|
if (RecordManager.Instance.IsRecording) |
|
{ |
|
TrackRecordHelpClass.RecordTriggerEvent("DoubleClick", Flag); |
|
} |
|
} |
|
} |
|
|
|
|
|
public void SetTop(bool flag) |
|
{ |
|
top.SetActive(flag); |
|
bc.enabled = flag; |
|
Flag = flag; |
|
} |
|
|
|
private bool CheckHasSubwayFire() |
|
{ |
|
var pfire = GameObject.Find("pfire").transform; |
|
foreach (Transform fire in pfire) |
|
{ |
|
if (fire.GetComponent<CengID>().hitTag == "Subway") |
|
{ |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
#region 烟控制相关 |
|
private void SmokeChange(IMessage msg) |
|
{ |
|
if (smokeShowFlag)//烟正显示着。。。 |
|
{ |
|
if (CheckHasSubwayFire()) |
|
{ |
|
MessageDispatcher.SendMessage("Operatinghints", (object)"有火未熄灭,无法排烟!"); |
|
return; |
|
} |
|
//排烟控制 |
|
StartKillSmokeFlag = true; |
|
MessageDispatcher.SendMessage("Operatinghints", (object)"开始排烟!"); |
|
} |
|
} |
|
// Update is called once per frame |
|
void FixedUpdate() |
|
{ |
|
if (StartKillSmokeFlag) |
|
{ |
|
if (curSize > 0) |
|
{ |
|
curSize -= Time.deltaTime * (maxSize / seconds); |
|
SetSmoke(curSize); |
|
} |
|
else |
|
{ |
|
StartKillSmokeFlag = false; |
|
curSize = maxSize; |
|
SetSmoke(curSize); |
|
SetSmoke(false); |
|
MessageDispatcher.SendMessage("Operatinghints", (object)"排烟结束!"); |
|
} |
|
} |
|
} |
|
|
|
private void SetSmoke(float curSize) |
|
{ |
|
foreach (Transform child in smoke.transform) |
|
{ |
|
var particle = child.GetComponent<ParticleSystem>().main; |
|
particle.maxParticles = (int)curSize; |
|
} |
|
} |
|
#endregion |
|
}
|
|
|