/** * @RDE_HEADER@ * Interface * $Id$ * $HeadURL$ * $Author$ */ #pragma once // Own #include "unified_map_object_data.h" #include "plugin_provider.h" #include "map_object_type.h" #include "resource_manager_mode.h" #include #include #include // Plugins #include // Qt #include #include namespace SituationMap { // forward: class AbstractMapObject; class AirSupportImpact2SituationMap; //class AlarmToMap; class Building2SituationMap; class BuildingHitlineInfo2SituationMap; class BuildingOutline; class GeoImage; class BuildingContamination; class BuildingOwnership; class GuezIed2SituationMap; class GuezNasat9Liner2SituationMap; class HitlineInfo2SituationMap; class Map; class TrainingAreaToSituationMap; class SpecialAreaToSituationMap; class MountingPointToMap; class SoundAreaToMap; class MSEPointToMap; class MSEBridgeToMap; class MovementTrackManager; class Participant; class Participant2SituationMap; class PdmHandler; class Sim2SituationMapBase; class ShootbackAreaToSituationMap; class Polygon; class EmergencyCallToMap; class ChargeEffectToMap; class SingleFire; //------------------------------------------------------------------------------ class AdapterDds : public QObject { Q_OBJECT public: /*! \name Construction, Destruction */ //@{ explicit AdapterDds(QObject *parent = nullptr); virtual ~AdapterDds(); //@} /*! \name Initialization */ //@{ bool init(Map *map, PluginProvider *pluginProvider, QPointer &movementTrackMgr, bool resourceMode); bool initRenderer3D_AesExtrusion(); bool initRenderer3D_AesCentral_Booby(const QString &layernameAesCentral, const QVector &aesTypesForReRunIfPartyColorChanges); // For boobyTraps bool assignUniqueValueRendererAesCentral(const QString &layername); // For Areas (AreaEffect) bool assignUniqueValueRendererAesCentral3DExtrusion(const QString &layername); bool run(); bool isRunning() const; bool stop(); void clearObjects(); //@} /*! \name ResourceManagerMode (PlanView|ComponentMonitor) ... */ //@{ ResourceManagerMode resourceManagerMode() const; bool setResourceManagerMode(ResourceManagerMode rmm); //@} /*! \name EmergencyCalls ... */ //@{ bool showExpiredEmergencyCalls(bool bShowExpired); //@} /*! \name uniqueMapId... */ //@{ bool uniqueMapId2SimId(UniqueMapId uniqueMapIdIn, int32_t &simIdOut); // unifiedMapObjectData bool unifiedMapObjectData(UniqueMapId uniqueMapIdIn, UnifiedMapObjectData &umodOut) const; //@} /*! \name simId... */ //@{ // Participant: UniqueMapId simId2UniqueMapIdParticipant(int32_t simId) const; RefPointer simId2Participant(int32_t simId); QPointer movementTrackManager() const { return m_movementTrackManager; } // Aes UniqueMapId simId2UniqueMapIdAes(int32_t simId) const; RefPointer simId2Aes(int32_t simId); // Building UniqueMapId simId2UniqueMapIdBuilding(int32_t simId) const; RefPointer simId2Building(int32_t simId); // Bridge UniqueMapId simId2UniqueMapIdBridge(int32_t simId) const; RefPointer simId2Bridge(int32_t simId); // MountingPoint UniqueMapId simId2UniqueMapIdMountingPoint(int32_t simId) const; RefPointer simId2MountingPoint(int32_t simId); // GuezIEDs UniqueMapId simId2UniqueMapIdGuezIed(int32_t simId) const; RefPointer simId2GuezIed(int32_t simId); // Charge Effect UniqueMapId simId2UniqueMapIdChargeEffect(int32_t simId) const; RefPointer simId2ChargeEffect(int32_t simId); // TrainingAreas UniqueMapId simId2UniqueMapIdTrainingArea(int32_t simId) const; RefPointer simId2TrainingArea(int32_t simId); // SpecialAreas UniqueMapId simId2UniqueMapIdSpecialArea(int32_t simId) const; RefPointer simId2SpecialArea(int32_t simId); // ShootbackAreas UniqueMapId simId2UniqueMapIdShootbackArea(int32_t simId) const; RefPointer simId2ShootbackArea(int32_t simId); // more general approach: UniqueMapId simId2UniqueMapId(MapObjectType mot, int32_t simId) const; QVector simIds2UniqueMapIds(MapObjectType mot, QVector simIds) const; RefPointer simId2MapObject(MapObjectType mot, int32_t simId); //@} /*! \name Object Selection */ //@{ Sim2SituationMapBase *situationMapBase(MapObjectType mot) const; bool setMapObjectSelected(MapObjectType mot, const QVector &entityIds, bool selection = true); bool clearMapObjectSelection(MapObjectType mot = MapObjectType::MOT_Undefined); //@} /*! \name BuildingOwnership */ //@{ bool isBuildingOwnershipSupported() const; bool isBuildingOwnershipVisible() const; bool setBuildingOwnershipVisible(bool visible); //@} /*! \name BuildingContamination */ //@{ bool isBuildingContaminationSupported() const; bool isBuildingContaminationVisible() const; bool setBuildingContaminationVisible(bool visible); //@} /*! \name Participants */ //@{ bool enableFireEventFlashing(bool enable); bool isFireEventFlashingEnabled() const; //@} /*! \name Nmea own Position!*/ bool setOwnPositionVisible(bool enable); bool isOwnPositionVisible() const; Q_SIGNALS: void mapObjectChanged(UniqueMapId uniqueMapId); // to refresh MapObjectSelectionWidget for example void mapObjectRemoved(UniqueMapId uniqueMapId); // to refresh MapObjectSelectionWidget for example void participantPositionChanged(const int32_t participantId, const Point3D &newPos); // to update OC situation range for example void resourceManagerModeChanged(ResourceManagerMode newMode); public Q_SLOTS: void restart() { stop(); run(); } void restartIfRunning() { if (!this->isRunning()) return; restart(); } /*! \name SymbolDictionary */ //@{ void onSymbolDictionaryChanged(); //@} /*! \name Click events */ //@{ bool onMapObjectClicked(const RefPointer &mapObject); bool onMapObjectClicked(UniqueMapId uniqueMapId); bool onMapObjectsClicked(const QVector &uniqueMapIds); //@} /*! \name Changed events for ordering */ //@{ void onMapObjectChangedUpdateDrawOrder(UniqueMapId uniqueMapId); void onMapObjectRemoved(UniqueMapId uniqueMapId); //@} private slots: void onParticipantOwnPositionChanged(const Point3D &newPos, int64_t sampleTime); private: void startChangedDelayTimer(); void startOwnPositionOutdatedTimer(); QList listOfSim2Map() const; QList listOfAes2Map() const; private: bool m_isShowOwnPosition{true}; bool m_isRunning{false}; QTimer *m_changedDelayTimer{nullptr}; QTimer *m_ownPositionOutdatedTimer{nullptr}; QPointer m_map; PdmHandler *m_pdmHandler{nullptr}; PluginProvider *m_pluginProvider{nullptr}; // Participants: QSharedPointer m_particpants; QMap m_participantId2uniqueMapId; QPointer m_movementTrackManager; QSharedPointer m_hitlineInfo2SituationMap; QSharedPointer m_bldHitlineInfo2SituationMap; // AES: QMap m_aes2MapCont; QMap m_startTimeMap; // contains the effectStartTime of (aes) objects to order them by time QSharedPointer m_chargeEffects; // ALM: QSharedPointer m_emergencyCalls; // Asm QSharedPointer m_trainingAreas; // CES: CentralEffectSimulation QSharedPointer m_buildingOwnership; QSharedPointer m_buildingContamination; // ISM: QSharedPointer m_mountingPoints; QSharedPointer m_soundAreas; QSharedPointer m_buildings; QSharedPointer m_msePoints; // mses == MainStructureElement QSharedPointer m_mseBridges; // mses == MainStructureElement QSharedPointer m_specialAreas; // GIM QSharedPointer m_guezIeds; // GNA QSharedPointer m_guezNasat9Liner; // TGT QSharedPointer m_shootbackAreas; LOGGER_T m_logger; }; //------------------------------------------------------------------------------ } // namespace