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(); 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> carlistpire = new List>(); //查找该中队还未分配人数的车辆,也就是本次调派的车辆 if (GameSettings.othersSettings.DisCarList_Dic.ContainsKey(thisinfo.selectUserData.Org.DisplayName)) { carlistpire = GameSettings.othersSettings.DisCarList_Dic[thisinfo.selectUserData.Org.DisplayName]; } List carlist = new List(); List carlistready = new List(); 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 carpire = new KeyValuePair(carlistready[i], true); carlistpire.Add(carpire); } for (int i = 0; i < carlist.Count; i++) { carlist[i].PassengerCapacity = PersonNum[i]; KeyValuePair carpire = new KeyValuePair(carlist[i], true); carlistpire.Add(carpire); } GameSettings.othersSettings.DisCarList_Dic[thisinfo.selectUserData.Org.DisplayName] = carlistpire; } } protected override void OnDestroy() { base.OnDestroy(); thisinfo = null; } }