2025-06-07 15:58:50 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
#include <simsbasic.h>
|
2025-06-08 04:12:15 +00:00
|
|
|
|
#include <messagebasic.h>
|
|
|
|
|
#include "componentbasic.h"
|
|
|
|
|
#include <QObject>
|
|
|
|
|
#include <QHash>
|
|
|
|
|
|
2025-06-08 12:17:02 +00:00
|
|
|
|
class COMPONENTBASIC_EXPORT ComponentFactory : public Serializable {
|
|
|
|
|
private:
|
|
|
|
|
QHash<QString, std::shared_ptr<WsComponent>> _comp_types;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
ComponentFactory();
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<WsComponent> makeNew(const QString &type);
|
|
|
|
|
QList<QString> allComponentTypes() const;
|
|
|
|
|
|
|
|
|
|
// ͨ<><CDA8> Serializable <20>̳<EFBFBD>
|
|
|
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
|
|
|
void saveTo(QJsonObject& obj) const override;
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
2025-06-08 04:12:15 +00:00
|
|
|
|
class COMPONENTBASIC_EXPORT DeduceFramework : public QObject,
|
|
|
|
|
public ProcList<
|
2025-06-08 12:17:02 +00:00
|
|
|
|
WsRespond<TypesQuery, TypesQueryResult>,
|
|
|
|
|
WsRespond<TempletOperate, RespondDefault>,
|
|
|
|
|
WsRespond<EntityOperate, RespondDefault>,
|
|
|
|
|
WsRespond<ComponentOperate, RespondDefault>,
|
2025-06-08 04:12:15 +00:00
|
|
|
|
WsRespond<EntityTotalGet, EntityTotalList>>
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
private:
|
2025-06-08 12:17:02 +00:00
|
|
|
|
std::weak_ptr<WsEntity> _bind_entity;
|
|
|
|
|
std::shared_ptr<ComponentFactory> _factory_ins;
|
2025-06-08 04:12:15 +00:00
|
|
|
|
|
2025-06-08 12:17:02 +00:00
|
|
|
|
QHash<QString, std::shared_ptr<RtEntity>> _templets_within_0x2ff_0xffff;
|
|
|
|
|
QHash<uint64_t, std::shared_ptr<WsEntity>> _entity_map_over_0xffff;
|
2025-06-08 04:12:15 +00:00
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD>еĻظ<C4BB><D8B8><EFBFBD>Ϣ
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="msg_set"><3E><>Ϣ<EFBFBD>б<EFBFBD></param>
|
|
|
|
|
void reply(const QList<std::shared_ptr<WsMessage>> &msg_set);
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ins"><3E>ظ<EFBFBD><D8B8><EFBFBD>Ϣ</param>
|
|
|
|
|
void complete(std::shared_ptr<RespondDefault> ins);
|
|
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>б<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="set"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD></param>
|
|
|
|
|
void accept(const QList<std::shared_ptr<WsMessage>> &set);
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ins"><3E><>Ϣ</param>
|
|
|
|
|
void deduceBegin(std::shared_ptr<const DeduceRequest> ins);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
static QList<std::shared_ptr<WsMessage>> _accept_stack;
|
2025-06-08 12:17:02 +00:00
|
|
|
|
|
2025-06-08 04:12:15 +00:00
|
|
|
|
DeduceFramework();
|
|
|
|
|
|
2025-06-08 12:17:02 +00:00
|
|
|
|
void init_backend();
|
|
|
|
|
|
2025-06-08 04:12:15 +00:00
|
|
|
|
std::shared_ptr<WsComponent> defaultNew() const override;
|
2025-06-08 12:17:02 +00:00
|
|
|
|
void bindEntity(std::weak_ptr<WsEntity> ins) override;
|
2025-06-08 04:12:15 +00:00
|
|
|
|
QString name() const override;
|
|
|
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
|
|
|
void saveTo(QJsonObject& obj) const override;
|
|
|
|
|
|
|
|
|
|
|
2025-06-08 12:17:02 +00:00
|
|
|
|
void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const TypesQuery> in, QList<std::shared_ptr<TypesQueryResult>>& out) override;
|
|
|
|
|
void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const TempletOperate> in, QList<std::shared_ptr<RespondDefault>>& out) override;
|
|
|
|
|
void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const EntityOperate> in, QList<std::shared_ptr<RespondDefault>>& out) override;
|
|
|
|
|
void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const ComponentOperate> in, QList<std::shared_ptr<RespondDefault>>& out) override;
|
|
|
|
|
|
2025-06-08 04:12:15 +00:00
|
|
|
|
void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const EntityTotalGet> in, QList<std::shared_ptr<EntityTotalList>>& out) override;
|
|
|
|
|
};
|