SimsWorld/MessageBasic/messagebasic.h

141 lines
3.2 KiB
C
Raw Normal View History

2025-05-25 04:43:37 +00:00
#pragma once
#include "messagebasic_global.h"
2025-06-07 08:44:25 +00:00
#include <simsbasic.h>
#include <standardglobe.h>
2025-05-25 04:43:37 +00:00
#define NAME(v) #v
2025-05-31 04:18:43 +00:00
#define DOUBLE_SAVE(u) obj[NAME(u)] = u
#define DOUOBLE_PEAK(u) u = obj[NAME(u)].toDouble()
2025-05-25 04:43:37 +00:00
2025-06-07 15:58:50 +00:00
#define STRING_SAVE(u) obj[NAME(u)] = u
#define STRING_PEAK(u) u = obj[NAME(u)].toString()
#define STRLIST_SAVE(u) obj[NAME(u)] = u.join(",")
#define STRLIST_PEAK(u) u = obj[NAME(u)].toString().split(",")
class MESSAGEBASIC_EXPORT AbstractMessage : public WsMessage {
2025-05-25 04:43:37 +00:00
private:
2025-05-31 03:57:32 +00:00
uint64_t _from_id = 0, _to_id = 0;
2025-06-07 15:58:50 +00:00
QString _topic_string;
2025-05-25 04:43:37 +00:00
public:
2025-06-07 15:58:50 +00:00
AbstractMessage(const QString& topic);
virtual ~AbstractMessage() = default;
2025-05-25 04:43:37 +00:00
void reset(uint64_t from, uint64_t to);
// ͨ<><CDA8> WsMessage <20>̳<EFBFBD>
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
QString topicString() const override;
uint64_t targetEntity() const override;
uint64_t sourceEntity() const override;
};
2025-06-07 15:58:50 +00:00
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
struct MESSAGEBASIC_EXPORT DeduceRequest : public AbstractMessage {
DeduceRequest();
};
2025-05-25 04:43:37 +00:00
/// <summary>
/// Ĭ<>ϵ<EFBFBD><CFB5>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
/// </summary>
2025-06-07 15:58:50 +00:00
struct MESSAGEBASIC_EXPORT RespondDefault : public AbstractMessage {
2025-05-25 04:43:37 +00:00
double _time_consume;
RespondDefault();
// ͨ<><CDA8> WsMessage <20>̳<EFBFBD>
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
};
/// <summary>
/// ʱ<><CAB1>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>Ϣ
/// </summary>
2025-06-07 15:58:50 +00:00
struct MESSAGEBASIC_EXPORT SyncRequest : public AbstractMessage {
2025-05-25 04:43:37 +00:00
double _time_current;
SyncRequest();
// ͨ<><CDA8> WsMessage <20>̳<EFBFBD>
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
};
2025-05-31 03:57:32 +00:00
// <20><><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ =======================================================
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD>
/// </summary>
2025-06-07 15:58:50 +00:00
struct MESSAGEBASIC_EXPORT Get3DBox : public AbstractMessage {
2025-05-31 03:57:32 +00:00
Get3DBox();
2025-05-25 04:43:37 +00:00
};
2025-05-31 03:57:32 +00:00
/// <summary>
/// <20><>̬<EFBFBD><CCAC><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD>
/// </summary>
struct Posture {
double _azimuth_deg = 0;
double _pitch_deg = 0;
double _roll_deg = 0;
};
/// <summary>
/// <20><>ά<EFBFBD><CEAC><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD>
/// </summary>
2025-06-07 15:58:50 +00:00
struct D3Data {
2025-05-31 03:57:32 +00:00
double _length_m = 0;
double _width_m = 0;
double _height_m = 0;
};
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
/// </summary>
2025-06-07 15:58:50 +00:00
struct MESSAGEBASIC_EXPORT Box3DDesc : public AbstractMessage {
2025-05-31 03:57:32 +00:00
D3Data _d3_data;
Posture _posture_d3;
LLAPos _lla_pos;
2025-05-25 04:43:37 +00:00
2025-05-31 03:57:32 +00:00
Box3DDesc();
2025-06-07 15:58:50 +00:00
// ͨ<><CDA8> WsMessage <20>̳<EFBFBD>
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
};
// ʵ<><EFBFBD><E5B9B9><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD> ==========================================
/// <summary>
/// ʵ<><EFBFBD><E5B9B9>
/// </summary>
struct MESSAGEBASIC_EXPORT EntityAllocte : public AbstractMessage {
QString _entity_templet = "";
2025-05-25 04:43:37 +00:00
2025-06-07 15:58:50 +00:00
EntityAllocte();
2025-05-25 04:43:37 +00:00
// ͨ<><CDA8> WsMessage <20>̳<EFBFBD>
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
2025-05-31 03:57:32 +00:00
};
2025-06-07 15:58:50 +00:00
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
2025-06-07 15:58:50 +00:00
struct MESSAGEBASIC_EXPORT EntityTotalGet : public AbstractMessage {
EntityTotalGet();
};
/// <summary>
/// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>б<EFBFBD>
/// </summary>
2025-06-07 15:58:50 +00:00
struct MESSAGEBASIC_EXPORT EntityTotalList : public AbstractMessage {
QList<uint64_t> _entities_list;
EntityTotalList();
2025-06-07 15:58:50 +00:00
// ͨ<><CDA8> WsMessage <20>̳<EFBFBD>
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
};