/** * @RDE_HEADER@ * Interface of NineLiner * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "abstract_multi_point_map_object.h" #include //---------------------------------------------------------------------------- namespace SituationMap { /** * @brief The NineLiner class supports NineLiners of different agents. * The method setPositions() should never be called. */ struct NineLiner : public virtual AbstractMultiPointMapObject, public virtual AbstractEffectSimulation { class NineLinerData { public: Point3D initialPoint; Point3D targetPosition; int friendliesBearing = -1; // friendlies is optional double friendliesDistance = -1; // friendlies is optional int fah = 0; //finalAttackHeading int fahLow = 0; //finalAttackHeading-SectorLow int fahHigh = 0; //finalAttackHeading-SectorHigh /** * @brief operator== Compare two objects * @param other to be compared with * @return true if identical, otherwise false. */ bool operator==(const NineLinerData &other) const { return ((this->initialPoint == other.initialPoint) && (this->targetPosition == other.targetPosition) && (this->friendliesBearing == other.friendliesBearing) && (this->friendliesDistance == other.friendliesDistance) && (this->fah == other.fah) && (this->fahLow == other.fahLow) && (this->fahHigh == other.fahHigh) ); } /** * @brief operator!= Compare two objects * @param other to be compared with * @return true if NOT identical, otherwise false. */ bool operator!=(const NineLinerData &other) const { return !(*this == other); } QString toString() const { QString str; std::ostringstream stream; stream << " initialPoint = " << initialPoint << " targetPosition = " << targetPosition; str.append(QLatin1String(stream.str().c_str())); str.append(QStringLiteral(", friendliesBearing=%1").arg(friendliesBearing)); str.append(QStringLiteral(", friendliesDistance=%1").arg(friendliesDistance)); str.append(QStringLiteral(", fah=%1").arg(fah)); str.append(QStringLiteral(", fahLow=%1").arg(fahLow)); str.append(QStringLiteral(", fahHigh=%1").arg(fahHigh)); return str; } }; // class NineLinerData /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Don't use "= default" because of bug in VS2015 JT 2016/11/7 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ NineLiner() : AbstractMultiPointMapObject(), AbstractEffectSimulation() {;} ///< Contructor virtual ~NineLiner() = default; ///< Destructor /*! \name Specific data*/ //@{ virtual void setNineLinerData(const NineLinerData &data) = 0; // virtual PositionCont impacts() const = 0; //@} // void setPositions(const PositionCont& posCont) //SHOULD NEVER BE CALLED }; } // namespace SituationMap