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();
}
}