广西桂平帝恒管道燃气投资有限公司多角色网上演练
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.
 
 
 
 
 

104 lines
4.0 KiB

using AX.Network.Protocols;
using AX.Serialization;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class COMMANDCENTER_FIREMANNUM_SYNC : NetworkMessageBehaviour
{
static CommandFiremanNumSyncData thisinfo;
protected override void Execute(BinaryMessage message)
{
if(GameSettings.othersSettings.mode==Mode.manoeuvre)
{
var info = message.Body.Deserialize<CommandFiremanNumSyncData>();
thisinfo = info;
//当前客户端是调派客户端
if (CurrentUserInfo.mySelf.Id==info.selectUserData.UserInfo.Id)
{
GameSettings.othersSettings.nowperson = info.num;
GameSettings.othersSettings.personNum += info.num;
}
if (!GameSettings.othersSettings.DisplayName_Num_Dic.ContainsKey(info.selectUserData.Org.DisplayName))
{
GameSettings.othersSettings.DisplayName_Num_Dic.Add(info.selectUserData.Org.DisplayName, info.num);
}
else
{
GameSettings.othersSettings.DisplayName_Num_Dic[info.selectUserData.Org.DisplayName] += info.num;
}
if (!GameSettings.othersSettings.FireEngines_Dic.ContainsKey(info.selectUserData.Org.DisplayName))
{
GameSettings.othersSettings.FireEngines_Dic.Add(info.selectUserData.Org.DisplayName, info.num);
}
else
{
GameSettings.othersSettings.FireEngines_Dic[info.selectUserData.Org.DisplayName] += info.num;
}
}
}
public static void SetCar()
{
//给新派遣的车辆分配人数
int nowperson = thisinfo.num;
List<KeyValuePair<FireCarEngine, bool>> carlistpire = new List<KeyValuePair<FireCarEngine, bool>>();
//查找该中队还未分配人数的车辆,也就是本次调派的车辆
if (GameSettings.othersSettings.DisCarList_Dic.ContainsKey(thisinfo.selectUserData.Org.DisplayName))
{
carlistpire = GameSettings.othersSettings.DisCarList_Dic[thisinfo.selectUserData.Org.DisplayName];
}
List<FireCarEngine> carlist = new List<FireCarEngine>();
List<FireCarEngine> carlistready = new List<FireCarEngine>();
if (carlistpire.Count > 0)
{
for (int i = 0; i < carlistpire.Count; i++)
{
if (carlistpire[i].Value == false)
{
carlist.Add(carlistpire[i].Key);
// carlistpire.Remove(carlistpire[i]);
}
else
{
carlistready.Add(carlistpire[i].Key);
}
}
}
if (nowperson > 0)
{
int[] PersonNum = new int[carlist.Count];
while (nowperson > 0)
{
for (int i = 0; i < carlist.Count; i++)
{
if (nowperson > 0 && PersonNum[i] < carlist[i].PassengerCapacity)
{
PersonNum[i] += 1;
nowperson--;
}
}
}
carlistpire.Clear();
for (int i = 0; i < carlistready.Count; i++)
{
KeyValuePair<FireCarEngine, bool> carpire = new KeyValuePair<FireCarEngine, bool>(carlistready[i], true);
carlistpire.Add(carpire);
}
for (int i = 0; i < carlist.Count; i++)
{
carlist[i].PassengerCapacity = PersonNum[i];
KeyValuePair<FireCarEngine, bool> carpire = new KeyValuePair<FireCarEngine, bool>(carlist[i], true);
carlistpire.Add(carpire);
}
GameSettings.othersSettings.DisCarList_Dic[thisinfo.selectUserData.Org.DisplayName] = carlistpire;
}
}
protected override void OnDestroy()
{
base.OnDestroy();
thisinfo = null;
}
}