using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 作战部署中力量列表数据层 /// </summary> public class FireEnginesData { public static readonly FireEnginesData Instance = new FireEnginesData(); //每个中队的消防员人数 private Dictionary<string, int> Persons = new Dictionary<string, int>(); //按中队、车类型组织车辆数据(string:组织机构;List<KeyValuePair<FireCarEngine, int>:某类型车有多少辆) private Dictionary<string, List<KeyValuePair<FireCarEngine, int>>> DeptCars = new Dictionary<string, List<KeyValuePair<FireCarEngine, int>>>(); public void AddDeptCar(KeyValuePair<string, List<KeyValuePair<FireCarEngine, int>>> deptCars) { List<KeyValuePair<FireCarEngine, int>> typeCars = new List<KeyValuePair<FireCarEngine, int>>(); if (DeptCars.TryGetValue(deptCars.Key , out typeCars)) { foreach (KeyValuePair<FireCarEngine, int> item in deptCars.Value) { AddCar(typeCars,item, deptCars.Key); } } else { DeptCars.Add(deptCars.Key, deptCars.Value); foreach (KeyValuePair<FireCarEngine, int> item in deptCars.Value) { UpdatePersons(deptCars.Key, item); } } } public void AddCar(List<KeyValuePair<FireCarEngine, int>> TypeCars, KeyValuePair<FireCarEngine, int> car, string orgName) { for (int i = 0; i < TypeCars.Count; i++) { if (TypeCars[i].Key.TypeName == car.Key.TypeName) { TypeCars[i] = new KeyValuePair<FireCarEngine, int>(TypeCars[i].Key, TypeCars[i].Value + car.Value); UpdatePersons(orgName, car); } } List<string> keys = new List<string>(); foreach (KeyValuePair<FireCarEngine, int> item in TypeCars) { keys.Add(item.Key.TypeName); } if (!keys.Contains(car.Key.TypeName)) { TypeCars.Add(car); UpdatePersons(orgName, car); } } private void UpdatePersons(string orgName, KeyValuePair<FireCarEngine, int> car) { //加车的同时更新人数 if (Persons.ContainsKey(orgName)) { for (int i = 0; i < car.Value; i++) { Persons[orgName] += (int)(car.Key.PassengerCapacity); } } else { int typeCarPersons = 0; for (int i = 0; i < car.Value; i++) { typeCarPersons += (int)(car.Key.PassengerCapacity); } Persons.Add(orgName, typeCarPersons); } } public Dictionary<string, List<KeyValuePair<FireCarEngine, int>>> GetAllCas() { return DeptCars; } public void RemoveCar(string orgName, string carType) { List<KeyValuePair<FireCarEngine, int>> typeCars = new List<KeyValuePair<FireCarEngine, int>>(); if (DeptCars.TryGetValue(orgName, out typeCars)) { for (int i = 0; i < typeCars.Count; i++) { if (typeCars[i].Key.TypeName == carType) { typeCars[i] = new KeyValuePair<FireCarEngine, int>(typeCars[i].Key, typeCars[i].Value - 1); } } } } public Dictionary<string, int> GetAllPersons() { return Persons; } public void FireEnginesDataResert() { Persons.Clear(); DeptCars.Clear(); } }