using AX.Network.Protocols; using AX.NetworkSystem; using AX.Serialization; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class OnwayForceTotal : MonoBehaviour { private static Dictionary>> onwayCars = new Dictionary>>(); //public static event Func>>, Dictionary>>> getOnwayCars; private int teams = 0; private int trucks = 0; private int firemen = 0; public GameObject content; private void OnEnable() { //allCars = FireEnginesData.Instance.GetAllCas(); /*if (getOnwayCars != null) { allCars = getOnwayCars(allCars); }*/ teams = onwayCars.Count; trucks = 0; firemen = 0; foreach(string team in onwayCars.Keys) { foreach(KeyValuePair pair in onwayCars[team]) { trucks += pair.Value; firemen += (int)pair.Key.PassengerCapacity * pair.Value; } } GetComponent().text = "在途力量共" + teams + "个中队," + trucks + "辆车," + firemen + "名消防员"; if (content == null) { content = transform.parent.Find("Scroll View/Viewport/Content").gameObject; } content.GetComponent().CreateItems(onwayCars); } /// /// 有新车辆调派 /// /// public static void AddNewDeployedCar(KeyValuePair>> carPair) { List> cars = new List>(); //之前已经有这个中队,将该中队已有的在途车辆提取出到typeCars if (onwayCars.TryGetValue(carPair.Key,out cars)) { foreach (KeyValuePair item in carPair.Value) { //更新 AddCar(cars, item); } } //之前没有这个中队 else { onwayCars.Add(carPair.Key,carPair.Value); } UserData userData = CurrentUserInfo.room.FindMidTeamUserIDByName(carPair.Key); NetworkManager.Default.SendRequestAsync("ARRIVAL_TIME_REQUEST", new ArrivalTimePair() { sender = CurrentUserInfo.mySelf.Id, receiver = userData.UserInfo.Id, time = "", arrived = false }); } private static void AddCar(List> typeCars, KeyValuePair item) { //如果之前保存过这种车型 for(int i = 0; i < typeCars.Count; i++) { if (typeCars[i].Key.TypeName == item.Key.TypeName) { typeCars[i] = new KeyValuePair(typeCars[i].Key, typeCars[i].Value + item.Value); return; } } //如果还没保存过这种车型 typeCars.Add(item); } /// /// 从在途力量中删去到达车辆 /// /// /// public static void RemoveArrivedCar(string team,FireCarEngine fireCarEngine) { List> list = new List>(); if(onwayCars.TryGetValue(team,out list)) { for (int i = 0; i < list.Count; i++) { if (list[i].Key.TypeName == fireCarEngine.TypeName) { list[i] = new KeyValuePair(list[i].Key, list[i].Value - 1); if (list[i].Value == 0) { list.Remove(list[i]); } if (list.Count == 0) { onwayCars.Remove(team); } return; } } } } /// /// 从在途力量中删除到达中队车辆 /// /// public static void RemoveArrivedCar(string team) { List> list = new List>(); if(onwayCars.TryGetValue(team,out list)) { //深拷贝 List> listCopy = new List>(); for(int i = 0; i < list.Count; i++) { KeyValuePair pair = new KeyValuePair(list[i].Key, list[i].Value); listCopy.Add(pair); } ArrivedPowerTotal.addArrivedCar(team, listCopy); onwayCars.Remove(team); } } }