/** * @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 #include #include #include 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, 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 chargesForGearClass(GearClass gearClass) = 0; virtual QVector ignitersForChargeType(int chargeTypeId) = 0; virtual QVector igniterFunctionsForChargeTypeIgniterType(int chargeTypeId, int igniterTypeId) = 0; virtual QVector loadsForChargeType(int chargeTypeId) = 0; virtual QVector 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 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 casEffects(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0; virtual GearClass gearClassFromChargeTypeId(int chargeTypeId) = 0; virtual QVector 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 chargeTypes() = 0; virtual QVector igniterTypes() = 0; virtual QVector igniterFunctions() = 0; virtual QVector loadTypes() = 0; virtual QVector gearTypes() = 0; virtual QVector targetTypes() = 0; virtual QVector targetSubTypes() = 0; virtual QVector chargeTypeIgniterTypeIgniterFunctions() = 0; virtual QVector chargeTypeLoadTypes() = 0; virtual QVector gearTypeChargeTypes() = 0; virtual QVector 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 &chargeIds) = 0; virtual int getAvailableChargeTypeId(int chargeTypeId) = 0; virtual ChargeTypeProperty getChargeTypeSpecialProperty(int chargeTypeId, int igniterTypeId, int igniterFunctionId) = 0; virtual QVector getSanitationProcedures(qint64 procedures) = 0; virtual QStringList sanitationProceduresList(qint64 procedures) = 0; protected: DtcImpl() = default; }; } // namespace Interface } // namespace ProjectDataManagement