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.
130 lines
4.9 KiB
130 lines
4.9 KiB
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<string, List<KeyValuePair<FireCarEngine, int>>> onwayCars = new Dictionary<string, List<KeyValuePair<FireCarEngine, int>>>(); |
|
//public static event Func<Dictionary<string, List<KeyValuePair<FireCarEngine, int>>>, Dictionary<string, List<KeyValuePair<FireCarEngine, int>>>> 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<FireCarEngine,int> pair in onwayCars[team]) |
|
{ |
|
trucks += pair.Value; |
|
firemen += (int)pair.Key.PassengerCapacity * pair.Value; |
|
} |
|
} |
|
GetComponent<Text>().text = "在途力量共" + teams + "个中队," + trucks + "辆车," + firemen + "名消防员"; |
|
if (content == null) |
|
{ |
|
content = transform.parent.Find("Scroll View/Viewport/Content").gameObject; |
|
} |
|
content.GetComponent<OnwayContent>().CreateItems(onwayCars); |
|
} |
|
/// <summary> |
|
/// 有新车辆调派 |
|
/// </summary> |
|
/// <param name="cars"></param> |
|
public static void AddNewDeployedCar(KeyValuePair<string, List<KeyValuePair<FireCarEngine, int>>> carPair) |
|
{ |
|
List<KeyValuePair<FireCarEngine, int>> cars = new List<KeyValuePair<FireCarEngine, int>>(); |
|
//之前已经有这个中队,将该中队已有的在途车辆提取出到typeCars |
|
if (onwayCars.TryGetValue(carPair.Key,out cars)) |
|
{ |
|
foreach (KeyValuePair<FireCarEngine, int> 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<KeyValuePair<FireCarEngine, int>> typeCars, KeyValuePair<FireCarEngine, int> item) |
|
{ |
|
//如果之前保存过这种车型 |
|
for(int i = 0; i < typeCars.Count; i++) |
|
{ |
|
if (typeCars[i].Key.TypeName == item.Key.TypeName) |
|
{ |
|
typeCars[i] = new KeyValuePair<FireCarEngine, int>(typeCars[i].Key, typeCars[i].Value + item.Value); |
|
return; |
|
} |
|
} |
|
//如果还没保存过这种车型 |
|
typeCars.Add(item); |
|
} |
|
/// <summary> |
|
/// 从在途力量中删去到达车辆 |
|
/// </summary> |
|
/// <param name="team"></param> |
|
/// <param name="fireCarEngine"></param> |
|
public static void RemoveArrivedCar(string team,FireCarEngine fireCarEngine) |
|
{ |
|
List<KeyValuePair<FireCarEngine, int>> list = new List<KeyValuePair<FireCarEngine, int>>(); |
|
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<FireCarEngine, int>(list[i].Key, list[i].Value - 1); |
|
if (list[i].Value == 0) |
|
{ |
|
list.Remove(list[i]); |
|
} |
|
if (list.Count == 0) |
|
{ |
|
onwayCars.Remove(team); |
|
} |
|
return; |
|
} |
|
} |
|
} |
|
} |
|
/// <summary> |
|
/// 从在途力量中删除到达中队车辆 |
|
/// </summary> |
|
/// <param name="team"></param> |
|
public static void RemoveArrivedCar(string team) |
|
{ |
|
List<KeyValuePair<FireCarEngine, int>> list = new List<KeyValuePair<FireCarEngine, int>>(); |
|
if(onwayCars.TryGetValue(team,out list)) |
|
{ |
|
//深拷贝 |
|
List<KeyValuePair<FireCarEngine, int>> listCopy = new List<KeyValuePair<FireCarEngine, int>>(); |
|
for(int i = 0; i < list.Count; i++) |
|
{ |
|
KeyValuePair<FireCarEngine, int> pair = new KeyValuePair<FireCarEngine, int>(list[i].Key, list[i].Value); |
|
listCopy.Add(pair); |
|
} |
|
ArrivedPowerTotal.addArrivedCar(team, listCopy); |
|
onwayCars.Remove(team); |
|
} |
|
} |
|
}
|
|
|