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.
772 lines
34 KiB
772 lines
34 KiB
4 years ago
|
using AX.MessageSystem;
|
||
|
using AX.NetworkSystem;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
|
||
|
public class DisasterLoad : MonoBehaviour
|
||
|
{
|
||
|
private DisasterLibraryFile disaster;
|
||
|
|
||
|
private WindZone windZone;
|
||
|
|
||
|
private GameObject P_FireNormal;
|
||
|
public GameObject fireNormalPrefab;
|
||
|
private GameObject P_FireSpreadLine;
|
||
|
public GameObject fireSpreadLinePrefab;
|
||
|
private GameObject P_FireLiquidLevel;
|
||
|
public GameObject fireLiquidLevelPrefab;
|
||
|
private GameObject P_Leak1;
|
||
|
public GameObject leak1Prefab;
|
||
|
private GameObject P_Leak2;
|
||
|
public GameObject leak2Prefab;
|
||
|
private GameObject P_Wounded;
|
||
|
public GameObject woundedPrefab;
|
||
|
private GameObject P_TrappedPerson;
|
||
|
public GameObject trappedPrefab;
|
||
|
private GameObject P_Insider;
|
||
|
public GameObject insiderPrefab;
|
||
|
public GameObject dangerousPrefab;
|
||
|
private GameObject P_Dangerous;
|
||
|
void Awake()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
// Use this for initialization
|
||
|
void Start()
|
||
|
{
|
||
|
disaster = GameSettings.othersSettings.disaster;
|
||
|
|
||
|
windZone = GameObject.Find("WindZone").GetComponent<WindZone>();
|
||
|
|
||
|
P_FireNormal = GameObject.Find("P_FireNormal");
|
||
|
P_FireSpreadLine = GameObject.Find("P_FireSpreadLine");
|
||
|
P_FireLiquidLevel = GameObject.Find("P_FireLiquidLevel");
|
||
|
P_Leak1 = GameObject.Find("P_Leak1");
|
||
|
P_Leak2 = GameObject.Find("P_Leak2");
|
||
|
P_Wounded = GameObject.Find("P_Wounded");
|
||
|
P_TrappedPerson = GameObject.Find("P_TrappedPerson");
|
||
|
P_Insider = GameObject.Find("P_Insider");
|
||
|
P_Dangerous = GameObject.Find("P_DangerousCargo");
|
||
|
|
||
|
if (disaster != null
|
||
|
&& !GameSettings.disasterSetting.isCteateDisaster//只有创建灾情时,此isCteateDisaster不为true;查看,编辑为false
|
||
|
)
|
||
|
{
|
||
|
if (GameSettings.othersSettings.mode==Mode.DisasterManagement)
|
||
|
{
|
||
|
LoadDisaster();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Update is called once per frame
|
||
|
void Update()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 加载灾情
|
||
|
/// </summary>
|
||
|
public void LoadDisaster()
|
||
|
{
|
||
|
if (disaster!=null)
|
||
|
{
|
||
|
//设置风向风力
|
||
|
WindZoneSet();
|
||
|
//设置油罐
|
||
|
OilTanksSet();
|
||
|
//设置油罐设置UI,风向风力UI,胜利条件UI,报警信息UI,普通火属性设置UI及他们的是否可以修改
|
||
|
MessageDispatcher.SendMessage("LOAD_UIDISASTER");
|
||
|
//生成普通火
|
||
|
CloneNormalFire();
|
||
|
//生成全液面火
|
||
|
CloneLiquidLevelFire();
|
||
|
//生成泄露1
|
||
|
CloneLeak1();
|
||
|
//生成泄露2
|
||
|
CloneLeak2();
|
||
|
//生成伤员
|
||
|
CloneWounded();
|
||
|
//生成被困人员
|
||
|
CloneTrapped();
|
||
|
//生成知情人
|
||
|
CloneInsider();
|
||
|
CloneDangerous();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 设置风向风力
|
||
|
/// </summary>
|
||
|
private void WindZoneSet()
|
||
|
{
|
||
|
var baseGameObjInfo = windZone.gameObject.GetComponent<BaseGameObjInfo>();
|
||
|
var cloneGameObjInfo = windZone.gameObject.GetComponent<CloneGameObjInfo>();
|
||
|
WindDisaster windDisaster;
|
||
|
|
||
|
for (int i = 0; i < disaster.DisasterList.Count; i++)
|
||
|
{
|
||
|
if (disaster.DisasterList[i].Disaster.GetType().Name == "WindDisaster")
|
||
|
{
|
||
|
windDisaster = (WindDisaster)disaster.DisasterList[i].Disaster;
|
||
|
BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, windDisaster);
|
||
|
|
||
|
windZone.transform.rotation = windDisaster.Rotation;
|
||
|
windZone.windMain = windDisaster.WidnForce;
|
||
|
|
||
|
//风力风向设置同步
|
||
|
if (GameSettings.othersSettings.mode!=Mode.DisasterManagement)
|
||
|
{
|
||
|
WindZoneSyncData arg = new WindZoneSyncData();
|
||
|
arg.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
arg.gameObjID = baseGameObjInfo.gameObjID;
|
||
|
arg.Rotation = windDisaster.Rotation;
|
||
|
arg.windMain = windDisaster.WidnForce;
|
||
|
NetworkManager.Default.SendAsync("WIND_ZONE_SYNC", arg);
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 设置油罐信息
|
||
|
/// </summary>
|
||
|
public void OilTanksSet()
|
||
|
{
|
||
|
OilTankDisaster oilTankDisaster;
|
||
|
GameObject oilTank;
|
||
|
BaseGameObjInfo baseGameObjInfo;
|
||
|
CloneGameObjInfo cloneGameObjInfo;
|
||
|
OilTankMessage oilTankMessage;
|
||
|
|
||
|
for (int i = 0; i < disaster.DisasterList.Count; i++)
|
||
|
{
|
||
|
if (disaster.DisasterList[i].Disaster.GetType().Name == "OilTankDisaster")
|
||
|
{
|
||
|
oilTankDisaster = (OilTankDisaster)disaster.DisasterList[i].Disaster;
|
||
|
oilTank = EntitiesManager.Instance.GetEntityByID(oilTankDisaster.GameObjID);
|
||
|
|
||
|
if (oilTank)
|
||
|
{
|
||
|
baseGameObjInfo = oilTank.GetComponent<BaseGameObjInfo>();
|
||
|
cloneGameObjInfo = oilTank.GetComponent<CloneGameObjInfo>();
|
||
|
BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, oilTankDisaster);
|
||
|
|
||
|
oilTankMessage = oilTank.GetComponent<OilTankMessage>();
|
||
|
oilTankMessage.MatterContainer = oilTankDisaster.MatterContainer;
|
||
|
|
||
|
oilTankMessage.Reserves = oilTankDisaster.Reserves;
|
||
|
oilTankMessage.OutShowHeight = oilTankMessage.MyHeight * oilTankDisaster.Reserves;
|
||
|
oilTankMessage.SetOilStandard();
|
||
|
|
||
|
oilTankMessage.TakeTime = oilTankDisaster.TakeTime;
|
||
|
oilTankMessage.DurationTime = oilTankDisaster.DurationTime;
|
||
|
oilTankMessage.FlowRate = oilTankDisaster.FlowRate;
|
||
|
oilTankMessage.BoilProb = oilTankDisaster.BoilProb;
|
||
|
oilTankMessage.HasLeakeSet = oilTankDisaster.HasLeakeSet;
|
||
|
// 设置爆炸信息
|
||
|
if (oilTankDisaster.IsCanExplode)
|
||
|
{
|
||
|
oilTankMessage.IsCanExplode = oilTankDisaster.IsCanExplode;
|
||
|
oilTankMessage.ExplodeTime = oilTankDisaster.ExplodeTime;
|
||
|
oilTankMessage.ExplodeDeadRange = oilTankDisaster.ExplodeDeadRange;
|
||
|
oilTankMessage.ExplodeHurtRange = oilTankDisaster.ExplodeHurtRange;
|
||
|
}
|
||
|
// 设置喷溅沸溢信息
|
||
|
oilTankMessage.SplashTime = oilTankDisaster.SplashTime;
|
||
|
oilTankMessage.BoilOverTime = oilTankDisaster.BoilOverTime;
|
||
|
oilTankMessage.SplashProbability = oilTankDisaster.SplashProbability;
|
||
|
oilTankMessage.BoilOverProbability = oilTankDisaster.BoilOverProbability;
|
||
|
oilTankMessage.BoilOverDeadRange = oilTankDisaster.BoilOverDeadRange;
|
||
|
oilTankMessage.IsCanBoilOver = oilTankDisaster.isBoilOver;
|
||
|
//油罐信息同步
|
||
|
if (GameSettings.othersSettings.mode!=Mode.DisasterManagement)
|
||
|
{
|
||
|
OilTankInfoSyncData arg = new OilTankInfoSyncData();
|
||
|
arg.gameObjID = baseGameObjInfo.gameObjID;
|
||
|
arg.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
arg.MatterContainer = oilTankMessage.MatterContainer;
|
||
|
arg.Reserves = oilTankMessage.Reserves;
|
||
|
arg.OutShowHeight = oilTankMessage.OutShowHeight;
|
||
|
arg.Taketime = oilTankMessage.TakeTime;
|
||
|
arg.DurationTime = oilTankMessage.DurationTime;
|
||
|
arg.FlowRate = oilTankMessage.FlowRate;
|
||
|
arg.BoilProb = oilTankMessage.BoilProb;
|
||
|
arg.HasLeakeSet = oilTankMessage.HasLeakeSet;
|
||
|
// 同步爆炸信息
|
||
|
arg.isExplode = oilTankMessage.IsCanExplode;
|
||
|
arg.ExplodeTime = oilTankMessage.ExplodeTime;
|
||
|
arg.ExplodeDeadRange = oilTankMessage.ExplodeDeadRange;
|
||
|
arg.ExplodeHurtRange = oilTankMessage.ExplodeHurtRange;
|
||
|
// 设置喷溅沸溢信息
|
||
|
arg.SplashTime = oilTankMessage.SplashTime;
|
||
|
arg.BoilOverTime = oilTankMessage.BoilOverTime;
|
||
|
arg.SplashProbability = oilTankMessage.SplashProbability;
|
||
|
arg.BoilOverProbability = oilTankMessage.BoilOverProbability;
|
||
|
arg.BoilOverDeadRange = oilTankMessage.BoilOverDeadRange;
|
||
|
arg.isBoilOver = oilTankMessage.IsCanBoilOver;
|
||
|
NetworkManager.Default.SendAsync("OIL_TANK_INFO_SYNC", arg);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 生成普通火
|
||
|
/// </summary>
|
||
|
private void CloneNormalFire()
|
||
|
{
|
||
|
FireNormalDisaster fireNormalDisaster;
|
||
|
BaseGameObjInfo baseGameObjInfo;
|
||
|
CloneGameObjInfo cloneGameObjInfo;
|
||
|
|
||
|
for (int i = 0; i < disaster.DisasterList.Count; i++)
|
||
|
{
|
||
|
if (disaster.DisasterList[i].Disaster.GetType().Name == "FireNormalDisaster")
|
||
|
{
|
||
|
fireNormalDisaster = (FireNormalDisaster)disaster.DisasterList[i].Disaster;
|
||
|
|
||
|
GameObject obj = EntitiesManager.Instance.CreateObj(fireNormalPrefab,
|
||
|
fireNormalDisaster.Position,
|
||
|
P_FireNormal.transform,
|
||
|
fireNormalDisaster.GameObjID);
|
||
|
|
||
|
obj.name = CloneObjNameTool.Instance().GetCloneObjectName(fireNormalDisaster.GameObjType);
|
||
|
SelectedObjs.gameObjs.Add(obj);
|
||
|
|
||
|
baseGameObjInfo = obj.GetComponent<BaseGameObjInfo>();
|
||
|
cloneGameObjInfo = obj.GetComponent<CloneGameObjInfo>();
|
||
|
BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, fireNormalDisaster);
|
||
|
|
||
|
|
||
|
//克隆同步
|
||
|
if (GameSettings.othersSettings.mode!=Mode.DisasterManagement)
|
||
|
{
|
||
|
CloneDisasterSyncData clonesync = new CloneDisasterSyncData();
|
||
|
clonesync.ClonePosition = fireNormalDisaster.Position;
|
||
|
clonesync.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
clonesync.name = obj.name;
|
||
|
clonesync.floorNum = cloneGameObjInfo.floorNum;
|
||
|
clonesync.buildNum = cloneGameObjInfo.buildNum;
|
||
|
clonesync.interlayerNum = cloneGameObjInfo.interlayerNum;
|
||
|
clonesync.gameObjID = cloneGameObjInfo.gameObjID;
|
||
|
clonesync.gameObjType = cloneGameObjInfo.gameObjType;
|
||
|
clonesync.UserID = cloneGameObjInfo.UserID;
|
||
|
NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync);
|
||
|
}
|
||
|
|
||
|
|
||
|
obj.GetComponent<FireSpreadCtrl>().fireAttribute = fireNormalDisaster.fireAttribute;
|
||
|
obj.GetComponent<FireSpreadCtrl>().GetSpreadFirePositions();//生成火蔓延点
|
||
|
|
||
|
//火的蔓延设置同步
|
||
|
if (GameSettings.othersSettings.mode!=Mode.DisasterManagement)
|
||
|
{
|
||
|
FireOriginAttributeSyncData arg = new FireOriginAttributeSyncData();
|
||
|
arg.FireAttribute = fireNormalDisaster.fireAttribute;
|
||
|
arg.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
arg.gameObjID = baseGameObjInfo.gameObjID;
|
||
|
NetworkManager.Default.SendAsync("FIRE_ORIGINAL_ATTRIBUTE", arg);
|
||
|
}
|
||
|
|
||
|
MessageDispatcher.SendMessage(fireNormalDisaster.GameObjID, "FIRE_INITIALSIZE_SET", fireNormalDisaster.fireAttribute.initialSize);
|
||
|
MessageDispatcher.SendMessage("SET_SMOKE_DIRECTION");
|
||
|
|
||
|
if (GameSettings.othersSettings.isSelectedDisaster)
|
||
|
{
|
||
|
if (GameSettings.othersSettings.mode == Mode.DisasterManagement)
|
||
|
{
|
||
|
//灾情库编辑,灾情库查看; 加载灾情库进入演练的情况下不显示火的蔓延范围
|
||
|
CloneSpreadFireLine(fireNormalDisaster);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
private void CloneSpreadFireLine(FireNormalDisaster fireNormalDisaster)
|
||
|
{
|
||
|
List<Vector3> pathPoints = fireNormalDisaster.fireAttribute.pathPoints;
|
||
|
|
||
|
Vector3 startPoint;
|
||
|
Vector3 endPoint;
|
||
|
for (int i = 0; i < pathPoints.Count; i++)
|
||
|
{//三种蔓延方式都要画
|
||
|
if ((i + 1) < pathPoints.Count)
|
||
|
{
|
||
|
startPoint = pathPoints[i];
|
||
|
endPoint = pathPoints[i + 1];
|
||
|
Vector3 clonedObjPos = (startPoint + endPoint) / 2;
|
||
|
clonedObjPos = new Vector3(clonedObjPos.x, clonedObjPos.y + 0.1f, clonedObjPos.z);
|
||
|
var clonedObj = EntitiesManager.Instance.CreateObj(fireSpreadLinePrefab,
|
||
|
clonedObjPos,
|
||
|
P_FireSpreadLine.transform,
|
||
|
EntitiesManager.Instance.CreateObjID(CurrentUserInfo.mySelf.Id));
|
||
|
|
||
|
clonedObj.transform.forward = (-(endPoint - startPoint)).normalized;//改变线条的朝向
|
||
|
float distance = Vector3.Distance(startPoint, endPoint);//计算两点的距离
|
||
|
clonedObj.transform.localScale = new Vector3(30f, 30f, distance * 108);//延长线条,连接两点。
|
||
|
clonedObj.GetComponent<FireSpreadLineCtrl>().fireGameObjID = fireNormalDisaster.GameObjID;
|
||
|
|
||
|
//设置克隆物体所在楼层等基本属性,属性从点击的对象上获取
|
||
|
CloneGameObjInfo cloneObjInfo = clonedObj.GetComponent<CloneGameObjInfo>();
|
||
|
cloneObjInfo.gameObjType = CloneObjType.FireSpreadLine;
|
||
|
cloneObjInfo.UserID = CurrentUserInfo.mySelf.Id;
|
||
|
cloneObjInfo.buildNum = fireNormalDisaster.BuildNum;
|
||
|
cloneObjInfo.floorNum = fireNormalDisaster.FloorNum;
|
||
|
cloneObjInfo.interlayerNum = fireNormalDisaster.InterlayerNum;
|
||
|
|
||
|
clonedObj.SetActive(false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (fireNormalDisaster.fireAttribute.spreadWay == SpreadWay.Are
|
||
|
|| fireNormalDisaster.fireAttribute.spreadWay == SpreadWay.Around)
|
||
|
{
|
||
|
startPoint = pathPoints[pathPoints.Count - 1];
|
||
|
endPoint = pathPoints[0];
|
||
|
|
||
|
Vector3 clonedObjPos = (startPoint + endPoint) / 2;
|
||
|
clonedObjPos = new Vector3(clonedObjPos.x, clonedObjPos.y + 0.1f, clonedObjPos.z);
|
||
|
var clonedObj = EntitiesManager.Instance.CreateObj(fireSpreadLinePrefab,
|
||
|
clonedObjPos,
|
||
|
P_FireSpreadLine.transform,
|
||
|
EntitiesManager.Instance.CreateObjID(CurrentUserInfo.mySelf.Id));
|
||
|
|
||
|
clonedObj.transform.forward = (-(endPoint - startPoint)).normalized;//改变线条的朝向
|
||
|
float distance = Vector3.Distance(startPoint, endPoint);//计算两点的距离
|
||
|
clonedObj.transform.localScale = new Vector3(30f, 30f, distance * 108);//延长线条,连接两点。
|
||
|
clonedObj.GetComponent<FireSpreadLineCtrl>().fireGameObjID = fireNormalDisaster.GameObjID;
|
||
|
clonedObj.GetComponent<FireSpreadLineCtrl>().flag = true;
|
||
|
|
||
|
//设置克隆物体所在楼层等基本属性,属性从点击的对象上获取
|
||
|
CloneGameObjInfo cloneObjInfo = clonedObj.GetComponent<CloneGameObjInfo>();
|
||
|
cloneObjInfo.gameObjType = CloneObjType.FireSpreadLine;
|
||
|
cloneObjInfo.UserID = CurrentUserInfo.mySelf.Id;
|
||
|
cloneObjInfo.buildNum = fireNormalDisaster.BuildNum;
|
||
|
cloneObjInfo.floorNum = fireNormalDisaster.FloorNum;
|
||
|
cloneObjInfo.interlayerNum = fireNormalDisaster.InterlayerNum;
|
||
|
|
||
|
clonedObj.SetActive(false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 生成全液面火
|
||
|
/// </summary>
|
||
|
private void CloneLiquidLevelFire()
|
||
|
{
|
||
|
FireLiquidLevelDisaster FireLiquidLevelDisaster;
|
||
|
BaseGameObjInfo baseGameObjInfo;
|
||
|
CloneGameObjInfo cloneGameObjInfo;
|
||
|
|
||
|
for (int i = 0; i < disaster.DisasterList.Count; i++)
|
||
|
{
|
||
|
if (disaster.DisasterList[i].Disaster.GetType().Name == "FireLiquidLevelDisaster")
|
||
|
{
|
||
|
FireLiquidLevelDisaster = (FireLiquidLevelDisaster)disaster.DisasterList[i].Disaster;
|
||
|
|
||
|
GameObject obj = EntitiesManager.Instance.CreateObj(fireLiquidLevelPrefab,
|
||
|
FireLiquidLevelDisaster.Position,
|
||
|
P_FireLiquidLevel.transform,
|
||
|
FireLiquidLevelDisaster.GameObjID);
|
||
|
|
||
|
obj.name = CloneObjNameTool.Instance().GetCloneObjectName(FireLiquidLevelDisaster.GameObjType);
|
||
|
SelectedObjs.gameObjs.Add(obj);
|
||
|
|
||
|
baseGameObjInfo = obj.GetComponent<BaseGameObjInfo>();
|
||
|
cloneGameObjInfo = obj.GetComponent<CloneGameObjInfo>();
|
||
|
BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, FireLiquidLevelDisaster);
|
||
|
|
||
|
obj.GetComponent<FireLiquidLevelCtrl>().FireScale = FireLiquidLevelDisaster.fireScale;
|
||
|
obj.GetComponent<FireLiquidLevelCtrl>().showTime = FireLiquidLevelDisaster.showTime;
|
||
|
obj.GetComponent<FireLiquidLevelCtrl>().TargetNormalID = FireLiquidLevelDisaster.OilTankId;
|
||
|
|
||
|
MessageDispatcher.SendMessage("SetTime", new SetLiquipdata()
|
||
|
{
|
||
|
LiquipId = obj.GetComponent<BaseGameObjInfo>().gameObjID,
|
||
|
time = FireLiquidLevelDisaster.showTime,
|
||
|
});
|
||
|
|
||
|
MessageDispatcher.SendMessage("SET_SMOKE_DIRECTION");
|
||
|
//克隆同步
|
||
|
if (GameSettings.othersSettings.mode!=Mode.DisasterManagement)
|
||
|
{
|
||
|
CloneDisasterSyncData clonesync = new CloneDisasterSyncData();
|
||
|
clonesync.ClonePosition = FireLiquidLevelDisaster.Position;
|
||
|
clonesync.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
//clonesync.parentUID =GetComponent<UIdSystem>().Id;
|
||
|
clonesync.name = obj.name;
|
||
|
//clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString();
|
||
|
clonesync.floorNum = cloneGameObjInfo.floorNum;
|
||
|
clonesync.buildNum = cloneGameObjInfo.buildNum;
|
||
|
clonesync.interlayerNum = cloneGameObjInfo.interlayerNum;
|
||
|
clonesync.gameObjID = cloneGameObjInfo.gameObjID;
|
||
|
clonesync.gameObjType = cloneGameObjInfo.gameObjType;
|
||
|
clonesync.UserID = cloneGameObjInfo.UserID;
|
||
|
NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync);
|
||
|
|
||
|
//全液面火同步
|
||
|
FireLiquidScaleSyncData arg = new FireLiquidScaleSyncData();
|
||
|
arg.gameObjID = cloneGameObjInfo.gameObjID;
|
||
|
arg.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
arg.firescale = FireLiquidLevelDisaster.fireScale;
|
||
|
arg.oilTankID = FireLiquidLevelDisaster.OilTankId;
|
||
|
NetworkManager.Default.SendAsync("SET_FIRE_LIQUID_SYNC", arg);
|
||
|
|
||
|
if(FireLiquidLevelDisaster.showTime!="00:00:00")
|
||
|
{
|
||
|
obj.SetActive(false);
|
||
|
NetworkManager.Default.SendAsync("SET_LIQUIP_HIDE_SYNC", obj.GetComponent<BaseGameObjInfo>().gameObjID);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 生成泄露1
|
||
|
/// </summary>
|
||
|
private void CloneLeak1()
|
||
|
{
|
||
|
Leak1Disaster Leak1Disaster;
|
||
|
BaseGameObjInfo baseGameObjInfo;
|
||
|
CloneGameObjInfo cloneGameObjInfo;
|
||
|
|
||
|
for (int i = 0; i < disaster.DisasterList.Count; i++)
|
||
|
{
|
||
|
if (disaster.DisasterList[i].Disaster.GetType().Name == "Leak1Disaster")
|
||
|
{
|
||
|
Leak1Disaster = (Leak1Disaster)disaster.DisasterList[i].Disaster;
|
||
|
GameObject obj = EntitiesManager.Instance.CreateObj(leak1Prefab,
|
||
|
Leak1Disaster.Position,
|
||
|
P_Leak1.transform,
|
||
|
Leak1Disaster.GameObjID);
|
||
|
|
||
|
obj.name = CloneObjNameTool.Instance().GetCloneObjectName(Leak1Disaster.GameObjType);
|
||
|
SelectedObjs.gameObjs.Add(obj);
|
||
|
|
||
|
baseGameObjInfo = obj.GetComponent<BaseGameObjInfo>();
|
||
|
cloneGameObjInfo = obj.GetComponent<CloneGameObjInfo>();
|
||
|
BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, Leak1Disaster);
|
||
|
obj.GetComponent<Leak1Controller>().OilTankId = Leak1Disaster.OilTankId;
|
||
|
|
||
|
//克隆同步
|
||
|
if (GameSettings.othersSettings.mode!=Mode.DisasterManagement)
|
||
|
{
|
||
|
CloneDisasterSyncData clonesync = new CloneDisasterSyncData();
|
||
|
clonesync.ClonePosition = Leak1Disaster.Position;
|
||
|
clonesync.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
//clonesync.parentUID =GetComponent<UIdSystem>().Id;
|
||
|
clonesync.name = obj.name;
|
||
|
//clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString();
|
||
|
clonesync.floorNum = cloneGameObjInfo.floorNum;
|
||
|
clonesync.buildNum = cloneGameObjInfo.buildNum;
|
||
|
clonesync.interlayerNum = cloneGameObjInfo.interlayerNum;
|
||
|
clonesync.gameObjID = cloneGameObjInfo.gameObjID;
|
||
|
clonesync.gameObjType = cloneGameObjInfo.gameObjType;
|
||
|
clonesync.UserID = cloneGameObjInfo.UserID;
|
||
|
clonesync.HitObjID = Leak1Disaster.OilTankId;
|
||
|
NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 生成泄露2
|
||
|
/// </summary>
|
||
|
private void CloneLeak2()
|
||
|
{
|
||
|
Leak2Disaster Leak2Disaster;
|
||
|
BaseGameObjInfo baseGameObjInfo;
|
||
|
CloneGameObjInfo cloneGameObjInfo;
|
||
|
|
||
|
for (int i = 0; i < disaster.DisasterList.Count; i++)
|
||
|
{
|
||
|
if (disaster.DisasterList[i].Disaster.GetType().Name == "Leak2Disaster")
|
||
|
{
|
||
|
Leak2Disaster = (Leak2Disaster)disaster.DisasterList[i].Disaster;
|
||
|
GameObject obj = EntitiesManager.Instance.CreateObj(leak2Prefab,
|
||
|
Leak2Disaster.Position,
|
||
|
P_Leak2.transform,
|
||
|
Leak2Disaster.GameObjID);
|
||
|
|
||
|
obj.name = CloneObjNameTool.Instance().GetCloneObjectName(Leak2Disaster.GameObjType);
|
||
|
SelectedObjs.gameObjs.Add(obj);
|
||
|
|
||
|
baseGameObjInfo = obj.GetComponent<BaseGameObjInfo>();
|
||
|
cloneGameObjInfo = obj.GetComponent<CloneGameObjInfo>();
|
||
|
BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, Leak2Disaster);
|
||
|
|
||
|
obj.GetComponent<Leak2Controller>().level = Leak2Disaster.level;
|
||
|
obj.GetComponent<Leak2Controller>().OilTankId = Leak2Disaster.OilTankId;
|
||
|
//克隆同步
|
||
|
if (GameSettings.othersSettings.mode!=Mode.DisasterManagement)
|
||
|
{
|
||
|
CloneDisasterSyncData clonesync = new CloneDisasterSyncData();
|
||
|
clonesync.ClonePosition = Leak2Disaster.Position;
|
||
|
clonesync.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
//clonesync.parentUID =GetComponent<UIdSystem>().Id;
|
||
|
clonesync.name = obj.name;
|
||
|
//clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString();
|
||
|
clonesync.floorNum = cloneGameObjInfo.floorNum;
|
||
|
clonesync.buildNum = cloneGameObjInfo.buildNum;
|
||
|
clonesync.interlayerNum = cloneGameObjInfo.interlayerNum;
|
||
|
clonesync.gameObjID = cloneGameObjInfo.gameObjID;
|
||
|
clonesync.gameObjType = cloneGameObjInfo.gameObjType;
|
||
|
clonesync.UserID = cloneGameObjInfo.UserID;
|
||
|
clonesync.HitObjID = Leak2Disaster.OilTankId;
|
||
|
NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync);
|
||
|
|
||
|
//Leak2同步
|
||
|
Leak2SyncData arg = new Leak2SyncData();
|
||
|
arg.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
arg.gameObjID = cloneGameObjInfo.gameObjID;
|
||
|
arg.Level = Leak2Disaster.level;
|
||
|
NetworkManager.Default.SendAsync("SET_LEAK2_SYNC", clonesync);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 生成伤员
|
||
|
/// </summary>
|
||
|
private void CloneWounded()
|
||
|
{
|
||
|
WoundedDisaster WoundedDisaster;
|
||
|
BaseGameObjInfo baseGameObjInfo;
|
||
|
CloneGameObjInfo cloneGameObjInfo;
|
||
|
|
||
|
for (int i = 0; i < disaster.DisasterList.Count; i++)
|
||
|
{
|
||
|
if (disaster.DisasterList[i].Disaster.GetType().Name == "WoundedDisaster")
|
||
|
{
|
||
|
WoundedDisaster = (WoundedDisaster)disaster.DisasterList[i].Disaster;
|
||
|
GameObject obj = EntitiesManager.Instance.CreateObj(woundedPrefab,
|
||
|
WoundedDisaster.Position,
|
||
|
P_Wounded.transform,
|
||
|
WoundedDisaster.GameObjID);
|
||
|
|
||
|
obj.name = CloneObjNameTool.Instance().GetCloneObjectName(WoundedDisaster.GameObjType);
|
||
|
SelectedObjs.gameObjs.Add(obj);
|
||
|
|
||
|
baseGameObjInfo = obj.GetComponent<BaseGameObjInfo>();
|
||
|
cloneGameObjInfo = obj.GetComponent<CloneGameObjInfo>();
|
||
|
BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, WoundedDisaster);
|
||
|
|
||
|
//克隆同步
|
||
|
if (GameSettings.othersSettings.mode!=Mode.DisasterManagement)
|
||
|
{
|
||
|
CloneDisasterSyncData clonesync = new CloneDisasterSyncData();
|
||
|
clonesync.ClonePosition = WoundedDisaster.Position;
|
||
|
clonesync.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
//clonesync.parentUID =GetComponent<UIdSystem>().Id;
|
||
|
clonesync.name = obj.name;
|
||
|
//clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString();
|
||
|
clonesync.floorNum = cloneGameObjInfo.floorNum;
|
||
|
clonesync.buildNum = cloneGameObjInfo.buildNum;
|
||
|
clonesync.interlayerNum = cloneGameObjInfo.interlayerNum;
|
||
|
clonesync.gameObjID = cloneGameObjInfo.gameObjID;
|
||
|
clonesync.gameObjType = cloneGameObjInfo.gameObjType;
|
||
|
clonesync.UserID = cloneGameObjInfo.UserID;
|
||
|
NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 生成被困人员
|
||
|
/// </summary>
|
||
|
private void CloneTrapped()
|
||
|
{
|
||
|
TrappedDisaster TrappedDisaster;
|
||
|
BaseGameObjInfo baseGameObjInfo;
|
||
|
CloneGameObjInfo cloneGameObjInfo;
|
||
|
|
||
|
for (int i = 0; i < disaster.DisasterList.Count; i++)
|
||
|
{
|
||
|
if (disaster.DisasterList[i].Disaster.GetType().Name == "TrappedDisaster")
|
||
|
{
|
||
|
TrappedDisaster = (TrappedDisaster)disaster.DisasterList[i].Disaster;
|
||
|
GameObject obj = EntitiesManager.Instance.CreateObj(trappedPrefab,
|
||
|
TrappedDisaster.Position,
|
||
|
P_TrappedPerson.transform,
|
||
|
TrappedDisaster.GameObjID);
|
||
|
|
||
|
obj.name = CloneObjNameTool.Instance().GetCloneObjectName(TrappedDisaster.GameObjType);
|
||
|
SelectedObjs.gameObjs.Add(obj);
|
||
|
|
||
|
baseGameObjInfo = obj.GetComponent<BaseGameObjInfo>();
|
||
|
cloneGameObjInfo = obj.GetComponent<CloneGameObjInfo>();
|
||
|
BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, TrappedDisaster);
|
||
|
//克隆同步
|
||
|
if (GameSettings.othersSettings.mode!=Mode.DisasterManagement)
|
||
|
{
|
||
|
CloneDisasterSyncData clonesync = new CloneDisasterSyncData();
|
||
|
clonesync.ClonePosition = TrappedDisaster.Position;
|
||
|
clonesync.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
//clonesync.parentUID =GetComponent<UIdSystem>().Id;
|
||
|
clonesync.name = obj.name;
|
||
|
//clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString();
|
||
|
clonesync.floorNum = cloneGameObjInfo.floorNum;
|
||
|
clonesync.buildNum = cloneGameObjInfo.buildNum;
|
||
|
clonesync.interlayerNum = cloneGameObjInfo.interlayerNum;
|
||
|
clonesync.gameObjID = cloneGameObjInfo.gameObjID;
|
||
|
clonesync.gameObjType = cloneGameObjInfo.gameObjType;
|
||
|
clonesync.UserID = cloneGameObjInfo.UserID;
|
||
|
NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 生成知情人
|
||
|
/// </summary>
|
||
|
private void CloneInsider()
|
||
|
{
|
||
|
InsiderDisaster InsiderDisaster;
|
||
|
BaseGameObjInfo baseGameObjInfo;
|
||
|
CloneGameObjInfo cloneGameObjInfo;
|
||
|
|
||
|
for (int i = 0; i < disaster.DisasterList.Count; i++)
|
||
|
{
|
||
|
if (disaster.DisasterList[i].Disaster.GetType().Name == "InsiderDisaster")
|
||
|
{
|
||
|
InsiderDisaster = (InsiderDisaster)disaster.DisasterList[i].Disaster;
|
||
|
GameObject obj = EntitiesManager.Instance.CreateObj(insiderPrefab,
|
||
|
InsiderDisaster.Position,
|
||
|
P_Insider.transform,
|
||
|
InsiderDisaster.GameObjID);
|
||
|
|
||
|
obj.name = CloneObjNameTool.Instance().GetCloneObjectName(InsiderDisaster.GameObjType);
|
||
|
SelectedObjs.gameObjs.Add(obj);
|
||
|
|
||
|
baseGameObjInfo = obj.GetComponent<BaseGameObjInfo>();
|
||
|
cloneGameObjInfo = obj.GetComponent<CloneGameObjInfo>();
|
||
|
BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, InsiderDisaster);
|
||
|
//克隆同步
|
||
|
if (GameSettings.othersSettings.mode!=Mode.DisasterManagement)
|
||
|
{
|
||
|
CloneDisasterSyncData clonesync = new CloneDisasterSyncData();
|
||
|
clonesync.ClonePosition = InsiderDisaster.Position;
|
||
|
clonesync.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
//clonesync.parentUID =GetComponent<UIdSystem>().Id;
|
||
|
clonesync.name = obj.name;
|
||
|
//clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString();
|
||
|
clonesync.floorNum = cloneGameObjInfo.floorNum;
|
||
|
clonesync.buildNum = cloneGameObjInfo.buildNum;
|
||
|
clonesync.interlayerNum = cloneGameObjInfo.interlayerNum;
|
||
|
clonesync.gameObjID = cloneGameObjInfo.gameObjID;
|
||
|
clonesync.gameObjType = cloneGameObjInfo.gameObjType;
|
||
|
clonesync.UserID = cloneGameObjInfo.UserID;
|
||
|
NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 生成危险品
|
||
|
/// </summary>
|
||
|
private void CloneDangerous()
|
||
|
{
|
||
|
DangerousDisaster DangerousDisaster;
|
||
|
BaseGameObjInfo baseGameObjInfo;
|
||
|
CloneGameObjInfo cloneGameObjInfo;
|
||
|
|
||
|
for (int i = 0; i < disaster.DisasterList.Count; i++)
|
||
|
{
|
||
|
if (disaster.DisasterList[i].Disaster.GetType().Name == "DangerousDisaster")
|
||
|
{
|
||
|
DangerousDisaster = (DangerousDisaster)disaster.DisasterList[i].Disaster;
|
||
|
GameObject obj = EntitiesManager.Instance.CreateObj(dangerousPrefab,
|
||
|
DangerousDisaster.Position,
|
||
|
P_Dangerous.transform,
|
||
|
DangerousDisaster.GameObjID);
|
||
|
|
||
|
obj.name = CloneObjNameTool.Instance().GetCloneObjectName(DangerousDisaster.GameObjType);
|
||
|
SelectedObjs.gameObjs.Add(obj);
|
||
|
|
||
|
baseGameObjInfo = obj.GetComponent<BaseGameObjInfo>();
|
||
|
cloneGameObjInfo = obj.GetComponent<CloneGameObjInfo>();
|
||
|
BaseInfoSet(baseGameObjInfo, cloneGameObjInfo, DangerousDisaster);
|
||
|
//克隆同步
|
||
|
if (GameSettings.othersSettings.mode != Mode.DisasterManagement)
|
||
|
{
|
||
|
CloneDisasterSyncData clonesync = new CloneDisasterSyncData();
|
||
|
clonesync.ClonePosition = DangerousDisaster.Position;
|
||
|
clonesync.SendUserID = CurrentUserInfo.mySelf.Id;
|
||
|
//clonesync.parentUID =GetComponent<UIdSystem>().Id;
|
||
|
clonesync.name = obj.name;
|
||
|
//clonesync.PrefabsPath = PrefabsPath + cloneObjType.ToString();
|
||
|
clonesync.floorNum = cloneGameObjInfo.floorNum;
|
||
|
clonesync.buildNum = cloneGameObjInfo.buildNum;
|
||
|
clonesync.interlayerNum = cloneGameObjInfo.interlayerNum;
|
||
|
clonesync.gameObjID = cloneGameObjInfo.gameObjID;
|
||
|
clonesync.gameObjType = cloneGameObjInfo.gameObjType;
|
||
|
clonesync.UserID = cloneGameObjInfo.UserID;
|
||
|
NetworkManager.Default.SendAsync("CLONE_SINGLE_DISASTER_SYNC", clonesync);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 设置对象基本信息
|
||
|
/// </summary>
|
||
|
/// <param name="baseGameObjInfo"></param>
|
||
|
/// <param name="cloneGameObjInfo"></param>
|
||
|
/// <param name="disaster"></param>
|
||
|
private void BaseInfoSet(BaseGameObjInfo baseGameObjInfo, CloneGameObjInfo cloneGameObjInfo, Disaster disaster)
|
||
|
{
|
||
|
if (baseGameObjInfo || cloneGameObjInfo)
|
||
|
{
|
||
|
Transform obj = null;
|
||
|
if (baseGameObjInfo)
|
||
|
{
|
||
|
obj = baseGameObjInfo.transform;
|
||
|
}
|
||
|
if (cloneGameObjInfo)
|
||
|
{
|
||
|
obj = cloneGameObjInfo.transform;
|
||
|
}
|
||
|
|
||
|
if (obj != null)
|
||
|
{
|
||
|
obj.position = disaster.Position;
|
||
|
obj.rotation = disaster.Rotation;
|
||
|
obj.localScale = disaster.Scale;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (baseGameObjInfo)
|
||
|
{
|
||
|
baseGameObjInfo.gameObjID = disaster.GameObjID;
|
||
|
baseGameObjInfo.gameObjType = disaster.GameObjType;
|
||
|
baseGameObjInfo.UserID = CurrentUserInfo.mySelf.Id;
|
||
|
baseGameObjInfo.UserID = disaster.UserID;
|
||
|
}
|
||
|
|
||
|
|
||
|
if (cloneGameObjInfo)
|
||
|
{
|
||
|
cloneGameObjInfo.buildNum = disaster.BuildNum;
|
||
|
cloneGameObjInfo.floorNum = disaster.FloorNum;
|
||
|
cloneGameObjInfo.interlayerNum = disaster.InterlayerNum;
|
||
|
cloneGameObjInfo.ShoworHidden = disaster.ShoworHidden;
|
||
|
}
|
||
|
}
|
||
|
}
|