/** * Object for the null mine area (where the unassigned DUS mines belong to) * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include #include "aes_db.h" #include "object_base.h" namespace AreaEffectSimulation { class ObjectMineAreaNull final : public ObjectBaseTmpl , protected TrainingAreaBase::Interface::Ftc::SendResetAllDusMinesReplyHandler { Q_OBJECT public: explicit ObjectMineAreaNull(MainHandler *mainHandler, QObject *parent = nullptr); ~ObjectMineAreaNull(); bool triggerMine(int mineId, bool trigger = true, int chargeTypeId = 0, const QPointF &position = QPointF(), bool publish = true); bool triggerMine(Database::AesMineAreaTriggeredMines &mine); void triggerMines(const QList &mines); bool resetMine(int mineId); bool resetMines(); Database::AesMineAreaTriggeredMines takeMine(int mineId); QList mines() const {return m_triggeredMines.values();} bool isDusMineArea() const; bool isConcreteMine() const; bool isVirtualMine() const; bool isVirtualSingleMine() const; void onSendResetAllDusMinesReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); } std::vector form() const override { return {}; } QPolygonF generateForm() override; AesType aesType() const override { return AesType_def::AtMineArea; } bool isCentral() const override { return m_data.isCentral; } int lastConcreteMineNo(); public Q_SLOTS: void onPublishData() override final; protected: void removeTopics(); private: void publishAiv(); bool publishTriggeredImpacts(); bool publishDusMineStatus(); LtsUtils::RequestHelper *m_requestHelper; QMap m_triggeredMines; // mineId AesItemView m_aiv2; TriggeredImpacts m_tis; DusMineState m_dms; int64_t m_setId; }; } // namespace