/** * 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 namespace LtsUtils { class QPoint3D; } // AES-Handling for buildings namespace CesBuildings { class HandlerContamination : public QObject , protected Buildings::Interface::Ftc::SetBuildingContaminationStateReplyHandler { Q_OBJECT public: explicit HandlerContamination(const std::shared_ptr &ddsHandler, QObject *parent = nullptr); ~HandlerContamination(); bool init(); protected: void onSetBuildingContaminationStateReply(const Core::FunctionReplyObject &replyObject) override final; private slots: void onAesItemViewChanged(const AreaEffectSimulation::AesItemView &data, DataModification modType); void onBuildingStateChanged(const Buildings::BuildingState &data, DataModification modType); void onBCContaminationChanged(const AreaEffectSimulation::BCContamination &data, DataModification modType); private: QVector getEffectedFloors(const int buildingId, const int chargeHeight, const int depression); void setBuildingContaminationStateRequest(int buildingId, int aesId, ProjectDataManagement::VulnerabilityState vulnerabilityState, QVector rooms); bool isInsideInnerCircle(int buildingId, int aesId); bool isInsideRange1(int buildingId, int aesId); bool isInsideBCContamination(int buildingId, int aesId); void calculateBuilding(int buildingId, const AreaEffectSimulation::AesItemView &data, double chargeHeight, double chargeDepression); private: QHash m_aesBCContaminations; // key = aesItemId std::shared_ptr m_ddsHandler; ///< Pointer to VOM DDS handler std::shared_ptr m_handlerBuildingData; QMap m_contaminationState; // Key = BuildingId CentralEffectSimulation::LOGGER_T m_logger; }; } // namespace CesBuildings