#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; }; } // namespace EffectShowClient