#pragma once #include #include "aes_fts.h" #include "logger.h" #include namespace AreaEffectSimulation { class ObjectChargeEffect; class MainHandler; class HandlerTrajectory; class TrajectoryData; class HandlerChargeEffect : public QObject , public Interface::Fts::ChargeEffectModifyRequestHandler { Q_OBJECT public: explicit HandlerChargeEffect(MainHandler *mainhandler, QObject *parent = nullptr); ~HandlerChargeEffect(); bool init(); void onChargeEffectModifyRequest(const rti::core::SampleIdentity &cookie, const ChargeEffectModifyRequest &request); Core::FunctionReplyObject createChargeEffect(const ChargeEffectModifyRequest &request); static TrajectoryData trajectoryData(int chargeEffectId, const TrajectoryTimeAware &trajectoryTimeAware, int trajObjId = -1); const ObjectChargeEffect *getChargeEffectById(int chargeEffectId); Q_SIGNALS: void chargeEffectActive(const int id); void chargeEffectExpired(const int id); private Q_SLOTS: void onChargeEffectFinished(qint32 chargeEffectId); void onChargeEffectStateChanged(const int id, AesEffectState newState); private: // methods Core::FunctionReplyObject updateChargeEffect(const ChargeEffectModifyRequest &request); private: // attributes MainHandler *m_mainHandler {nullptr}; QHash m_chargeEffects; QHash m_trajObjIds; // HandlerTrajectory *m_trajectoryHandler{nullptr}; LOGGER_T m_logger; }; // class HandlerChargeEffect } // namespace AreaEffectSimulation