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.
128 lines
4.0 KiB
128 lines
4.0 KiB
using System; |
|
using System.Collections; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
using UnityEngine.UI; |
|
|
|
public class ArrivedPowerTotal : MonoBehaviour |
|
{ |
|
public GameObject content; |
|
//private PowerPair arrivedPowers = new PowerPair(); |
|
public static event Func<PowerPair, PowerPair> getArrivedPower; |
|
/// <summary> |
|
/// 记录所有已经到场的车辆 |
|
/// </summary> |
|
public static Dictionary<string, List<KeyValuePair<FireCarEngine, int>>> arrivedCars = |
|
new Dictionary<string, List<KeyValuePair<FireCarEngine, int>>>(); |
|
private int trucksCount = 0; |
|
private int firemenCount = 0; |
|
private void Awake() |
|
{ |
|
if (content == null) |
|
{ |
|
content = transform.parent.Find("Scroll View/Viewport/Content").gameObject; |
|
} |
|
} |
|
public static void ResertArrivePowerTotal() |
|
{ |
|
arrivedCars.Clear(); |
|
} |
|
void OnEnable() |
|
{ |
|
trucksCount = 0; |
|
firemenCount = 0; |
|
foreach (List<KeyValuePair<FireCarEngine, int>> carlist in arrivedCars.Values) |
|
{ |
|
foreach (KeyValuePair<FireCarEngine, int> pair in carlist) |
|
{ |
|
trucksCount += pair.Value; |
|
firemenCount += (int)pair.Key.PassengerCapacity * pair.Value; |
|
} |
|
} |
|
if (GameSettings.othersSettings.mode == Mode.manoeuvre) |
|
{ |
|
firemenCount = 0; |
|
foreach (var item in GameSettings.othersSettings.DisplayName_Num_Dic.Keys) |
|
{ |
|
if (GameSettings.othersSettings.DisPlay_Arrive_Dic[item]) |
|
{ |
|
firemenCount += GameSettings.othersSettings.DisplayName_Num_Dic[item]; |
|
} |
|
} |
|
} |
|
GetComponent<Text>().text = "到场力量共" + arrivedCars.Count + "个中队" + trucksCount + "辆车," + firemenCount + "名消防员。"; |
|
content.GetComponent<ArrivedForceContent>().CreateItems(arrivedCars); |
|
} |
|
/// <summary> |
|
/// 有新的中队车辆到场 |
|
/// </summary> |
|
/// <param name="team"></param> |
|
/// <param name="cars"></param> |
|
public static void addArrivedCar(string team, List<KeyValuePair<FireCarEngine, int>> cars) |
|
{ |
|
List<KeyValuePair<FireCarEngine, int>> arrivedList = new List<KeyValuePair<FireCarEngine, int>>(); |
|
//之前已经有这个中队,将该中队已有的在途车辆提取出到typeCars |
|
if (arrivedCars.TryGetValue(team, out arrivedList)) |
|
{ |
|
foreach (KeyValuePair<FireCarEngine, int> item in cars) |
|
{ |
|
//更新 |
|
AddCar(arrivedList, item); |
|
} |
|
} |
|
//之前没有这个中队 |
|
else |
|
{ |
|
arrivedCars.Add(team, cars); |
|
} |
|
} |
|
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> |
|
public class PowerPair |
|
{ |
|
public PowerPair() |
|
{ |
|
truckMsgs = new List<TruckMessage>(); |
|
teams = new List<string>(); |
|
trucks = 0; |
|
firemen = 0; |
|
} |
|
/// <summary> |
|
/// 所有车辆信息 |
|
/// </summary> |
|
public List<TruckMessage> truckMsgs; |
|
/// <summary> |
|
/// 所有中队 |
|
/// </summary> |
|
public List<string> teams; |
|
/// <summary> |
|
/// 参战、到场车辆计数 |
|
/// </summary> |
|
public int trucks; |
|
/// <summary> |
|
/// 参战、到场消防员计数 |
|
/// </summary> |
|
public int firemen; |
|
public void Clear() |
|
{ |
|
trucks = 0; |
|
firemen = 0; |
|
truckMsgs.Clear(); |
|
} |
|
} |