/** * @RDE_HEADER@ * Interface * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "sim_to_situation_map_tmpl.h" #include #include // damage #include namespace Buildings { class ForeignInfoGuiInterface; } namespace SituationMap { class Building2SituationMap final : public Sim2SituationMap , protected DdsFilterHandling { Q_OBJECT using BaseClass = SituationMap::Sim2SituationMap; using FilterClass = DdsFilterHandling; 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 &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 mapObj) override; bool updateBldgDamage(RefPointer mapObj, qint32 buildingId); bool symbolAppearanceSettingsChangesAreRelevant(const FilterManagement::SymbolAppearanceSettings::Settings &newSas) const override; void handleSymbolAppearanceSettings(RefPointer &mapObj) override; private: PluginProvider *m_pluginProvider = nullptr; std::shared_ptr m_ismDtc; std::shared_ptr m_ismGuiIfc; std::shared_ptr m_bldDtc; std::shared_ptr m_bldInfoIfc; bool m_enableDamageVisualization = false; mutable QVector m_mseIdWithoutValidFootprint; }; } // namespace