Files
qt5-legatus-legacy/Lts/Plugins/SituationMapPlugin/Gui/SituationMap/AdapterDds/buildings_to_map.h
T
2026-08-13 18:33:10 +02:00

89 lines
3.2 KiB
C++
Executable File

/**
* @RDE_HEADER@
* Interface
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "sim_to_situation_map_tmpl.h"
#include <Plugins/InfrastructureManagement/ism_data_plugin_interface.h>
#include <Buildings/bld_dtc.h> // damage
#include <MapObjects/building_outline.h>
namespace Buildings
{
class ForeignInfoGuiInterface;
}
namespace SituationMap
{
class Building2SituationMap final : public Sim2SituationMap<InfrastructureManagement::MainStructureElement, SituationMap::BuildingOutline>
, protected DdsFilterHandling<SituationMap::BuildingOutline>
{
Q_OBJECT
using BaseClass = SituationMap::Sim2SituationMap<InfrastructureManagement::MainStructureElement, SituationMap::BuildingOutline>;
using FilterClass = DdsFilterHandling<SituationMap::BuildingOutline>;
public:
explicit Building2SituationMap(ObjectFactory &objFac,
const QString &layername,
int drawOrder,
const char *loggerName)
: BaseClass(objFac, layername, drawOrder, loggerName)
, FilterClass(loggerName, this)
{}
bool init(PluginProvider *pluginProvider, bool enableDamageVisualization);
bool run() override;
void stop() override
{
if (m_ismDtc)
m_ismDtc->disconnect(this);
if (m_bldDtc)
m_bldDtc->disconnect(this);
}
bool isElapsed(const InfrastructureManagement::MainStructureElement &ddsData) const override;
bool mapObjectsClicked(const QVector<UniqueMapId> &uniqueMapIds) override;
bool unifiedMapObjectData(UniqueMapId uniqueMapId, UnifiedMapObjectData &umodOut) const override;
protected Q_SLOTS:
void onMainStructureElementChanged(const InfrastructureManagement::MainStructureElement &data,
DataModification modType = DataModification::eAdded);
void onMainFootprintChanged(const InfrastructureManagement::MainFootprint &data,
DataModification modType = DataModification::eAdded);
void onBuildingStateChanged(const Buildings::BuildingState &data, DataModification modType);
protected:
int32_t getSimId(const Sim2SituationMap::DDS_T &ddsData) const override;
bool updateElementImpl(const Sim2SituationMap::DDS_T &ddsData,
RefPointer<MAP_T> mapObj) override;
bool updateBldgDamage(RefPointer<MAP_T> mapObj, qint32 buildingId);
bool symbolAppearanceSettingsChangesAreRelevant(const FilterManagement::SymbolAppearanceSettings::Settings &newSas) const override;
void handleSymbolAppearanceSettings(RefPointer<MAP_T> &mapObj) override;
private:
PluginProvider *m_pluginProvider = nullptr;
std::shared_ptr<InfrastructureManagement::Interface::Dtc> m_ismDtc;
std::shared_ptr<InfrastructureManagement::ForeignResourceManagementGuiInterface> m_ismGuiIfc;
std::shared_ptr<Buildings::Interface::Dtc> m_bldDtc;
std::shared_ptr<Buildings::ForeignInfoGuiInterface> m_bldInfoIfc;
bool m_enableDamageVisualization = false;
mutable QVector<int> m_mseIdWithoutValidFootprint;
};
} // namespace