广西桂平帝恒管道燃气投资有限公司多角色网上演练
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.
 
 
 
 
 

1214 lines
41 KiB

using AX.NetworkSystem;
using LinqInternal.Collections;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class ReportDataMgr
{
// 车辆信息
private static List<GameObject> allTrucks = new List<GameObject>();
// 轻伤员
private static List<GameObject> allTrappedPerson = new List<GameObject>();
// 重伤员
private static List<GameObject> allWoundedPerson = new List<GameObject>();
// 发送指令
private static List<ChatTaskMessage> allSendCommand = new List<ChatTaskMessage>();
// 接收指令
private static List<ChatTaskMessage> allReceiverCommand = new List<ChatTaskMessage>();
// 下级ID
public static List<long> allSubId = new List<long>();
// 所有车辆总数
static float totalTruckCount = 0.0f;
static float waterTankerCount = 0.0f;
static float foamTruckCount = 0.0f;
static float aerialTowerTruckCount = 0.0f;
static float highSprayingTruckCount = 0.0f;
static float ladderTruckCount = 0.0f;
static float smokeExhaustTruckCount = 0.0f;
static float rescueVehicleCount = 0.0f;
static float apparatusCount = 0.0f;
static float lightingApplianceCount = 0.0f;
static float repairCarCount = 0.0f;
static float forcibleEntryTruckCount = 0.0f;
// 车上一共多少人
static int totalFireman = 0;
// 总共消耗水量
static float totalUseWater = 0.0f;
// 营救轻伤员数量
static float totalSaveTrappedCount = 0.0f;
// 营救重伤员数量
static float totalSaveWoundedCount = 0;
// 发送命令
static float totalSendCommand = 0;
// 接收命令
static int totalReceiverCommand = 0;
// 是否胜利
public static bool IsVictory { get; internal set; }
// 需要问卷数量
public static int QuestionnaireNumber;
// 提交问卷数量
public static int SubmitQuestionnaireNumber;
// 所有客户端问卷
public static List<List<Question>> AllQuestionnaire = new List<List<Question>>();
// 控火得分
public static Dictionary<string, float> FireScore = new Dictionary<string, float>();
// 救人得分
public static Dictionary<string, float> SaveScore = new Dictionary<string, float>();
// 侦察得分
public static Dictionary<string, float> LookAtScore = new Dictionary<string, float>();
// 冷却得分
public static Dictionary<string, float> CoolScore = new Dictionary<string, float>();
// 供水得分
public static Dictionary<string, float> WaterScore = new Dictionary<string, float>();
// 参演人员得分
public static Dictionary<string, float> ActInScore = new Dictionary<string, float>();
// 演练最好的中队投票
public static Dictionary<string, float> ZhongDuiScore = new Dictionary<string, float>();
// 演练最好的指挥
public static Dictionary<string, float> ZhiHuiScore = new Dictionary<string, float>();
// 优势投票数据
public static Dictionary<string, float> StrengthScore = new Dictionary<string, float>();
// 优势投票数据
public static Dictionary<string, float> WeaknessesScore = new Dictionary<string, float>();
// 需要车辆投票
public static Dictionary<string, float> NeedCarScore = new Dictionary<string, float>();
// 需要灭火装备投票
public static Dictionary<string, float> NeedFireEquipScore = new Dictionary<string, float>();
// 需要救人装备投票
public static Dictionary<string, float> NeedSaveEquipScore = new Dictionary<string, float>();
// 胜利投票
public static Dictionary<string, float> VictoryScore = new Dictionary<string, float>();
// 失败投票
public static Dictionary<string, float> DefeatScore = new Dictionary<string, float>();
// 提升投票
public static Dictionary<string, float> LevelUpScore = new Dictionary<string, float>();
public static List<ChatTaskMessage> AllChatMessage = new List<ChatTaskMessage>();
public static void ResertReportDataMgr()
{
allTrucks.Clear();
allTrappedPerson.Clear();
allWoundedPerson.Clear();
allSendCommand.Clear();
allReceiverCommand.Clear();
allSubId.Clear();
totalTruckCount = 0.0f;
waterTankerCount = 0.0f;
foamTruckCount = 0.0f;
aerialTowerTruckCount = 0.0f;
highSprayingTruckCount = 0.0f;
ladderTruckCount = 0.0f;
smokeExhaustTruckCount = 0.0f;
rescueVehicleCount = 0.0f;
apparatusCount = 0.0f;
lightingApplianceCount = 0.0f;
repairCarCount = 0.0f;
forcibleEntryTruckCount = 0.0f;
totalFireman = 0;
totalUseWater = 0.0f;
totalSaveTrappedCount = 0.0f;
totalSaveWoundedCount = 0;
totalSendCommand = 0;
totalReceiverCommand = 0;
IsVictory = false;
QuestionnaireNumber = 0;
SubmitQuestionnaireNumber = 0;
AllQuestionnaire.Clear();
FireScore = new Dictionary<string, float>();
SaveScore = new Dictionary<string, float>();
LookAtScore = new Dictionary<string, float>();
CoolScore = new Dictionary<string, float>();
WaterScore = new Dictionary<string, float>();
ActInScore = new Dictionary<string, float>();
ZhongDuiScore = new Dictionary<string, float>();
ZhiHuiScore = new Dictionary<string, float>();
StrengthScore = new Dictionary<string, float>();
WeaknessesScore = new Dictionary<string, float>();
NeedCarScore = new Dictionary<string, float>();
NeedFireEquipScore = new Dictionary<string, float>();
NeedSaveEquipScore = new Dictionary<string, float>();
VictoryScore = new Dictionary<string, float>();
DefeatScore = new Dictionary<string, float>();
LevelUpScore = new Dictionary<string, float>();
AllChatMessage = new List<ChatTaskMessage>();
}
public static void SetSendCommand(ChatTaskMessage chatTaskMessage)
{
//SEND_COMMAND_SYNC
NetworkManager.Default.SendAsync("SEND_COMMAND_SYNC", chatTaskMessage);
//totalSendCommand += 1;//TODO 好像是要与车一样,分上下级的
}
public static void SetReceiverCommand(ChatTaskMessage chatTaskMessage)
{
//RECEIVER_COMMAND_SYNC
NetworkManager.Default.SendAsync("RECEIVER_COMMAND_SYNC", chatTaskMessage);
//totalReceiverCommand += 1;
}
// 添加发送命令
public static void AddSendCommand(ChatTaskMessage chatTaskMessage)
{
List<long> chatidlist = new List<long>();
for (int i = 0; i < allSendCommand.Count; i++)
{
chatidlist.Add(allSendCommand[i].ID);
}
if (!chatidlist.Contains(chatTaskMessage.ID))
{
allSendCommand.Add(chatTaskMessage);
}
}
// 添加接收命令
public static void AddReceiverCommand(ChatTaskMessage chatTaskMessage)
{
List<long> chatidlist = new List<long>();
for (int i = 0; i < allReceiverCommand.Count; i++)
{
chatidlist.Add(allReceiverCommand[i].ID);
}
if (!chatidlist.Contains(chatTaskMessage.ID))
{
allReceiverCommand.Add(chatTaskMessage);
}
}
// 添加车辆信息
public static void AddTruckObj(GameObject gameObject)
{
allTrucks.Add(gameObject);
}
// 添加被困人员
public static void AddTrappedPerson(GameObject gameObject)
{
allTrappedPerson.Add(gameObject);
}
// 添加重伤员
public static void AddWoundedPerson(GameObject gameObject)
{
allWoundedPerson.Add(gameObject);
}
public static void GetDataSource()
{
GetAllTruckCount();
GetAllSaveCount();
GetAllCommandCount();
GetActInPersonCount();
}
public static void GetAllCommand()
{
totalSendCommand = 0;
totalReceiverCommand = 0;
GetAllCommandCount();
}
// 获取答题人数
public static void GetActInPersonCount()
{
// 获取参演人数
QuestionnaireNumber = CurrentUserInfo.room.UserList.Count;
foreach (var item in CurrentUserInfo.room.UserList)
{
if (item.Role == Role.)
{
QuestionnaireNumber -= 1;
}
if (item.Role == Role.)
{
QuestionnaireNumber -= 1;
}
}
}
// 获取出车数据字符串
public static string GetAllTruckCountString()
{
string allTruckString = string.Format("共{0}辆。", totalTruckCount);
//waterTankerCount
if (waterTankerCount > 0)
{
allTruckString += string.Format("水罐消防车{0}辆;", waterTankerCount);
}
//foamTruckCount
if (foamTruckCount > 0)
{
allTruckString += string.Format("泡沫消防车{0}辆;", foamTruckCount);
}
//aerialTowerTruckCount
if (aerialTowerTruckCount > 0)
{
allTruckString += string.Format("登高平台车{0}辆;", aerialTowerTruckCount);
}
//highSprayingTruckCount
if (highSprayingTruckCount > 0)
{
allTruckString += string.Format("高喷消防车{0}辆;", highSprayingTruckCount);
}
//ladderTruckCount
if (ladderTruckCount > 0)
{
allTruckString += string.Format("云梯消防车{0}辆;", ladderTruckCount);
}
//smokeExhaustTruckCount
if (smokeExhaustTruckCount > 0)
{
allTruckString += string.Format("排烟消防车{0}辆;", smokeExhaustTruckCount);
}
//rescueVehicleCount
if (rescueVehicleCount > 0)
{
allTruckString += string.Format("抢险救援车{0}辆;", rescueVehicleCount);
}
//apparatusCount
if (apparatusCount > 0)
{
allTruckString += string.Format("器材消防车{0}辆;", apparatusCount);
}
//lightingApplianceCount
if (lightingApplianceCount > 0)
{
allTruckString += string.Format("照明消防车{0}辆;", lightingApplianceCount);
}
//repairCarCount
if (repairCarCount > 0)
{
allTruckString += string.Format("抢修车{0}辆;", repairCarCount);
}
//forcibleEntryTruckCount
if (forcibleEntryTruckCount > 0)
{
allTruckString += string.Format("破拆消防车{0}辆;", forcibleEntryTruckCount);
}
return allTruckString;
}
// 获取出动人数字符串
public static string GetAllFiremanCountString()
{
return string.Format("{0}人", totalFireman);
}
// 获取救助被困人员字符串
public static string GetAllSaveCountString()
{
return string.Format("轻伤员{0}人,重伤员{1}人", totalSaveTrappedCount, totalSaveWoundedCount);
}
// 获取用液量字符串
public static string GetAllUserWaterString()
{
return string.Format("灭火用水{0:F}吨。", totalUseWater * 0.001);
}
// 获取发送命令字符串
public static string GetAllSendCommandString()
{
return string.Format("{0}条", totalSendCommand);
}
// 获取接收命令字符串
public static string GetAllReceiverCommandString()
{
return string.Format("{0}条", totalReceiverCommand);
}
// 获取所有命令数量
private static void GetAllCommandCount()
{
totalSendCommand = 0;
totalReceiverCommand = 0;
// 如果时导调组观察团
if (CurrentUserInfo.role == Role. || CurrentUserInfo.role == Role.)
{
// 发送命令
totalSendCommand = allSendCommand.Count;
// 接收命令
totalReceiverCommand = allReceiverCommand.Count;
}
else
{
allSubId = ChatManager.Instance.FindAllSubUserId();
// 发送命令
foreach (var item in allSendCommand)
{
// 自己发送的命令
if (item.SenderId == CurrentUserInfo.mySelf.Id)
{
totalSendCommand += 1;
}
// 下级发送的命令
foreach (var id in allSubId)
{
if (item.SenderId == id)
{
totalSendCommand += 1;
break;
}
}
}
// 接收命令
foreach (var item in allReceiverCommand)
{
item.ReceiverId = item.Channel.ID - item.SenderId;
// 自己接收的命令
if (item.ReceiverId == CurrentUserInfo.mySelf.Id)
{
totalReceiverCommand += 1;
}
// 下级接收的命令
foreach (var id in allSubId)
{
if (item.ReceiverId == id)
{
totalReceiverCommand += 1;
break;
}
}
}
}
}
// 获取所有车辆数量
private static void GetAllTruckCount()
{
// 如果时导调组观察团
if (CurrentUserInfo.role == Role. || CurrentUserInfo.role == Role.)
{
//foreach (var item in allTrucks)
//{
// TruckMessage cloneGameObjInfo = item.GetComponent<TruckMessage>();
// // 检测是什么车
// CheckedTruckData(cloneGameObjInfo);
//}
//List<FireCarEngine> allivecar = new List<FireCarEngine>();
//foreach (var item in ArrivedPowerTotal.arrivedCars.Values)
//{
// foreach (var item1 in item)
// {
// int num = item1.Value;
// for (int i = 0; i < num; i++)
// {
// allivecar.Add(item1.Key);
// }
// }
//}
Transform allparent = GameObject.Find("P_AllParent").transform.Find("P_Cars");
TruckMessage[] allcar = allparent.GetComponentsInChildren<TruckMessage>();
foreach (var item in allcar)
{
//TruckMessage cloneGameObjInfo = item.GetComponent<TruckMessage>();
// 检测是什么车
CheckedTruckData(item);
}
if (GameSettings.othersSettings.mode == Mode.manoeuvre)
{
totalFireman = 0;
foreach (var item in GameSettings.othersSettings.DisplayName_Num_Dic.Values)
{
totalFireman += item;
}
}
}
else
{
allSubId = ChatManager.Instance.FindAllSubUserId();
// 查找属于自己的车辆
foreach (var item in allTrucks)
{
TruckMessage cloneGameObjInfo = item.GetComponent<TruckMessage>();
if (cloneGameObjInfo.UserID == CurrentUserInfo.mySelf.Id)
{
// 检测是什么车
CheckedTruckData(cloneGameObjInfo);
}
// 查找自己下级的车辆
foreach (var id in allSubId)
{
// 是下级车辆+1
if (cloneGameObjInfo.UserID == id)
{
CheckedTruckData(cloneGameObjInfo);
break;
}
}
}
//演习模式单独处理消防员数量
if (GameSettings.othersSettings.mode == Mode.manoeuvre)
{
totalFireman = 0;
for (int i = 0; i < CurrentUserInfo.room.UserList.Count; i++)
{
if (allSubId.Contains(CurrentUserInfo.room.UserList[i].UserInfo.Id)
|| CurrentUserInfo.room.UserList[i].UserInfo.Id == CurrentUserInfo.mySelf.Id)
{
foreach (var item in GameSettings.othersSettings.DisplayName_Num_Dic.Keys)
{
if (CurrentUserInfo.room.UserList[i].Org.DisplayName == item)
{
totalFireman += GameSettings.othersSettings.DisplayName_Num_Dic[item];
}
}
}
}
}
}
}
// 获取营救人员数量
private static void GetAllSaveCount()
{
// 如果时导调组观察团
if (CurrentUserInfo.role == Role. || CurrentUserInfo.role == Role.)
{
// 轻伤员
//foreach (var item in allTrappedPerson)
//{
// TrappedMoveFree cloneGameObjInfo = item.GetComponent<TrappedMoveFree>();
// if (cloneGameObjInfo.SaveFrirmanUserId != 0)
// {
// totalSaveTrappedCount += 1;
// }
//}
//// 重伤员
//foreach (var item in allWoundedPerson)
//{
// WoundedSave cloneGameObjInfo = item.GetComponent<WoundedSave>();
// if (cloneGameObjInfo.SaveFrirmanUserId != 0)
// {
// totalSaveWoundedCount += 1;
// }
//}
totalSaveTrappedCount = 0;
totalSaveWoundedCount = 0;
Transform p_trapped = GameObject.Find("P_AllParent").transform.Find("P_Disasters/P_TrappedPerson");
Transform p_wound = GameObject.Find("P_AllParent").transform.Find("P_Disasters/P_Wounded");
for (int i = 0; i < p_trapped.childCount; i++)
{
if (p_trapped.GetChild(i).GetComponent<TrappedMoveFree>().OverMoveOrGuidance)
{
totalSaveTrappedCount++;
}
}
for (int i = 0; i < p_wound.childCount; i++)
{
if (p_wound.GetChild(i).GetComponent<WoundedSave>().OverMoveOrGuidance)
{
totalSaveWoundedCount++;
}
}
}
else
{
allSubId = ChatManager.Instance.FindAllSubUserId();
// 自己救的轻伤员
foreach (var item in allTrappedPerson)
{
if (item && item.GetComponent<TrappedMoveFree>())
{
TrappedMoveFree cloneGameObjInfo = item.GetComponent<TrappedMoveFree>();
if (cloneGameObjInfo.SaveFrirmanUserId == CurrentUserInfo.mySelf.Id && cloneGameObjInfo.OverMoveOrGuidance)
{
totalSaveTrappedCount += 1;
}
// 下级救的人
foreach (var id in allSubId)
{
if (cloneGameObjInfo.SaveFrirmanUserId == id && cloneGameObjInfo.OverMoveOrGuidance)
{
totalSaveTrappedCount += 1;
break;
}
}
}
}
// 自己救的重伤员
foreach (var item in allWoundedPerson)
{
if (item && item.GetComponent<WoundedSave>())
{
WoundedSave cloneGameObjInfo = item.GetComponent<WoundedSave>();
if (cloneGameObjInfo.SaveFrirmanUserId == CurrentUserInfo.mySelf.Id && cloneGameObjInfo.OverMoveOrGuidance)
{
totalSaveWoundedCount += 1;
}
// 下级救的人
foreach (var id in allSubId)
{
if (cloneGameObjInfo.SaveFrirmanUserId == id && cloneGameObjInfo.OverMoveOrGuidance)
{
totalSaveWoundedCount += 1;
break;
}
}
}
}
}
}
// 检测是什么车
private static void CheckedTruckData(TruckMessage truckMessage)
{
// 总共多少人
totalFireman += (int)truckMessage.MyCarMessage.PassengerCapacity;
totalTruckCount += 1;
switch (truckMessage.gameObjType)
{
case CloneObjType.WaterTanker:
waterTankerCount += 1;
// 用水量
totalUseWater += truckMessage.GetComponent<WaterSource>().AllUserWater;
break;
case CloneObjType.FoamTruck:
foamTruckCount += 1;
// 用水量
totalUseWater += truckMessage.GetComponent<WaterSource>().AllUserWater;
break;
case CloneObjType.AerialTowerTruck:
aerialTowerTruckCount += 1;
break;
case CloneObjType.HighSprayingTruck:
highSprayingTruckCount += 1;
break;
case CloneObjType.LadderTruck:
ladderTruckCount += 1;
break;
case CloneObjType.SmokeExhaustTruck:
smokeExhaustTruckCount += 1;
break;
case CloneObjType.RescueVehicle:
rescueVehicleCount += 1;
break;
case CloneObjType.Apparatus:
apparatusCount += 1;
break;
case CloneObjType.LightingAppliance:
lightingApplianceCount += 1;
break;
case CloneObjType.RepairCar:
repairCarCount += 1;
break;
case CloneObjType.ForcibleEntryTruck:
forcibleEntryTruckCount += 1;
break;
}
}
// 清空数据
public static void Clear()
{
allTrucks.Clear();
allTrappedPerson.Clear();
allSubId.Clear();
totalTruckCount = 0;
waterTankerCount = 0;
foamTruckCount = 0;
aerialTowerTruckCount = 0;
highSprayingTruckCount = 0;
ladderTruckCount = 0;
smokeExhaustTruckCount = 0;
rescueVehicleCount = 0;
apparatusCount = 0;
lightingApplianceCount = 0;
repairCarCount = 0;
forcibleEntryTruckCount = 0;
totalFireman = 0;
totalUseWater = 0;
totalSaveTrappedCount = 0;
totalSaveWoundedCount = 0;
totalSendCommand = 0;
totalReceiverCommand = 0;
}
// 获取所有得分
public static void GetAllScoure()
{
foreach (var item in AllQuestionnaire)
{
// 中队分数初始化
ZhongDuiScoreInit(item[0]);
// 指挥分数初始化
ZhiHuiScoreInit(item[1]);
// 参演人员分数初始化
ActInScoreInit(item[2]);
// 劣势数据初始化
WeaknessesScoreInit(item[3]);
// 优势数据初始化
StrengthScoreInit(item[4]);
if (IsVictory)
{
// 胜利
VictoryScoreInit(item[5]);
}
else
{
// 失败
DefeatScoreInit(item[5]);
}
// 需要车辆
NeedCarScoreInit(item[6]);
// 需要装备
NeedFireEquipScoreInit(item[7]);
// 需要装备
NeedSaveEquipScoreInit(item[8]);
// 控火得分初始化
FireScoreInit(item[9]);
// 救人得分初始化
SaveScoreInit(item[10]);
// 救人得分初始化
LookAtScoreInit(item[11]);
// 救人得分初始化
CoolScoreInit(item[12]);
// 救人得分初始化
WaterScoreInit(item[13]);
// 提升分数提升
LevelUpScoreInit(item[14]);
}
}
// 提升统计初始化
private static void LevelUpScoreInit(Question question)
{
foreach (var item in question.SelectionResult)
{
if (!LevelUpScore.ContainsKey(item.Key))
{
LevelUpScore.Add(item.Key, 0);
}
if (item.Value)
{
LevelUpScore[item.Key] += 1;
}
}
}
// 失败统计初始化
private static void DefeatScoreInit(Question question)
{
foreach (var item in question.SelectionResult)
{
if (!DefeatScore.ContainsKey(item.Key))
{
DefeatScore.Add(item.Key, 0);
}
if (item.Value)
{
DefeatScore[item.Key] += 1;
}
}
}
// 胜利统计初始化
private static void VictoryScoreInit(Question question)
{
foreach (var item in question.SelectionResult)
{
if (!VictoryScore.ContainsKey(item.Key))
{
VictoryScore.Add(item.Key, 0);
}
if (item.Value)
{
VictoryScore[item.Key] += 1;
}
}
}
// 需要救援装备统计
private static void NeedSaveEquipScoreInit(Question question)
{
foreach (var item in question.SelectionResult)
{
if (!NeedSaveEquipScore.ContainsKey(item.Key))
{
NeedSaveEquipScore.Add(item.Key, 0);
}
if (item.Value)
{
NeedSaveEquipScore[item.Key] += 1;
}
}
}
// 需要灭火装备统计
private static void NeedFireEquipScoreInit(Question question)
{
foreach (var item in question.SelectionResult)
{
if (!NeedFireEquipScore.ContainsKey(item.Key))
{
NeedFireEquipScore.Add(item.Key, 0);
}
if (item.Value)
{
NeedFireEquipScore[item.Key] += 1;
}
}
}
// 需要车辆统计
private static void NeedCarScoreInit(Question question)
{
foreach (var item in question.SelectionResult)
{
if (!NeedCarScore.ContainsKey(item.Key))
{
NeedCarScore.Add(item.Key, 0);
}
if (item.Value)
{
NeedCarScore[item.Key] += 1;
}
}
}
// 短板统计
private static void WeaknessesScoreInit(Question question)
{
foreach (var item in question.SelectionResult)
{
if (!WeaknessesScore.ContainsKey(item.Key))
{
WeaknessesScore.Add(item.Key, 0);
}
if (item.Value)
{
WeaknessesScore[item.Key] += 1;
}
}
}
// 优势统计
private static void StrengthScoreInit(Question question)
{
foreach (var item in question.SelectionResult)
{
if (!StrengthScore.ContainsKey(item.Key))
{
StrengthScore.Add(item.Key, 0);
}
if (item.Value)
{
StrengthScore[item.Key] += 1;
}
}
}
// 初始化供水得分
private static void WaterScoreInit(Question question)
{
foreach (var score in question.ScoreResult)
{
if (!WaterScore.ContainsKey(score.Key))
{
WaterScore.Add(score.Key, 0);
}
WaterScore[score.Key] += score.Value;
}
}
// 初始化冷却得分
private static void CoolScoreInit(Question question)
{
foreach (var score in question.ScoreResult)
{
if (!CoolScore.ContainsKey(score.Key))
{
CoolScore.Add(score.Key, 0);
}
CoolScore[score.Key] += score.Value;
}
}
// 初始化侦察得分
private static void LookAtScoreInit(Question question)
{
foreach (var score in question.ScoreResult)
{
if (!LookAtScore.ContainsKey(score.Key))
{
LookAtScore.Add(score.Key, 0);
}
LookAtScore[score.Key] += score.Value;
}
}
// 初始化救人得分
private static void SaveScoreInit(Question question)
{
foreach (var score in question.ScoreResult)
{
if (!SaveScore.ContainsKey(score.Key))
{
SaveScore.Add(score.Key, 0);
}
SaveScore[score.Key] += score.Value;
}
}
// 初始化控火得分
private static void FireScoreInit(Question question)
{
foreach (var score in question.ScoreResult)
{
if (!FireScore.ContainsKey(score.Key))
{
FireScore.Add(score.Key, 0);
}
FireScore[score.Key] += score.Value;
}
}
// 参演人员得分初始化
private static void ActInScoreInit(Question question)
{
for (int i = 0; i < question.Content.Count; i++)
{
string itemName = question.Content[i];
int itemScore = question.ScoreResult[itemName];
if (!ActInScore.ContainsKey(itemName))
{
ActInScore.Add(itemName, 0);
}
ActInScore[itemName] += itemScore;
}
}
// 初始化中队分数
private static void ZhongDuiScoreInit(Question question)
{
// 计算投票数
foreach (var item in question.SelectionResult)
{
if (!ZhongDuiScore.ContainsKey(item.Key))
{
ZhongDuiScore.Add(item.Key, 0);
}
if (item.Value)
{
ZhongDuiScore[item.Key] += 1;
}
}
}
// 初始化中队分数
private static void ZhiHuiScoreInit(Question question)
{
// 计算投票数
foreach (var item in question.SelectionResult)
{
if (!ZhiHuiScore.ContainsKey(item.Key))
{
ZhiHuiScore.Add(item.Key, 0);
}
if (item.Value)
{
ZhiHuiScore[item.Key] += 1;
}
}
}
// 获取表现最好的指挥
public static string GetZhiHuiBest()
{
ReportDataMgr.GetActInPersonCount();
// 计算最高票数
float max = ZhiHuiScore.Max(i => i.Value);
string name = ZhiHuiScore.Find(i => i.Value == max).Key;
float score = (ActInScore.Find(i => i.Key == name).Value) / QuestionnaireNumber;
return string.Format("<color=#ff0000>{0}</color>被大家评选为本场最佳指挥员,他得到了<color=#ff0000>{1:0.0}</color>分的高分。", name, score);
}
// 获取表现最好的中队
public static string GetZhongDuiBest()
{
// 计算最高票数
float max = ZhongDuiScore.Max(i => i.Value);
string name = ZhongDuiScore.Find(i => i.Value == max).Key;
return string.Format("本次演练表现最好的中队是<color=#ff0000>{0}</color>。", name);
}
// 获取总分平均分TODO 还需要除以中队个数
public static float GetTotalScore()
{
float fireScore = GetFireScore();
float saveScore = GetSaveScore();
float lookAtScore = GetLookAtScore();
float coolScore = GetCoolScore();
float waterScore = GetWaterScore();
return (fireScore + saveScore + lookAtScore + coolScore + waterScore) / 5;
}
// 获取灭火平均分
public static float GetFireScore()
{
ReportDataMgr.GetActInPersonCount();
float score = 0;
foreach (var item in FireScore)
{
score += item.Value;
}
return score / QuestionnaireNumber / ZhongDuiScore.Count;
}
// 获取救人平均分
public static float GetSaveScore()
{
ReportDataMgr.GetActInPersonCount();
float score = 0;
foreach (var item in SaveScore)
{
score += item.Value;
}
return score / QuestionnaireNumber / ZhongDuiScore.Count;
}
// 获取侦察平均分
public static float GetLookAtScore()
{
ReportDataMgr.GetActInPersonCount();
float score = 0;
foreach (var item in LookAtScore)
{
score += item.Value;
}
return score / QuestionnaireNumber / ZhongDuiScore.Count;
}
// 获取冷却平均分
public static float GetCoolScore()
{
ReportDataMgr.GetActInPersonCount();
float score = 0;
foreach (var item in CoolScore)
{
score += item.Value;
}
return score / QuestionnaireNumber / ZhongDuiScore.Count;
}
// 获取供水平均分
public static float GetWaterScore()
{
ReportDataMgr.GetActInPersonCount();
float score = 0;
foreach (var item in WaterScore)
{
score += item.Value;
}
return score / QuestionnaireNumber / ZhongDuiScore.Count;
}
// 获取表现最好的环节
public static string GetHuanJieBest()
{
float fireScore = GetFireScore();
float saveScore = GetSaveScore();
float lookAtScore = GetLookAtScore();
float coolScore = GetCoolScore();
float waterScore = GetWaterScore();
float[] temp = new float[] { fireScore, saveScore, lookAtScore, coolScore, waterScore };
var max = temp.Max();
string name = "";
if (max == fireScore)
{
name = "控火";
}
else if (max == saveScore)
{
name = "救人";
}
else if (max == lookAtScore)
{
name = "侦察";
}
else if (max == coolScore)
{
name = "冷却";
}
else
{
name = "供水";
}
return string.Format("本次演练表现最出色的是<color=#ff0000>{0}</color>环节,获得了<color=#ff0000>{1:0.0}</color>分。", name, max);
}
// 获取表现最差的环节
public static string GetHuanJieBad()
{
float fireScore = GetFireScore();
float saveScore = GetSaveScore();
float lookAtScore = GetLookAtScore();
float coolScore = GetCoolScore();
float waterScore = GetWaterScore();
float[] temp = new float[] { fireScore, saveScore, lookAtScore, coolScore, waterScore };
var min = temp.Min();
string name = "";
if (min == fireScore)
{
name = "控火";
}
else if (min == saveScore)
{
name = "救人";
}
else if (min == lookAtScore)
{
name = "侦察";
}
else if (min == coolScore)
{
name = "冷却";
}
else
{
name = "供水";
}
return string.Format("本次演练表现最差的是<color=#ff0000>{0}</color>环节,获得了<color=#ff0000>{1:0.0}</color>分。", name, min);
}
// 控火环节表现最好的中队
public static string GetFireScoreBest()
{
var max = FireScore.Max(i => i.Value);
var item = FireScore.Find(i => i.Value == max);
return string.Format("<color=#ff0000>{0}</color>在<color=#ff0000>控火</color>环节表现最为出色;", item.Key);
}
// 救人环节表现最好的中队
public static string GetSaveScoreBest()
{
var max = SaveScore.Max(i => i.Value);
var item = SaveScore.Find(i => i.Value == max);
return string.Format("<color=#ff0000>{0}</color>在<color=#ff0000>救人</color>环节表现最为出色;", item.Key);
}
// 侦察环节表现最好的中队
public static string GetLookAtScoreBest()
{
var max = LookAtScore.Max(i => i.Value);
var item = LookAtScore.Find(i => i.Value == max);
return string.Format("<color=#ff0000>{0}</color>在<color=#ff0000>侦察</color>环节表现最为出色;", item.Key);
}
// 冷却环节表现最好的中队
public static string GetCoolScoreBest()
{
var max = CoolScore.Max(i => i.Value);
var item = CoolScore.Find(i => i.Value == max);
return string.Format("<color=#ff0000>{0}</color>在<color=#ff0000>冷却</color>环节表现最为出色;", item.Key);
}
// 供水环节表现最好的中队
public static string GetWaterScoreBest()
{
var max = WaterScore.Max(i => i.Value);
var item = WaterScore.Find(i => i.Value == max);
return string.Format("<color=#ff0000>{0}</color>在<color=#ff0000>供水</color>环节表现最为出色;", item.Key);
}
// 优势
public static string GetStrengthScore()
{
var max = StrengthScore.Max(i => i.Value);
var item = StrengthScore.Find(i => i.Value == max);
return string.Format("通过本次演练,队伍最大的优势是<color=#ff0000>{0}</color>。", item.Key);
}
// 劣势
public static string GetWeaknessesScore()
{
var max = WeaknessesScore.Max(i => i.Value);
var item = WeaknessesScore.Find(i => i.Value == max);
return string.Format("通过本次演练,队伍最大的短板是<color=#ff0000>{0}</color>。", item.Key);
}
// 急需装备
public static string GetNeedScore()
{
// 急需车辆
var max1 = NeedCarScore.Max(i => i.Value);
var item1 = NeedCarScore.Find(i => i.Value == max1);
// 急需灭火装备
var max2 = NeedFireEquipScore.Max(i => i.Value);
var item2 = NeedFireEquipScore.Find(i => i.Value == max2);
// 急需救援装备
var max3 = NeedSaveEquipScore.Max(i => i.Value);
var item3 = NeedSaveEquipScore.Find(i => i.Value == max3);
return string.Format("通过本次演练,急需的车辆/装备是<color=#ff0000>{0}</color>、<color=#ff0000>{1}</color>、<color=#ff0000>{2}</color>。", item1.Key, item2.Key, item3.Key);
}
// 胜利失败
public static string GetWinOrLostScore()
{
if (IsVictory)
{
var max = VictoryScore.Max(i => i.Value);
var item = VictoryScore.Find(i => i.Value == max);
return string.Format("本次演练胜利的最大原因是<color=#ff0000>{0}</color>。", item.Key);
}
else
{
var max = DefeatScore.Max(i => i.Value);
var item = DefeatScore.Find(i => i.Value == max);
return string.Format("本次演练失败的最大原因是<color=#ff0000>{0}</color>。", item.Key);
}
}
// 改进建议
public static string GetLevelUpScore()
{
var max1 = LevelUpScore.Max(i => i.Value);
var item1 = LevelUpScore.Find(i => i.Value == max1);
LevelUpScore.Remove(item1.Key);
var max2 = LevelUpScore.Max(i => i.Value);
var item2 = LevelUpScore.Find(i => i.Value == max2);
LevelUpScore.Remove(item2.Key);
var max3 = LevelUpScore.Max(i => i.Value);
var item3 = LevelUpScore.Find(i => i.Value == max3);
if (max2 == 0)
{
return string.Format("参演人员认为,应当通过以下途径提升队伍战力:①{0}(<color=#ff0000>{1}</color>)。", item1.Key, item1.Value);
}
else if (max3 == 0)
{
return string.Format("参演人员认为,应当通过以下途径提升队伍战力:①{0}(<color=#ff0000>{1}</color>)②{2}(<color=#ff0000>{3}</color>)。", item1.Key, item1.Value, item2.Key, item2.Value);
}
else
{
return string.Format("参演人员认为,应当通过以下途径提升队伍战力:①{0}(<color=#ff0000>{1}</color>)②{2}(<color=#ff0000>{3}</color>)③{4}(<color=#ff0000>{5}</color>)。", item1.Key, item1.Value, item2.Key, item2.Value, item3.Key, item3.Value);
}
}
/// <summary>
/// 本客户端发送命令数量统计
/// </summary>
/// <returns></returns>
private static List<ChatMessage> GetSendMsg()
{
List<ChatMessage> sendchatlist = new List<ChatMessage>();
for (int i = 0; i < ReportDataMgr.AllChatMessage.Count; i++)
{
if (ReportDataMgr.AllChatMessage[i].SenderId == CurrentUserInfo.mySelf.Id)
{//当前客户端发送的
// if (ChatManager.Instance.FindDirectionSubUserDataID().Contains(ReportDataMgr.AllChatMessage[i].ReceiverId))
{//直接下级为接收方
sendchatlist.Add(ReportDataMgr.AllChatMessage[i]);
}
}
}
return sendchatlist;
}
/// <summary>
/// 本客户端接受命令统计
/// </summary>
/// <returns></returns>
private static List<ChatMessage> GetReceiveMsg()
{
List<ChatMessage> receivechatlist = new List<ChatMessage>();
for (int i = 0; i < ReportDataMgr.AllChatMessage.Count; i++)
{
if (!(CurrentUserInfo.role == Role. || CurrentUserInfo.role == Role.))
{
if (ReportDataMgr.AllChatMessage[i].ReceiverId == CurrentUserInfo.mySelf.Id)
{
receivechatlist.Add(ReportDataMgr.AllChatMessage[i]);
}
}
else
{
receivechatlist.Add(ReportDataMgr.AllChatMessage[i]);
}
}
return receivechatlist;
}
public static string GetReceiveMsgCount()
{
return string.Format("{0}条", GetReceiveMsg().Count);
}
public static string GetSendMsgCount()
{
return string.Format("{0}条", GetSendMsg().Count);
}
}