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.
131 lines
4.9 KiB
131 lines
4.9 KiB
5 years ago
|
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);
|
||
|
}
|
||
|
}
|
||
|
}
|