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.
162 lines
4.8 KiB
162 lines
4.8 KiB
4 years ago
|
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();
|
||
|
}
|
||
|
}
|