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.
161 lines
4.8 KiB
161 lines
4.8 KiB
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); |
|
} |
|
//演习模式下设置每个单位人数 |
|
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<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() |
|
{ |
|
if (GameSettings.othersSettings.mode == Mode.manoeuvre) |
|
{ |
|
return GameSettings.othersSettings.FireEngines_Dic; |
|
} |
|
else |
|
return Persons; |
|
} |
|
public void FireEnginesDataResert() |
|
{ |
|
|
|
Persons.Clear(); |
|
DeptCars.Clear(); |
|
} |
|
}
|
|
|