#pragma once #include "esc_order_model.h" #include #include #include #include #include #include #include namespace Ui { class FiringExplosion; } namespace SituationMap { class ForeignGuiInterface; } namespace EffectShowClient { class SafetyConfirmationWidget; class FiringExplosion : public LtsWidgets::LtsDialog , protected EffectShowClient::Interface::Ftc::OrderModifyReplyHandler , protected EffectShowClient::Interface::Ftc::ManuallyExplosionReplyHandler { Q_OBJECT public: explicit FiringExplosion(QWidget *parent = nullptr); ~FiringExplosion(); bool init(const std::shared_ptr &dtc, const std::shared_ptr &ftc, LtsSession::LtsSession *session, bool freeForm = false); private: NGL::INGLLogger &m_logger; void retranslate() override; void onOrderModifyReply(const Core::FunctionReplyObject &replyObject) override { m_requestHelper->requestReply(replyObject); } void onManuallyExplosionReply(const Core::FunctionReplyObject &replyObject) override { m_requestHelper->requestReply(replyObject); } private Q_SLOTS: void onFiringExplosionEntityChanged(const EffectShowClient::FiringExplosionEntity &data, DataModification modType); void onOperatingConditionEntityChanged(const EffectShowClient::OperatingConditionEntity &data, DataModification modType); void onApply(); void onFire(); void onAbort(); void onInterrupt(); void onCarriedOut(); void onSafetyConfirmationDisplay(); void onFiringClearanceCountDown(); private: enum class EffectShowStatus_e : unsigned int { Apply, Fire, Abort, Interrupt, CarriedOut }; bool statusChangedForManuallyEffectShow(EffectShowStatus_e status); bool statusChangedForOrderedEffectShow(EffectShowStatus_e status); private: QTimer *m_timer; std::shared_ptr m_dtc; std::shared_ptr m_ftc; LtsSession::LtsSession *m_session; SafetyConfirmationWidget *m_safetyConfirmationWidget; Ui::FiringExplosion *m_ui; LtsUtils::RequestHelper *m_requestHelper; EffectShowClient::FiringExplosionEntity m_oldEntity; EffectShowClient::SafetyConfirmation_e m_safetyConfirmation; int m_idOrder; int m_idEffectShow; int m_shotsAvail; bool m_isClearance; qint64 m_firingClearanceCountDown; qint64 m_endOfFiringClearanceCountDown; }; }