using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 作战部署中力量列表数据层 /// public class FireEnginesData { public static readonly FireEnginesData Instance = new FireEnginesData(); //每个中队的消防员人数 private Dictionary Persons = new Dictionary(); //按中队、车类型组织车辆数据(string:组织机构;List:某类型车有多少辆) private Dictionary>> DeptCars = new Dictionary>>(); public void AddDeptCar(KeyValuePair>> deptCars) { List> typeCars = new List>(); if (DeptCars.TryGetValue(deptCars.Key, out typeCars)) { foreach (KeyValuePair item in deptCars.Value) { AddCar(typeCars, item, deptCars.Key); } } else { DeptCars.Add(deptCars.Key, deptCars.Value); foreach (KeyValuePair item in deptCars.Value) { UpdatePersons(deptCars.Key, item); } } } public void AddCar(List> TypeCars, KeyValuePair car, string orgName) { for (int i = 0; i < TypeCars.Count; i++) { if (TypeCars[i].Key.TypeName == car.Key.TypeName) { TypeCars[i] = new KeyValuePair(TypeCars[i].Key, TypeCars[i].Value + car.Value); UpdatePersons(orgName, car); } } List keys = new List(); foreach (KeyValuePair 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 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); } //演习模式下设置每个单位人数 if (GameSettings.othersSettings.mode == Mode.manoeuvre) { foreach (var item in GameSettings.othersSettings.FireEngines_Dic.Keys) { Persons[orgName] = GameSettings.othersSettings.FireEngines_Dic[item];//GetNum(item); } } } public void UpdatePerson() { if (GameSettings.othersSettings.mode == Mode.manoeuvre) { foreach (var item in Persons.Keys) { Persons[item] = GetNum(item); } int allNum = 0; foreach (var item in Persons.Keys) { allNum += Persons[item]; } Debug.Log(allNum); } } private int GetNum(string DisName) { int num = 0; foreach (var item in GameSettings.othersSettings.DisplayName_Num_Dic.Keys) { if (item == DisName) { num = GameSettings.othersSettings.DisplayName_Num_Dic[item]; } } return num; } public Dictionary>> GetAllCas() { return DeptCars; } public void RemoveCar(string orgName, string carType) { List> typeCars = new List>(); if (DeptCars.TryGetValue(orgName, out typeCars)) { for (int i = 0; i < typeCars.Count; i++) { if (typeCars[i].Key.TypeName == carType) { typeCars[i] = new KeyValuePair(typeCars[i].Key, typeCars[i].Value - 1); } } } } public Dictionary GetAllPersons() { if (GameSettings.othersSettings.mode == Mode.manoeuvre) { return GameSettings.othersSettings.FireEngines_Dic; } else return Persons; } public void FireEnginesDataResert() { Persons.Clear(); DeptCars.Clear(); } }