/** * Handler for player data * $Id$ * $HeadURL$ * $Author$ * Created by gr, SLSE, 2017-02-20 */ #pragma once #include #include "dds_handler.h" #include "logger.h" #include #include #include #include #include // AES-Handling for participants outside buildings namespace AlarmManagement { class HandlerParticipant : public QObject { Q_OBJECT public: struct ParticipantHierarchy { int participantId = 0; int superiorId = 0; std::vector inferiorIds; ParticipantHierarchy() = default; explicit ParticipantHierarchy(const ParticipantManagement::Participant &p) : participantId(p.id()) , superiorId(p.superiorId()) , inferiorIds(p.inferiorIds()) {} }; public: explicit HandlerParticipant(const std::shared_ptr &ddsHandler); ~HandlerParticipant(); /** * Initialize the handler to manage information from participant management */ bool init(); QVector getRecursiveInferiorIds(const int participantId) const; /** * Get equipment number for the given participant * @param participantId participant id to get the equipment number for * @return equipment number or 0 in case of failure */ int participantId2EquipNo(const int participantId) const; /** * Get vulnerability for the given participant * @param participantId participant id to get the equipment number for * @return vulnerability */ int participantId2Vulnerability(const int participantId) const; private Q_SLOTS: /** * Handle the signals from 'ParticipantManagement' */ void onParticipantChanged(const ParticipantManagement::Participant &data, DataModification modType); void onDynamicParticipantChanged(const ParticipantManagement::DynamicParticipantData &data, DataModification modType); private: // methoden QVector getInferiorParts(int participantId) const; private: // attributes QMap m_partId2EquipNoMap; ///< Reference map participant (player) to equipment number (participantId, equipmentNo) QMap m_partId2VulnerabilityMap; ///< Reference map participant (player) to Vulnerability QHash m_participantHierarchy; std::shared_ptr m_ddsHandler; ///< Pointer to VOM DDS handler NGL::INGLLogger &m_logger; ///< Interface to the Logging-Facility }; } // namespace AlarmManagement