/** * @RDE_HEADER@ * Interface of NuclearAgent * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "abstract_multi_point_map_object.h" #include //---------------------------------------------------------------------------- namespace SituationMap { /** * @brief The ChemicalAgent class supports different agent types. */ class NuclearAgent : public virtual AbstractMultiPointMapObject, public virtual AbstractEffectSimulation { public: /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Don't use "= default" because of bug in VS2015 JT 2016/11/7 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ NuclearAgent() : AbstractMultiPointMapObject(), AbstractEffectSimulation() {;} ///< Contructor virtual ~NuclearAgent() = default; ///< Destructor /*! \name Subsidiary polyline/polygons */ //@{ /** * @brief Get subsidiary line with key. * @param key to be retrieved. * @return subsidiary line at index */ virtual PositionCont subsidiaryLine(int key) const = 0; /** * @brief Set subsidiary line with key. * @param key to be set. * @param positions subsidiary line to be set. */ struct OptionalData { // ctor OptionalData() {} // member bool closed{false}; QSharedPointer lineStyle; // default is 'empty', do not honor QSharedPointer fillStyle; // default is 'empty', do not honor }; // virtual void setSubsidiaryLine(int key, const PositionCont &positions, bool clo = false) = 0; virtual void setSubsidiaryLine(int key, const PositionCont &positions, const OptionalData &optData = OptionalData()) = 0; /** * @brief Get a list of keys in use. * @return List of keys in use. */ virtual QList subsidiaryKeysInUse() = 0; /** * @brief Remove one subsidiary line. * @param key to be removed. */ virtual void removeSubsidiaryLine(int key) = 0; /** * @brief Remove all subsidiaryPositions. */ virtual void removeSubsidiaryLines() = 0; //@} /*! \name Impact*/ //@{ virtual Point3D impactOrigin() const = 0; virtual void setImpactOrigin(const Point3D &impactOrigin) = 0; //@} /*! \name Single Detonation */ //@{ virtual void setDetonation(const Point3D &origin, double radius) = 0; virtual bool hasDetonation() const = 0; virtual void resetDetonation() = 0; //@} }; } // namespace SituationMap