网上演练贵港万达广场(人员密集)
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.
 
 
 

200 lines
6.9 KiB

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Leak2Data
{
public long ID;
public float TimeAll;
public float GravityModifierBody;
public float GravityModifierShuiHua;
public float GravityModifierSprayWide;
public int MaxParticlesBody;
public int MaxParticlesShuiHua;
public int MaxParticlesSprayWide;
public float Count;
public int level;
}
public class Leak2Controller : MonoBehaviour
{
[Range(0, 2)]
public int level;
public ParticleSystem Body;
public ParticleSystem ShuiHua;
public ParticleSystem SprayWide;
public float TimeAll;
private float StartGravityBody;
private float StartGravityShuiHua;
private float StartGravitySprayWide;
private int ParticleNumBody;
private int ParticleNumShuiHua;
private int ParticleNumSprayWide;
private float timmer;
private float count;
private Leak2Data myData;
public long OilTankId;
void Awake()
{
myData = new Leak2Data();
}
void Start()
{
var main = Body.main;
var main1 = ShuiHua.main;
var main2 = SprayWide.main;
if (level == 0)
{
StartGravityBody = 10;
StartGravityShuiHua = 10;
StartGravitySprayWide = 5;
ParticleNumBody = 4000;
ParticleNumShuiHua = 800;
ParticleNumSprayWide = 800;
}
else if (level == 1)
{
StartGravityBody = 30;
StartGravityShuiHua = 30;
StartGravitySprayWide = 15;
ParticleNumBody = 3500;
ParticleNumShuiHua = 700;
ParticleNumSprayWide = 700;
}
else
{
StartGravityBody = 50;
StartGravityShuiHua = 50;
StartGravitySprayWide = 25;
ParticleNumBody = 3000;
ParticleNumShuiHua = 600;
ParticleNumSprayWide = 600;
}
main.gravityModifier = StartGravityBody;
main1.gravityModifier = StartGravityShuiHua;
main2.gravityModifier = StartGravitySprayWide;
main.maxParticles = ParticleNumBody;
main1.maxParticles = ParticleNumShuiHua;
main2.maxParticles = ParticleNumSprayWide;
}
void Update()
{
if (TimeAll > 0)
{
if (count < TimeAll)
{
timmer += Time.deltaTime;
var main = Body.main;
var main1 = ShuiHua.main;
var main2 = SprayWide.main;
if (timmer >= 0.5f)
{
if (main.gravityModifier.constant <= 70)
{
main.gravityModifier = main.gravityModifier.constant + (70 - StartGravityBody) / TimeAll / 2;
main.maxParticles = main.maxParticles - Mathf.CeilToInt((ParticleNumBody - 2400) / TimeAll / 2);
}
if (main1.gravityModifier.constant <= 70)
{
main1.gravityModifier = main1.gravityModifier.constant + (70 - StartGravityShuiHua) / TimeAll / 2;
main1.maxParticles = main1.maxParticles - Mathf.CeilToInt((ParticleNumShuiHua - 500) / TimeAll / 2);
}
if (main2.gravityModifier.constant <= 34)
{
main2.gravityModifier = main2.gravityModifier.constant + (34 - StartGravitySprayWide) / TimeAll / 2;
main2.maxParticles = main2.maxParticles - Mathf.CeilToInt((ParticleNumSprayWide - 500) / TimeAll / 2);
}
timmer = 0;
count += 0.5f;
}
}
else
{
TimeAll = 0;
}
}
}
public void Initialize(Vector3 hitPoint, OilTankMessage TankMsg)
{
float dis = 0;
RaycastHit[] AllHit = Physics.RaycastAll(hitPoint, Vector3.down, 100f, LayerMask.NameToLayer("SoliderRoad"));
foreach (RaycastHit hit in AllHit)
{
Debug.Log(hit.transform.name + "down");
if (!hit.transform.parent.GetComponent<OilTankMessage>()
&& hit.transform.name.Contains("Floor"))
{
dis = Vector3.Distance(hit.point, hitPoint);
Debug.Log(dis);
}
}
TankMsg.HasLeakeSet = true;
//如果是导调组或者灾情库管理员
if ((CurrentUserInfo.room != null && CurrentUserInfo.mySelf.Id == CurrentUserInfo.room.Owner.UserInfo.Id)
|| GameSettings.othersSettings.mode == Mode.DisasterManagement)
{
if (OilSetManager.GetInstance.gameObject.activeSelf)
OilSetManager.GetInstance.ChuLiangSlider.GetComponent<Slider>().interactable = false;
}
Debug.Log((TankMsg.MyHeight - dis) + ":" + TankMsg.MyHeight);
if (TankMsg.OutShowHeight - dis <= TankMsg.MyHeight / 4)
{
level = 2;
}
else if ((TankMsg.OutShowHeight - dis > TankMsg.MyHeight / 4) && (TankMsg.OutShowHeight - dis <= TankMsg.MyHeight / 1.8))
{
level = 1;
}
else
{
level = 0;
}
Vector3 hitobjVec = TankMsg.transform.position;
transform.LookAt(new Vector3(hitobjVec.x, transform.position.y, hitobjVec.z));
transform.Rotate(new Vector3(0, -180, 0));
}
//public override KeyValuePair<long, object> PushData()
//{
// myData.ID = GetComponent<CloneGameObjInfo>().gameObjID;
// myData.TimeAll = this.TimeAll;
// myData.GravityModifierBody = Body.main.gravityModifier.constant;
// myData.GravityModifierShuiHua = ShuiHua.main.gravityModifier.constant;
// myData.GravityModifierSprayWide = SprayWide.main.gravityModifier.constant;
// myData.MaxParticlesBody = Body.main.maxParticles;
// myData.MaxParticlesShuiHua = ShuiHua.main.maxParticles;
// myData.MaxParticlesSprayWide = SprayWide.main.maxParticles;
// myData.Count = this.count;
// myData.level = this.level;
// return new KeyValuePair<long, object>(myData.ID, myData);
//}
//public override void PullData(KeyValuePair<long, object> data)
//{
// if (GetComponent<CloneGameObjInfo>().gameObjID != data.Key)
// return;
// myData = (Leak2Data)data.Value;
// var main = Body.main;
// var main1 = ShuiHua.main;
// var main2 = SprayWide.main;
// main.gravityModifier = myData.GravityModifierBody;
// main.maxParticles = myData.MaxParticlesBody;
// main1.gravityModifier = myData.GravityModifierShuiHua;
// main1.maxParticles = myData.MaxParticlesShuiHua;
// main2.gravityModifier = myData.GravityModifierSprayWide;
// main2.maxParticles = myData.MaxParticlesSprayWide;
// this.TimeAll = myData.TimeAll;
// this.level = myData.level;
//}
}