网上演练贵港万达广场(人员密集)
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

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