/** * Handler for player data * $Id$ * $HeadURL$ * $Author$ * Created by gr, SLSE, 2017-02-20 */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace LtsUtils { class QPoint3D; } // AES-Handling for Explosions namespace CesExplosions { //------------------------------------------------------------------------------ // class HandlerVulcano //------------------------------------------------------------------------------ class HandlerVulcano : public QObject , protected AreaEffectSimulation::Interface::Ftc::TargetPositionsModifyReplyHandler { Q_OBJECT public: typedef QHash> BitfieldStates; explicit HandlerVulcano(const std::shared_ptr &ddsHandler, QObject *parent = nullptr); ~HandlerVulcano(); /** * Initialize the handler to manage information from player management */ bool init(); protected: void onTargetPositionsModifyReply(const Core::FunctionReplyObject &replyObject) override final; private slots: void onExplosionClusterChanged(const AreaEffectSimulation::ExplosionCluster &data, DataModification modType); void onDynamicParticipantChanged(const ParticipantManagement::DynamicParticipantData &data, DataModification modType); void onFiringTimeTimeout(); void onTrajectoryTimeAwareTimeout(); private: // functions // firstTrajectoryTimeAwareFromAesId and getTrajectoryPosFromTime were initially created as AesDtcCustomFunction. // But since they are very specific, they were moved to this place: AreaEffectSimulation::TrajectoryTimeAware firstTrajectoryTimeAwareFromAesId(int aesId); Core::GeoPosition getTrajectoryPosFromTime(int aesId, long long timeParam); private: // attributes std::shared_ptr m_ddsHandler; ///< Pointer to VOM DDS handler // AES-Values QHash m_explosionCluster; // key = AesId QHash m_aesTimers; // key = aesId value= VulcanoTimer CentralEffectSimulation::LOGGER_T &m_logger; ///< Interface to the Logging-Facility }; } // namespace CesExplosions