Files
berrux-dev 881d44f4dd Migrates residual Lts sources to generated rtiddsgen API
Adds NmeaManagement tests, fixes codegen includes and Qt6 SerialPort CMake target.
2026-09-23 12:05:37 +02:00

169 lines
3.1 KiB
C++
Executable File

#pragma once
#include <cstdint>
#include <exception>
#include <QtCore/QJsonObject>
#include <QtCore/QString>
#include <TargetManagement/tgt_dtc.h>
namespace TargetManagement
{
class JsonException final : public std::exception
{
public:
JsonException(const QJsonObject &obj, const QString &key);
const char *what() const noexcept override { return m_what.data(); }
private:
QJsonObject m_obj;
QString m_key;
QByteArray m_what;
};
template <typename T>
struct Constraints;
struct Target
{
virtual ~Target() = default;
virtual QJsonObject toJson() const = 0;
virtual QString type() const = 0;
};
struct GeoPosition2D
{
GeoPosition2D() = default;
explicit GeoPosition2D(const Core::GeoPosition2D pos)
: lat(pos.lat()), lon(pos.lon()) {}
double lat = 0;
double lon = 0;
static GeoPosition2D fromJson(const QJsonObject &obj);
QJsonObject toJson() const;
};
template <typename T>
struct TargetBaseTmpl : Target
{
QString type() const override final { return Constraints<T>::type(); }
};
struct ShootbackTargetData final : public TargetBaseTmpl<ShootbackTargetData>
{
int32_t id{-1};
int32_t targetDataId{-1};
QString name;
int32_t targetParticipantEquipmentNumber{-1};
bool activateLaserDesignation{false};
bool permanentInstalledTarget{false};
bool activateLights{false};
int32_t hitsToKill{-1};
bool activatePopupAutomatic{false};
QJsonObject toJson() const override;
static ShootbackTargetData fromJson(const QJsonObject &obj);
};
template <> struct Constraints<ShootbackTargetData>
{
static QString type() { return QStringLiteral("ShootbackTargetData"); }
};
struct ShootbackAreaData final : public TargetBaseTmpl<ShootbackAreaData>
{
int32_t id{-1};
QString name;
GeoPosition2D position;
double width{.0};
double height{.0};
QJsonObject toJson() const override;
static ShootbackAreaData fromJson(const QJsonObject &obj);
};
template <> struct Constraints<ShootbackAreaData>
{
static QString type() { return QStringLiteral("ShootbackAreaData"); }
};
struct ShootbackConfigurationData final : public TargetBaseTmpl<ShootbackConfigurationData>
{
int interval1{-1};
bool flash1{false};
TargetManagement::Effect effect1{TargetManagement::Effect::NearMiss};
int interval2{-1};
bool flash2{false};
TargetManagement::Effect effect2{TargetManagement::Effect::NearMiss};
QJsonObject toJson() const override;
static ShootbackConfigurationData fromJson(const QJsonObject &obj);
};
template <> struct Constraints<ShootbackConfigurationData>
{
static QString type() { return QStringLiteral("ShootbackConfigurationData"); }
};
struct TargetAreaAssignmentData final : public TargetBaseTmpl<TargetAreaAssignmentData>
{
int32_t id{-1};
QString name;
int areaId;
int targetParticipantId;
ShootbackConfigurationData configuration;
bool isActive{false};
QJsonObject toJson() const override;
static TargetAreaAssignmentData fromJson(const QJsonObject &obj);
};
template <> struct Constraints<TargetAreaAssignmentData>
{
static QString type() { return QStringLiteral("TargetAreaAssignmentData"); }
};
}