366 lines
11 KiB
C++
Executable File
366 lines
11 KiB
C++
Executable File
#include "tln_utils.h"
|
|
#include "ProjectDataManagement/pdm_translation.h"
|
|
|
|
#include <QHash>
|
|
#include <QCoreApplication> // for translations
|
|
|
|
|
|
namespace Timeline
|
|
{
|
|
|
|
QString eventTypeString(EventType eventType)
|
|
{
|
|
switch (eventType)
|
|
{
|
|
case EventType::Hit:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::Hit);
|
|
|
|
case EventType::WeaponAssignment:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::WeaponAssignment);
|
|
|
|
case EventType::BiteMessage:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::BiteMessage);
|
|
|
|
case EventType::FireEvent:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::FireEvent);
|
|
|
|
case EventType::HitBuilding:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitBuilding);
|
|
|
|
case EventType::Manipulation:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::Manipulation);
|
|
|
|
case EventType::CameraVideo:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::CameraVideo);
|
|
|
|
case EventType::RadioCnr:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::RadioCnr);
|
|
|
|
case EventType::RadioTvc:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::RadioTvc);
|
|
|
|
case EventType::HitEffectSimulation:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitEffectSimulation);
|
|
|
|
case EventType::HitMine:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitMine);
|
|
|
|
case EventType::HitN:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitN);
|
|
|
|
case EventType::HitC:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitC);
|
|
|
|
case EventType::EnterDangerArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EnterDangerArea);
|
|
|
|
case EventType::LeaveDangerArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::LeaveDangerArea);
|
|
|
|
case EventType::EnterMineArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EnterMineArea);
|
|
|
|
case EventType::LeaveMineArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::LeaveMineArea);
|
|
|
|
case EventType::CrossBorderline:
|
|
return QCoreApplication::translate("EventType", "CrossBorderline"); // NOTE: special since cross local and global borderline have been merged
|
|
|
|
case EventType::EnterFunctionalArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EnterFunctionalArea);
|
|
|
|
case EventType::LeaveFunctionalArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::LeaveFunctionalArea);
|
|
|
|
case EventType::EnterNuclear:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EnterNuclear);
|
|
|
|
case EventType::LeaveNuclear:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::LeaveNuclear);
|
|
|
|
case EventType::HitB:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitB);
|
|
|
|
case EventType::FriendlyFire:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::FriendlyFire);
|
|
|
|
case EventType::HitGasPipe:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::HitGasPipe);
|
|
|
|
case EventType::MineArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::MineArea);
|
|
|
|
case EventType::NContamination:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::NContamination);
|
|
|
|
case EventType::BCContamination:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::BCContamination);
|
|
|
|
case EventType::DangerArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::DangerArea);
|
|
|
|
case EventType::FunctionalArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::FunctionalArea);
|
|
|
|
case EventType::MineCorridor:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::MineCorridor);
|
|
|
|
case EventType::Borderline:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::Borderline);
|
|
|
|
case EventType::TechnicalArea:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::TechnicalArea);
|
|
|
|
case EventType::GasPipe:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::GasPipe);
|
|
|
|
case EventType::Sanitation:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::Sanitation);
|
|
|
|
case EventType::EquipmentErrorReport:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EquipmentErrorReport);
|
|
|
|
case EventType::EmergencyCall:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::EmergencyCall);
|
|
|
|
case EventType::Marker:
|
|
return QCoreApplication::translate("EventType", "Marker");
|
|
|
|
case EventType::Block:
|
|
return QCoreApplication::translate("EventType", "Block");
|
|
|
|
case EventType::Unknown:
|
|
default:
|
|
return ProjectDataManagement::toString(ProjectDataManagement::EventType_def::Unknown);
|
|
}
|
|
Q_UNREACHABLE();
|
|
}
|
|
|
|
EventType toEventType(int eventType)
|
|
{
|
|
switch (eventType)
|
|
{
|
|
case EventType::Hit:
|
|
return EventType::Hit;
|
|
|
|
case EventType::WeaponAssignment:
|
|
return EventType::WeaponAssignment;
|
|
|
|
case EventType::BiteMessage:
|
|
return EventType::BiteMessage;
|
|
|
|
case EventType::FireEvent:
|
|
return EventType::FireEvent;
|
|
|
|
case EventType::HitBuilding:
|
|
return EventType::HitBuilding;
|
|
|
|
case EventType::Manipulation:
|
|
return EventType::Manipulation;
|
|
|
|
case EventType::CameraVideo:
|
|
return EventType::CameraVideo;
|
|
|
|
case EventType::RadioCnr:
|
|
return EventType::RadioCnr;
|
|
|
|
case EventType::RadioTvc:
|
|
return EventType::RadioTvc;
|
|
|
|
case EventType::HitEffectSimulation:
|
|
return EventType::HitEffectSimulation;
|
|
|
|
case EventType::HitMine:
|
|
return EventType::HitMine;
|
|
|
|
case EventType::HitN:
|
|
return EventType::HitN;
|
|
|
|
case EventType::HitC:
|
|
return EventType::HitC;
|
|
|
|
case EventType::EnterDangerArea:
|
|
return EventType::EnterDangerArea;
|
|
|
|
case EventType::LeaveDangerArea:
|
|
return EventType::LeaveDangerArea;
|
|
|
|
case EventType::EnterMineArea:
|
|
return EventType::EnterMineArea;
|
|
|
|
case EventType::LeaveMineArea:
|
|
return EventType::LeaveMineArea;
|
|
|
|
case ProjectDataManagement::EventType_def::CrossLocalBorderline:
|
|
case ProjectDataManagement::EventType_def::CrossGlobalBorderline:
|
|
return EventType::CrossBorderline;
|
|
|
|
case EventType::EnterFunctionalArea:
|
|
return EventType::EnterFunctionalArea;
|
|
|
|
case EventType::LeaveFunctionalArea:
|
|
return EventType::LeaveFunctionalArea;
|
|
|
|
case EventType::EnterNuclear:
|
|
return EventType::EnterNuclear;
|
|
|
|
case EventType::LeaveNuclear:
|
|
return EventType::LeaveNuclear;
|
|
|
|
case EventType::HitB:
|
|
return EventType::HitB;
|
|
|
|
case EventType::FriendlyFire:
|
|
return EventType::FriendlyFire;
|
|
|
|
case EventType::HitGasPipe:
|
|
return EventType::HitGasPipe;
|
|
|
|
case EventType::MineArea:
|
|
return EventType::MineArea;
|
|
|
|
case EventType::NContamination:
|
|
return EventType::NContamination;
|
|
|
|
case EventType::BCContamination:
|
|
return EventType::BCContamination;
|
|
|
|
case EventType::DangerArea:
|
|
return EventType::DangerArea;
|
|
|
|
case EventType::FunctionalArea:
|
|
return EventType::FunctionalArea;
|
|
|
|
case EventType::MineCorridor:
|
|
return EventType::MineCorridor;
|
|
|
|
case EventType::Borderline:
|
|
return EventType::Borderline;
|
|
|
|
case EventType::TechnicalArea:
|
|
return EventType::TechnicalArea;
|
|
|
|
case EventType::GasPipe:
|
|
return EventType::GasPipe;
|
|
|
|
case EventType::Sanitation:
|
|
return EventType::Sanitation;
|
|
|
|
case EventType::EquipmentErrorReport:
|
|
return EventType::EquipmentErrorReport;
|
|
|
|
case EventType::EmergencyCall:
|
|
return EventType::EmergencyCall;
|
|
|
|
case EventType::Marker:
|
|
return EventType::Marker;
|
|
|
|
default:
|
|
return EventType::Unknown;
|
|
}
|
|
}
|
|
|
|
int eventTypeCategory(EventType eventType)
|
|
{
|
|
switch (eventType)
|
|
{
|
|
case EventType::Unknown:
|
|
case EventType::Marker:
|
|
case EventType::Block:
|
|
return 0;
|
|
case EventType::WeaponAssignment:
|
|
case EventType::BiteMessage:
|
|
case EventType::FriendlyFire:
|
|
case EventType::Manipulation:
|
|
case EventType::CrossBorderline:
|
|
return 1;
|
|
case EventType::FireEvent:
|
|
case EventType::Hit:
|
|
case EventType::HitBuilding:
|
|
case EventType::HitEffectSimulation:
|
|
case EventType::HitMine:
|
|
case EventType::HitN:
|
|
case EventType::HitB:
|
|
case EventType::HitC:
|
|
case EventType::HitGasPipe:
|
|
return 2;
|
|
case EventType::EnterDangerArea:
|
|
case EventType::LeaveDangerArea:
|
|
case EventType::EnterMineArea:
|
|
case EventType::LeaveMineArea:
|
|
case EventType::EnterFunctionalArea:
|
|
case EventType::LeaveFunctionalArea:
|
|
case EventType::EnterNuclear:
|
|
case EventType::LeaveNuclear:
|
|
case EventType::Sanitation:
|
|
return 3;
|
|
case EventType::CameraVideo:
|
|
case EventType::RadioCnr:
|
|
case EventType::RadioTvc:
|
|
return 5;
|
|
case EventType::MineArea:
|
|
case EventType::NContamination:
|
|
case EventType::BCContamination:
|
|
case EventType::DangerArea:
|
|
case EventType::FunctionalArea:
|
|
case EventType::MineCorridor:
|
|
case EventType::Borderline:
|
|
case EventType::GasPipe:
|
|
return 6;
|
|
case EventType::TechnicalArea:
|
|
case EventType::EquipmentErrorReport:
|
|
case EventType::EmergencyCall:
|
|
return 0;
|
|
}
|
|
Q_UNREACHABLE();
|
|
return 0;
|
|
}
|
|
|
|
EventTypes filterEventTypes()
|
|
{
|
|
static const EventTypes eventTypes = {
|
|
EventType::BiteMessage,
|
|
EventType::CameraVideo,
|
|
EventType::CrossBorderline,
|
|
EventType::FireEvent,
|
|
EventType::Hit,
|
|
EventType::HitBuilding,
|
|
EventType::HitEffectSimulation,
|
|
EventType::Manipulation,
|
|
EventType::Marker,
|
|
EventType::RadioCnr,
|
|
EventType::RadioTvc,
|
|
EventType::WeaponAssignment
|
|
};
|
|
return eventTypes;
|
|
}
|
|
|
|
bool isAudioEvent(EventType eventType)
|
|
{
|
|
return eventType == EventType::RadioCnr || eventType == EventType::RadioTvc;
|
|
}
|
|
|
|
bool isVideoEvent(EventType eventType)
|
|
{
|
|
return eventType == EventType::CameraVideo;
|
|
}
|
|
|
|
bool isAudioVideoEvent(EventType eventType)
|
|
{
|
|
return isAudioEvent(eventType) || isVideoEvent(eventType);
|
|
}
|
|
|
|
bool isHitEvent(EventType eventType)
|
|
{
|
|
return eventType == EventType::Hit || eventType == EventType::HitB || eventType == EventType::HitBuilding ||
|
|
eventType == EventType::HitC || eventType == EventType::HitGasPipe || eventType == EventType::HitEffectSimulation ||
|
|
eventType == EventType::HitMine || eventType == EventType::HitN;
|
|
}
|
|
|
|
bool isParticipantEvent(EventType eventType)
|
|
{
|
|
return (!isAudioVideoEvent(eventType) && eventType != EventType::HitBuilding);
|
|
}
|
|
|
|
}
|