399 lines
15 KiB
Plaintext
399 lines
15 KiB
Plaintext
/**
|
|
* @file pdm_dtc_impl.h
|
|
* @brief Stub header for pdm_dtc_impl.h when BUILD_RTI=OFF
|
|
*
|
|
* This file provides stub definitions for the DtcImpl base class and related types
|
|
* that are normally generated by RTI DDS code generation.
|
|
*/
|
|
#pragma once
|
|
|
|
#include "pdm_types.h"
|
|
#include <QtCore/QString>
|
|
#include <QtCore/QVector>
|
|
#include <QtCore/QJsonObject>
|
|
#include <memory>
|
|
|
|
namespace DDSConnector
|
|
{
|
|
class DdsConnector;
|
|
}
|
|
|
|
namespace ProjectDataManagement
|
|
{
|
|
|
|
// Stub types not defined in pdm_types.h
|
|
enum class GearClass
|
|
{
|
|
None = 0,
|
|
PrimaryWeapon = 1,
|
|
SecondaryWeapon = 2,
|
|
Grenade = 3,
|
|
Mine = 4,
|
|
Other = 5
|
|
};
|
|
|
|
enum class VolatilityType
|
|
{
|
|
Unknown = 0,
|
|
Low = 1,
|
|
Medium = 2,
|
|
High = 3
|
|
};
|
|
|
|
enum class IgniterFunctionBase
|
|
{
|
|
IfbImpact = 0,
|
|
IfbProximity = 1,
|
|
IfbTime = 2,
|
|
IfbRemote = 3
|
|
};
|
|
|
|
struct CasEffect
|
|
{
|
|
int effectId = 0;
|
|
QString effectName;
|
|
};
|
|
|
|
struct SanitationProcedure
|
|
{
|
|
int procedureId = 0;
|
|
QString procedureName;
|
|
};
|
|
|
|
enum class ChargeTypeProperty : int
|
|
{
|
|
None = 0,
|
|
LRF = 1,
|
|
LTD = 2
|
|
};
|
|
|
|
// Use ChargeType from pdm_types.h, but we need a struct for DTC data
|
|
struct ChargeTypeData
|
|
{
|
|
int chargeTypeId = 0;
|
|
QString name;
|
|
QString shortName;
|
|
QString baseSuffix;
|
|
GearClass gearClass = GearClass::None;
|
|
QJsonObject properties;
|
|
};
|
|
|
|
struct IgniterType
|
|
{
|
|
int igniterTypeId = 0;
|
|
int id = 0;
|
|
QString name;
|
|
QString shortName;
|
|
QJsonObject properties;
|
|
|
|
bool operator==(const IgniterType &other) const
|
|
{
|
|
return igniterTypeId == other.igniterTypeId && id == other.id && name == other.name &&
|
|
shortName == other.shortName && properties == other.properties;
|
|
}
|
|
};
|
|
|
|
struct IgniterFunction
|
|
{
|
|
int igniterFunctionId = 0;
|
|
int id = 0;
|
|
QString name;
|
|
QString shortName;
|
|
QJsonObject properties;
|
|
};
|
|
|
|
struct LoadType
|
|
{
|
|
int loadTypeId = 0;
|
|
int id = 0;
|
|
QString name;
|
|
QString shortName;
|
|
QJsonObject properties;
|
|
|
|
bool operator==(const LoadType &other) const
|
|
{
|
|
return loadTypeId == other.loadTypeId && id == other.id && name == other.name &&
|
|
shortName == other.shortName && properties == other.properties;
|
|
}
|
|
};
|
|
|
|
struct TargetSubType
|
|
{
|
|
int targetSubTypeId = 0;
|
|
QString name;
|
|
|
|
bool operator==(const TargetSubType &other) const
|
|
{
|
|
return targetSubTypeId == other.targetSubTypeId && name == other.name;
|
|
}
|
|
};
|
|
|
|
struct ChargeTypeIgniterTypeIgniterFunction
|
|
{
|
|
int id = 0;
|
|
int chargeTypeId = 0;
|
|
int igniterTypeId = 0;
|
|
int igniterFunctionId = 0;
|
|
bool isSmoke = false;
|
|
bool isDus = false;
|
|
bool isConcrete = false;
|
|
int volatilityTypeId = 0;
|
|
IgniterFunctionBase igniterFunctionBase = IgniterFunctionBase::IfbImpact;
|
|
double impactRadius = 0.0;
|
|
double hazardDistance = 0.0;
|
|
int chargeLegacyId = 0;
|
|
QJsonObject properties;
|
|
};
|
|
|
|
struct ChargeTypeLoadType
|
|
{
|
|
int chargeTypeId = 0;
|
|
int loadTypeId = 0;
|
|
int id = 0;
|
|
QJsonObject properties;
|
|
};
|
|
|
|
struct GearType
|
|
{
|
|
int gearTypeId = 0;
|
|
QString name;
|
|
};
|
|
|
|
struct GearTypeChargeType
|
|
{
|
|
int gearTypeId = 0;
|
|
int chargeTypeId = 0;
|
|
};
|
|
|
|
enum class PdmBaseName : int
|
|
{
|
|
None = 0,
|
|
ChargeType = 1,
|
|
IgniterType = 2,
|
|
IgniterFunction = 3,
|
|
LoadType = 4,
|
|
TargetType = 5,
|
|
TargetSubType = 6,
|
|
GearType = 7,
|
|
FirePurpose = 8,
|
|
LanguageHmi = 9,
|
|
LanguageXdu = 10,
|
|
NuclearPreset = 11,
|
|
RadioGroup = 12,
|
|
VulnerabilityKind = 13,
|
|
SanitationMaterial = 14,
|
|
BiteComponent = 15,
|
|
CanComponent = 16
|
|
};
|
|
|
|
struct BuildingChargeEffect
|
|
{
|
|
int effectId = 0;
|
|
QString effectName;
|
|
};
|
|
|
|
namespace Interface
|
|
{
|
|
|
|
/**
|
|
* @brief Base class for DTC (Data Type Configuration) implementation
|
|
*
|
|
* This is a stub implementation used when BUILD_RTI=OFF.
|
|
* In production, this is generated by RTI DDS code generation.
|
|
*/
|
|
class DtcImpl : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit DtcImpl(QObject *parent = nullptr) : QObject(parent) {}
|
|
explicit DtcImpl(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector, QObject *parent = nullptr) : QObject(parent) { Q_UNUSED(ddsConnector); }
|
|
virtual ~DtcImpl() = default;
|
|
|
|
// Custom procs - pure virtual methods that must be implemented by derived classes
|
|
virtual QVector<ChargeTypeData> chargesForGearClass(GearClass gearClass) = 0;
|
|
virtual QVector<IgniterType> ignitersForChargeType(int chargeTypeId) = 0;
|
|
virtual QVector<ChargeTypeIgniterTypeIgniterFunction> igniterFunctionsForChargeTypeIgniterType(int chargeTypeId, int igniterTypeId) = 0;
|
|
virtual QVector<LoadType> loadsForChargeType(int chargeTypeId) = 0;
|
|
virtual QVector<TargetSubType> targetSubTypesForTargetType(int targetType) = 0;
|
|
|
|
virtual double expansionFactor(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual double impactRadius(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual double impactEdgeLength(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isDryFire(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual int mineClass(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool canBeThrown(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool canBeCreated(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isIed(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isReactivatable(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isSmart(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual int maxEffectShows(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isSmoke(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isVisible(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isIndirect(int chargeTypeId) = 0;
|
|
virtual int searchRadius(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool showHitline(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual int remainingTasCode(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual int secondaryRemainingTasCode(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual int segments(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isLine(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isFromMineLayer(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isMineLaying(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual QJsonObject mineLayingPattern(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual int height(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isLaserGuidable(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isUasDroppable(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isJamming(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual QVector<int> spacing(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual VolatilityType volatilityTypeId(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual int hazardDistance(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual QVector<CasEffect> casEffects(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual GearClass gearClassFromChargeTypeId(int chargeTypeId) = 0;
|
|
virtual QVector<int> gearTypeIdFromChargeTypeId(int chargeTypeId) = 0;
|
|
virtual int chargeTypeIdFromLegacyId(GearClass gearClass, int legacyId) = 0;
|
|
virtual bool isGmlrs(int chargeTypeId) = 0;
|
|
virtual bool isDm72(int chargeTypeId) = 0;
|
|
virtual bool isRocket(int chargeTypeId) = 0;
|
|
|
|
virtual ChargeTypeIgniterTypeIgniterFunction getChargeTypeIgniterTypeIgniterFunction(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual ChargeTypeLoadType getChargeTypeLoadType(int chargeTypeId, int loadTypeId) = 0;
|
|
|
|
virtual bool canRestock(int gearTypeId) = 0;
|
|
virtual bool canSetDefaults(int gearTypeId) = 0;
|
|
virtual int maxCharges(int gearTypeId) = 0;
|
|
virtual int cadence(int gearTypeId) = 0;
|
|
virtual int getAdlerWeaponSystemId(int gearTypeId) = 0;
|
|
virtual int factoryDefault(int gearTypeId, int chargeTypeId) = 0;
|
|
virtual int maxCharge(int gearTypeId, int chargeTypeId) = 0;
|
|
virtual bool isAtMine(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual bool isApMine(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual double getLethalRadius(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual double getNonLethalRadius(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual double getMaxRange(int chargeTypeId, int gearTypeId) = 0;
|
|
virtual BuildingChargeEffect getBuildingChargeEffectByChargeTypeId(int chargeTypeId) = 0;
|
|
virtual bool isVirtuallyFireable(int chargeTypeId) = 0;
|
|
virtual bool isAdlerChargeType(int chargeTypeId) = 0;
|
|
virtual int getAmountFireMarkers(int firePurposeId) = 0;
|
|
virtual bool getWithDurationFirePurpose(int firePurposeId) = 0;
|
|
|
|
// Adler names/ids
|
|
virtual int getTargetTypeIdFromAdlerTargetType(const QString &typ) = 0;
|
|
virtual int getTargetSubTypeIdFromAdlerTargetSubType(const QString &subTyp) = 0;
|
|
virtual int getChargeTypeIdFromAdlerCharges(const QString &geschosssorte) = 0;
|
|
virtual int getIgniterTypeIdFromAdlerIgniter(const QString &zuender) = 0;
|
|
virtual int getIgniterFunctionIdFromAdlerIgniterFunction(const QString &zuenderFunktion) = 0;
|
|
virtual int getLoadTypeIdFromAdlerLoad(const QString &ladung) = 0;
|
|
virtual QString adlerTargetTypeName(int targetTypeId) = 0;
|
|
virtual QString adlerTargetSubTypeName(int targetSubTypeId) = 0;
|
|
virtual QString adlerChargeTypeName(int chargeTypeId) = 0;
|
|
virtual QString adlerIgniterTypeName(int igniterTypeId) = 0;
|
|
virtual QString adlerIgniterFunctionName(int igniterFunctionId) = 0;
|
|
virtual QString adlerLoadTypeName(int loadTypeId) = 0;
|
|
|
|
// Data access methods
|
|
virtual ChargeTypeData chargeType(int chargeTypeId) = 0;
|
|
virtual IgniterType igniterType(int igniterTypeId) = 0;
|
|
virtual IgniterFunction igniterFunction(int igniterFunctionId) = 0;
|
|
virtual LoadType loadType(int loadTypeId) = 0;
|
|
virtual GearType gearType(int gearTypeId) = 0;
|
|
virtual int targetType(int targetTypeId) = 0;
|
|
virtual TargetSubType targetSubType(int targetSubTypeId) = 0;
|
|
|
|
// Collection getters
|
|
virtual QMap<int, ChargeTypeData> chargeTypes() = 0;
|
|
virtual QVector<IgniterType> igniterTypes() = 0;
|
|
virtual QVector<IgniterFunction> igniterFunctions() = 0;
|
|
virtual QVector<LoadType> loadTypes() = 0;
|
|
virtual QVector<GearType> gearTypes() = 0;
|
|
virtual QVector<int> targetTypes() = 0;
|
|
virtual QVector<TargetSubType> targetSubTypes() = 0;
|
|
virtual QVector<ChargeTypeIgniterTypeIgniterFunction> chargeTypeIgniterTypeIgniterFunctions() = 0;
|
|
virtual QVector<ChargeTypeLoadType> chargeTypeLoadTypes() = 0;
|
|
virtual QVector<GearTypeChargeType> gearTypeChargeTypes() = 0;
|
|
virtual QVector<BuildingChargeEffect> buildingChargeEffects() = 0;
|
|
|
|
// isEnabled checks
|
|
virtual bool isChargeTypeEnabled() = 0;
|
|
virtual bool isIgniterTypeEnabled() = 0;
|
|
virtual bool isIgniterFunctionEnabled() = 0;
|
|
virtual bool isLoadTypeEnabled() = 0;
|
|
virtual bool isGearTypeEnabled() = 0;
|
|
virtual bool isTargetTypeEnabled() = 0;
|
|
virtual bool isTargetSubTypeEnabled() = 0;
|
|
virtual bool isChargeTypeIgniterTypeIgniterFunctionEnabled() = 0;
|
|
virtual bool isChargeTypeLoadTypeEnabled() = 0;
|
|
virtual bool isGearTypeChargeTypeEnabled() = 0;
|
|
virtual bool isBuildingChargeEffectEnabled() = 0;
|
|
|
|
// enable* methods
|
|
virtual void enableIgniterType(bool enable) = 0;
|
|
virtual void enableChargeTypeIgniterTypeIgniterFunction(bool enable) = 0;
|
|
virtual void enableIgniterFunction(bool enable) = 0;
|
|
virtual void enableLoadType(bool enable) = 0;
|
|
virtual void enableChargeTypeLoadType(bool enable) = 0;
|
|
virtual void enableTargetType(bool enable) = 0;
|
|
virtual void enableTargetSubType(bool enable) = 0;
|
|
virtual void enableChargeType(bool enable) = 0;
|
|
virtual void enableGearType(bool enable) = 0;
|
|
virtual void enableGearTypeChargeType(bool enable) = 0;
|
|
virtual void enableTargetTypeTargetSubType(bool enable) = 0;
|
|
virtual void enableRadioGroup(bool enable) = 0;
|
|
virtual void enableVulnerabilityKind(bool enable) = 0;
|
|
virtual void enableBuildingChargeEffect(bool enable) = 0;
|
|
|
|
// waitForHistoricalData methods
|
|
virtual void waitForHistoricalDataChargeType(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataIgniterType(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataIgniterFunction(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataLoadType(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataGearType(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataTargetType(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataTargetSubType(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataChargeTypeIgniterTypeIgniterFunction(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataChargeTypeLoadType(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataGearTypeChargeType(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataBuildingChargeEffect(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataTargetTypeTargetSubType(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataRadioGroup(int timeout_ms) = 0;
|
|
virtual void waitForHistoricalDataVulnerabilityKind(int timeout_ms) = 0;
|
|
|
|
// Helper methods
|
|
virtual QJsonObject propertiesToJson(const std::string &properties) = 0;
|
|
|
|
virtual QString trBiteComponentTextName(int biteComponentId) = 0;
|
|
virtual QString trCanComponentStringName(int canComponentId) = 0;
|
|
virtual QString trChargeTypeShortName(int chargeTypeId, bool omitBaseSuffix = false) = 0;
|
|
virtual QString trChargeTypeName(int chargeTypeId, bool omitBaseSuffix = false) = 0;
|
|
virtual QString trFirePurposeName(int firePurposeId) = 0;
|
|
virtual QString trGearTypeName(int gearTypeId) = 0;
|
|
virtual QString trIgniterTypeName(int igniterTypeId) = 0;
|
|
virtual QString trIgniterTypeShortName(int igniterTypeId) = 0;
|
|
virtual QString trIgniterFunctionName(int igniterFunctionId) = 0;
|
|
virtual QString trIgniterFunctionShortName(int igniterFunctionId) = 0;
|
|
virtual QString trLoadTypeName(int loadTypeId) = 0;
|
|
virtual QString trLoadTypeShortName(int loadTypeId) = 0;
|
|
virtual QString trTargetTypeName(int targetTypeId) = 0;
|
|
virtual QString trTargetSubTypeName(int targetSubTypeId) = 0;
|
|
virtual QString trLanguageHmiName(int languageHmiId) = 0;
|
|
virtual QString trLanguageXduName(int languageXduId) = 0;
|
|
virtual QString trNuclearPresetName(int nucularPresetId) = 0;
|
|
virtual QString trRadioGroupName(int radioGroupId) = 0;
|
|
virtual QString trVulnerabilityKindName(int vulnerabilityKindId, VulnerabilityClass vulnerabilityClassId) = 0;
|
|
virtual QString trSanitationMaterialName(int sanitationMaterialId) = 0;
|
|
virtual QString trSanitationProcedureName(int sanitationProcedureId) = 0;
|
|
virtual QString trSanitationInjuryKindName(int sanitationInjuryKindId) = 0;
|
|
virtual QString trSanitationInjuryPlace1Name(int sanitationInjuryPlace1Id) = 0;
|
|
virtual QString trSanitationInjuryPlace2Name(int sanitationInjuryPlace2Id) = 0;
|
|
|
|
virtual QStringList chargeNames(std::vector<int> &chargeIds) = 0;
|
|
virtual int getAvailableChargeTypeId(int chargeTypeId) = 0;
|
|
virtual ChargeTypeProperty getChargeTypeSpecialProperty(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0;
|
|
virtual QVector<SanitationProcedure> getSanitationProcedures(qint64 procedures) = 0;
|
|
virtual QStringList sanitationProceduresList(qint64 procedures) = 0;
|
|
|
|
protected:
|
|
DtcImpl() = default;
|
|
};
|
|
|
|
} // namespace Interface
|
|
} // namespace ProjectDataManagement |