Files
qt5-legatus-legacy/Lts/Services/CentralEffectSimulation/Plugins/Buildings/handler_contamination.h
T
2026-08-13 18:33:10 +02:00

83 lines
2.7 KiB
C++
Executable File

/**
* Handler for player data
* $Id$
* $HeadURL$
* $Author$
* Created by gr, SLSE, 2017-02-20
*/
#pragma once
#include <CentralEffectSimulation/logger.h>
#include <AreaEffectSimulation/aes_dtc.h>
#include <Buildings/bld_dtc.h>
#include <Buildings/bld_ftc.h>
#include <ProjectDataManagement/pdm_dtc.h>
#include <TrainingAreaBase/tab_ftc.h>
#include <CentralEffectSimulation/dds_handler.h>
#include <CentralEffectSimulation/handler_building_data.h>
#include <QtCore/QObject>
#include <QtCore/QMap>
#include <QtCore/QHash>
#include <QtCore/QVector>
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<CentralEffectSimulation::DdsHandler> &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<int> getEffectedFloors(const int buildingId, const int chargeHeight, const int depression);
void setBuildingContaminationStateRequest(int buildingId,
int aesId,
ProjectDataManagement::VulnerabilityState vulnerabilityState,
QVector<int> 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<int, AreaEffectSimulation::BCContamination> m_aesBCContaminations; // key = aesItemId
std::shared_ptr<CentralEffectSimulation::DdsHandler> m_ddsHandler; ///< Pointer to VOM DDS handler
std::shared_ptr<CentralEffectSimulation::HandlerBuildingData> m_handlerBuildingData;
QMap<int, Buildings::SetBuildingContaminationStateRequest> m_contaminationState; // Key = BuildingId
CentralEffectSimulation::LOGGER_T m_logger;
};
} // namespace CesBuildings