/** * Convert internal gear and charge id to and from tas ids * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-04-14 */ #pragma once #include #include #include #include "aes.hpp" #include "logger.h" namespace TrainingAreaBase { class MainHandler; class PdmHandler { public: explicit PdmHandler(MainHandler *mainHandler); bool init(); std::shared_ptr dtc() const { return m_dtcPdm; } // for customfunction use only ProjectDataManagement::ChargeType chargeTypeFromId(int chargeTypeId); // ProjectDataManagement::ChargeType chargeTypeFromChargeTasCode(int chargeTasCode, bool directCharge); ProjectDataManagement::GearClass gearClassFromChargeTypeId(int chargeTypeId); ProjectDataManagement::RadioGroup radioGroup(int radioGroupId); ProjectDataManagement::BuildingChargeEffect buildingChargeEffect(int chargeTypeId); int vulnerabilityKindId(int tasVulnerabilityKindId, int equipmentNumber); QMap radioGroups (); int chargeTypeIdFromGearAndChargeTasCode(int gearTasCode, int chargeTasCode); int gearTypeIdFromTasGearTasCode(int gearTasCode); int legacyChargeTypeIgniterType(int chargeTypeId, int igniterTypeId, int igniterFunctionId); double impactRadius(const AreaEffectSimulation::ChargeStruct &chargeStruct) const; double impactEdgeLength(const AreaEffectSimulation::ChargeStruct &chargeStruct) const; bool isSmartChargeType(const AreaEffectSimulation::ChargeStruct &chargeStruct) const; bool isIedChargeType(const AreaEffectSimulation::ChargeStruct &chargeStruct) const; bool isReactivatableChargeType(const AreaEffectSimulation::ChargeStruct &chargeStruct) const; bool isIndirect(int chargeTypeId) const; int hazardDistance(const AreaEffectSimulation::ChargeStruct &chargeStruct) const; bool isLaserGuidable(const AreaEffectSimulation::ChargeStruct &chargeStruct) const; bool isUasDroppable(const AreaEffectSimulation::ChargeStruct &chargeStruct) const; public: bool initializePdm(); private: bool m_initialized; std::shared_ptr m_dtcPdm; QMap m_chargeTypes; QMap m_gearTypes; QMap m_gearTypeChargeTypes; QMap m_radioGroups; QMap m_buildingChargeEffects; // tasVulnerabilityKindId, ProjectDataManagement::VulnerabilityKind QHash m_vulnerabilityKinds; QHash m_vulnerabilityKindFallback; MainHandler *m_mainHandler; LOGGER_T m_logger; }; }