Files
qt5-legatus-legacy/Lts/Services/AreaEffectSimulation/object_mine_area_null.h
T
2026-08-13 18:33:10 +02:00

64 lines
2.0 KiB
C++
Executable File

/**
* Object for the null mine area (where the unassigned DUS mines belong to)
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <LtsUtilsGuiDds/request_helper.h>
#include "aes_db.h"
#include "object_base.h"
namespace AreaEffectSimulation
{
class ObjectMineAreaNull final : public ObjectBaseTmpl<Database::AesMineArea>
, 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<Database::AesMineAreaTriggeredMines> &mines);
bool resetMine(int mineId);
bool resetMines();
Database::AesMineAreaTriggeredMines takeMine(int mineId);
QList<Database::AesMineAreaTriggeredMines> 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<Core::GeoPosition> 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<int, Database::AesMineAreaTriggeredMines> m_triggeredMines; // mineId
AesItemView m_aiv2;
TriggeredImpacts m_tis;
DusMineState m_dms;
int64_t m_setId;
};
} // namespace