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

771 lines
34 KiB

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;
}
}
}