From 83842aa439ad804430a272465a3473c712737068 Mon Sep 17 00:00:00 2001 From: codeboss <2422523675@qq.com> Date: Fri, 4 Jul 2025 23:26:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BF=AE=E9=A5=B0=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ComponentBasic/BehaviorPerform.cpp | 97 +++++++++++++++++++++++++++++- ComponentBasic/BehaviorPerform.h | 22 +++++-- 2 files changed, 112 insertions(+), 7 deletions(-) diff --git a/ComponentBasic/BehaviorPerform.cpp b/ComponentBasic/BehaviorPerform.cpp index 976b19f..18620ec 100644 --- a/ComponentBasic/BehaviorPerform.cpp +++ b/ComponentBasic/BehaviorPerform.cpp @@ -93,7 +93,6 @@ std::shared_ptr MapKernal::getConvert(const QString& name) void MapKernal::registExecute(std::shared_ptr ins) { _execute_types[ins->typeName()] = ins; - emit this->executeTypeListChanged(); } std::shared_ptr MapKernal::messageLoader() const @@ -114,6 +113,7 @@ void MapKernal::initial() registNode(std::make_shared(this->shared_from_this())); registNode(std::make_shared(this->shared_from_this())); registNode(std::make_shared(this->shared_from_this())); + registNode(std::make_shared(this->shared_from_this())); registNode(std::make_shared(this->shared_from_this())); } @@ -225,7 +225,7 @@ std::weak_ptr LogicalNode::parent() const } BehaviorMapNode::BehaviorMapNode(std::shared_ptr core) - :LogicalNode(NodeKind::MAPNODE, core){ + :LogicalNode(NodeKind::MAPNODE, core) { } void BehaviorMapNode::setVariable(const QString& key, IO_TYPE t, std::shared_ptr ins) @@ -844,3 +844,96 @@ void ExecuteNode::saveTo(QJsonObject& obj) const ModifiedNode::ModifiedNode(std::shared_ptr kernal) : LogicalNode(NodeKind::MODIFYNODE, kernal) { } + +ModifyType ModifiedNode::modifyType() const +{ + return _type_appoint; +} + +void ModifiedNode::resetModify(ModifyType t) +{ + this->_type_appoint = t; +} + +void ModifiedNode::insert(std::shared_ptr node, int index /*= -1*/) +{ + if (children().size()) + return; + + LogicalNode::insert(node); +} + +QString ModifiedNode::typeName() const +{ + switch (modifyType()) + { + case ModifyType::ALWAYS_SUCCESS: + return u8"修饰<永远成功>"; + case ModifyType::ALWAYS_FAILURE: + return u8"修饰<永远失败>"; + case ModifyType::RESULT_INVENTER: + return u8"修饰<结果反转>"; + default: + return u8"修饰<>"; + } +} + +QHash> ModifiedNode::inputList() const +{ + return {}; +} + +QHash> ModifiedNode::outputList() const +{ + return {}; +} + +void ModifiedNode::reset() +{ + this->_result_store = LogicalResult::UNDEFINED; +} + +QList> ModifiedNode::getForwards() const +{ + return children(); +} + +bool ModifiedNode::fallback(std::shared_ptr node, LogicalResult ste) +{ + this->_result_store = ste; + return true; +} + +LogicalResult ModifiedNode::execute() +{ + switch (_type_appoint) + { + case ModifyType::RESULT_INVENTER: + if (_result_store == LogicalResult::SUCCESS) { + return LogicalResult::FAILURE; + } + else { + return LogicalResult::SUCCESS; + } + case ModifyType::ALWAYS_SUCCESS: + return LogicalResult::SUCCESS; + case ModifyType::ALWAYS_FAILURE: + case ModifyType::NONE: + return LogicalResult::FAILURE; + } +} + +std::shared_ptr ModifiedNode::newDefault() const +{ + return std::make_shared(this->getKernal()); +} + +void ModifiedNode::recoveryFrom(const QJsonObject& obj) +{ + +} + +void ModifiedNode::saveTo(QJsonObject& obj) const +{ + +} diff --git a/ComponentBasic/BehaviorPerform.h b/ComponentBasic/BehaviorPerform.h index ccc9ab5..13c7ba5 100644 --- a/ComponentBasic/BehaviorPerform.h +++ b/ComponentBasic/BehaviorPerform.h @@ -70,10 +70,6 @@ signals: /// 转换器类型列表变更 /// void convertTypeListChanged(); - /// - /// 执行节点类型列表变更 - /// - void executeTypeListChanged(); public: @@ -695,8 +691,8 @@ enum class ModifyType { }; class COMPONENTBASIC_EXPORT ModifiedNode : public LogicalNode { private: - std::shared_ptr _bind_kernal; ModifyType _type_appoint = ModifyType::NONE; + LogicalResult _result_store = LogicalResult::UNDEFINED; public: ModifiedNode(std::shared_ptr kernal); @@ -705,6 +701,22 @@ public: void resetModify(ModifyType t); + void insert(std::shared_ptr node, int index = -1) override; + + QString typeName() const override; + QHash> inputList() const override; + QHash> outputList() const override; + + QList> getForwards() const override; + bool fallback(std::shared_ptr node, LogicalResult ste) override; + + void reset() override; + LogicalResult execute() override; + + std::shared_ptr newDefault() const override; + void recoveryFrom(const QJsonObject& obj) override; + void saveTo(QJsonObject& obj) const override; + }; // 行为节点 ====================================================================