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.
142 lines
4.1 KiB
142 lines
4.1 KiB
3 years ago
|
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
|
||
|
}
|