重构执行结果
This commit is contained in:
parent
45544cdb0b
commit
4035690976
|
@ -294,7 +294,7 @@ QList<std::shared_ptr<LogicalNode>> BehaviorMapNode::getForwards() const
|
|||
return children();
|
||||
}
|
||||
|
||||
bool BehaviorMapNode::fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste)
|
||||
bool BehaviorMapNode::fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste)
|
||||
{
|
||||
this->_state_value = ste;
|
||||
return true;
|
||||
|
@ -302,7 +302,7 @@ bool BehaviorMapNode::fallback(std::shared_ptr<LogicalNode> node, LogicalResult
|
|||
|
||||
void BehaviorMapNode::reset()
|
||||
{
|
||||
this->_state_value = LogicalResult::UNDEFINED;
|
||||
this->_state_value = ExecuteResult::UNDEFINED;
|
||||
}
|
||||
|
||||
QString BehaviorMapNode::typeName() const
|
||||
|
@ -310,7 +310,7 @@ QString BehaviorMapNode::typeName() const
|
|||
return _map_name;
|
||||
}
|
||||
|
||||
LogicalResult BehaviorMapNode::execute()
|
||||
ExecuteResult BehaviorMapNode::execute()
|
||||
{
|
||||
return _state_value;
|
||||
}
|
||||
|
@ -347,7 +347,7 @@ QList<std::shared_ptr<LogicalNode>> SequenceNode::getForwards() const
|
|||
for (auto item : children()) {
|
||||
// 子节点执行失败,提前结束
|
||||
if (_state_map.contains(item->getID())) {
|
||||
if (_state_map[item->getID()] != LogicalResult::SUCCESS)
|
||||
if (_state_map[item->getID()] != ExecuteResult::SUCCESS)
|
||||
return QList<std::shared_ptr<LogicalNode>>();
|
||||
}
|
||||
|
||||
|
@ -365,20 +365,20 @@ QString SequenceNode::typeName() const
|
|||
return u8"顺序";
|
||||
}
|
||||
|
||||
LogicalResult SequenceNode::execute() {
|
||||
ExecuteResult SequenceNode::execute() {
|
||||
if (children().size() >= _state_map.size())
|
||||
return LogicalResult::FAILURE;
|
||||
return ExecuteResult::FAILURE;
|
||||
|
||||
for (auto ste : this->_state_map) {
|
||||
switch (ste) {
|
||||
case LogicalResult::SUCCESS:
|
||||
case ExecuteResult::SUCCESS:
|
||||
break;
|
||||
default:
|
||||
return LogicalResult::FAILURE;
|
||||
return ExecuteResult::FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
return LogicalResult::SUCCESS;
|
||||
return ExecuteResult::SUCCESS;
|
||||
}
|
||||
|
||||
QHash<QString, std::shared_ptr<TopicData>> SequenceNode::inputList() const
|
||||
|
@ -397,7 +397,7 @@ void SequenceNode::recoveryFrom(const QJsonObject& obj)
|
|||
STRLIST_PEAK(state_items);
|
||||
for (auto kv : state_items) {
|
||||
auto kv_pair = kv.split(u8":");
|
||||
_state_map[kv_pair[0].toInt()] = (LogicalResult)kv_pair[1].toInt();
|
||||
_state_map[kv_pair[0].toInt()] = (ExecuteResult)kv_pair[1].toInt();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -411,7 +411,7 @@ void SequenceNode::saveTo(QJsonObject& obj) const
|
|||
STRLIST_SAVE(state_items);
|
||||
}
|
||||
|
||||
bool SequenceNode::fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste)
|
||||
bool SequenceNode::fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste)
|
||||
{
|
||||
this->_state_map[node->getID()] = ste;
|
||||
return true;
|
||||
|
@ -459,7 +459,7 @@ QList<std::shared_ptr<LogicalNode>> SelectorNode::getForwards() const
|
|||
for (auto item : children()) {
|
||||
// 子节点执行失败,提前结束
|
||||
if (_state_map.contains(item->getID())) {
|
||||
if (_state_map[item->getID()] == LogicalResult::SUCCESS)
|
||||
if (_state_map[item->getID()] == ExecuteResult::SUCCESS)
|
||||
return QList<std::shared_ptr<LogicalNode>>();
|
||||
}
|
||||
|
||||
|
@ -472,7 +472,7 @@ QList<std::shared_ptr<LogicalNode>> SelectorNode::getForwards() const
|
|||
return QList<std::shared_ptr<LogicalNode>>();
|
||||
}
|
||||
|
||||
bool SelectorNode::fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste)
|
||||
bool SelectorNode::fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste)
|
||||
{
|
||||
_state_map[node->getID()] = ste;
|
||||
return true;
|
||||
|
@ -489,7 +489,7 @@ void SelectorNode::recoveryFrom(const QJsonObject& obj)
|
|||
STRLIST_PEAK(state_items);
|
||||
for (auto kv : state_items) {
|
||||
auto kv_pair = kv.split(u8":");
|
||||
_state_map[kv_pair[0].toInt()] = (LogicalResult)kv_pair[1].toInt();
|
||||
_state_map[kv_pair[0].toInt()] = (ExecuteResult)kv_pair[1].toInt();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -513,13 +513,13 @@ QString SelectorNode::typeName() const
|
|||
return u8"选择";
|
||||
}
|
||||
|
||||
LogicalResult SelectorNode::execute()
|
||||
ExecuteResult SelectorNode::execute()
|
||||
{
|
||||
for (auto value : _state_map) {
|
||||
if (value == LogicalResult::SUCCESS)
|
||||
return LogicalResult::SUCCESS;
|
||||
if (value == ExecuteResult::SUCCESS)
|
||||
return ExecuteResult::SUCCESS;
|
||||
}
|
||||
return LogicalResult::FAILURE;
|
||||
return ExecuteResult::FAILURE;
|
||||
}
|
||||
|
||||
QHash<QString, std::shared_ptr<TopicData>> SelectorNode::inputList() const
|
||||
|
@ -539,7 +539,7 @@ QList<std::shared_ptr<LogicalNode>> ParallelNode::getForwards() const
|
|||
return this->children();
|
||||
}
|
||||
|
||||
bool ParallelNode::fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste)
|
||||
bool ParallelNode::fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste)
|
||||
{
|
||||
_state_map[node->getID()] = ste;
|
||||
return children().size() == _state_map.size();
|
||||
|
@ -555,13 +555,13 @@ QString ParallelNode::typeName() const
|
|||
return u8"并行";
|
||||
}
|
||||
|
||||
LogicalResult ParallelNode::execute()
|
||||
ExecuteResult ParallelNode::execute()
|
||||
{
|
||||
for (auto ste : this->_state_map)
|
||||
if (ste != LogicalResult::SUCCESS)
|
||||
return LogicalResult::FAILURE;
|
||||
if (ste != ExecuteResult::SUCCESS)
|
||||
return ExecuteResult::FAILURE;
|
||||
|
||||
return LogicalResult::SUCCESS;
|
||||
return ExecuteResult::SUCCESS;
|
||||
}
|
||||
|
||||
std::shared_ptr<Serializable> ParallelNode::newDefault() const
|
||||
|
@ -589,7 +589,7 @@ void ParallelNode::recoveryFrom(const QJsonObject& obj)
|
|||
STRLIST_PEAK(state_items);
|
||||
for (auto kv : state_items) {
|
||||
auto kv_pair = kv.split(u8":");
|
||||
_state_map[kv_pair[0].toInt()] = (LogicalResult)kv_pair[1].toInt();
|
||||
_state_map[kv_pair[0].toInt()] = (ExecuteResult)kv_pair[1].toInt();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -611,15 +611,15 @@ QString CompareNode::typeName() const
|
|||
return QString(u8"%1<%2>").arg(u8"比较", delegateName());
|
||||
}
|
||||
|
||||
LogicalResult CompareNode::execute()
|
||||
ExecuteResult CompareNode::execute()
|
||||
{
|
||||
if (this->_bind_delegate) {
|
||||
auto vl = _data_map[u8"左值"];
|
||||
auto vb = _data_map[u8"右值"];
|
||||
if (this->_bind_delegate->compare(vl, vb))
|
||||
return LogicalResult::SUCCESS;
|
||||
return ExecuteResult::SUCCESS;
|
||||
}
|
||||
return LogicalResult::FAILURE;
|
||||
return ExecuteResult::FAILURE;
|
||||
}
|
||||
|
||||
void CompareNode::insert(std::shared_ptr<LogicalNode> node, int index /*= -1*/)
|
||||
|
@ -631,7 +631,7 @@ QList<std::shared_ptr<LogicalNode>> CompareNode::getForwards() const
|
|||
return QList<std::shared_ptr<LogicalNode>>();
|
||||
}
|
||||
|
||||
bool CompareNode::fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) {
|
||||
bool CompareNode::fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -820,14 +820,14 @@ void ExecuteNode::reset()
|
|||
_bind_delegate->reset();
|
||||
}
|
||||
|
||||
LogicalResult ExecuteNode::execute()
|
||||
ExecuteResult ExecuteNode::execute()
|
||||
{
|
||||
if (_bind_delegate)
|
||||
return _bind_delegate->execute();
|
||||
return LogicalResult::FAILURE;
|
||||
return ExecuteResult::FAILURE;
|
||||
}
|
||||
|
||||
bool ExecuteNode::fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste)
|
||||
bool ExecuteNode::fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -915,7 +915,7 @@ QHash<QString, std::shared_ptr<TopicData>> ModifiedNode::outputList() const
|
|||
|
||||
void ModifiedNode::reset()
|
||||
{
|
||||
this->_result_store = LogicalResult::UNDEFINED;
|
||||
this->_result_store = ExecuteResult::UNDEFINED;
|
||||
}
|
||||
|
||||
QList<std::shared_ptr<LogicalNode>> ModifiedNode::getForwards() const
|
||||
|
@ -923,28 +923,28 @@ QList<std::shared_ptr<LogicalNode>> ModifiedNode::getForwards() const
|
|||
return children();
|
||||
}
|
||||
|
||||
bool ModifiedNode::fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste)
|
||||
bool ModifiedNode::fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste)
|
||||
{
|
||||
this->_result_store = ste;
|
||||
return true;
|
||||
}
|
||||
|
||||
LogicalResult ModifiedNode::execute()
|
||||
ExecuteResult ModifiedNode::execute()
|
||||
{
|
||||
switch (_type_appoint)
|
||||
{
|
||||
case ModifyType::RESULT_INVENTER:
|
||||
if (_result_store == LogicalResult::SUCCESS) {
|
||||
return LogicalResult::FAILURE;
|
||||
if (_result_store == ExecuteResult::SUCCESS) {
|
||||
return ExecuteResult::FAILURE;
|
||||
}
|
||||
else {
|
||||
return LogicalResult::SUCCESS;
|
||||
return ExecuteResult::SUCCESS;
|
||||
}
|
||||
case ModifyType::ALWAYS_SUCCESS:
|
||||
return LogicalResult::SUCCESS;
|
||||
return ExecuteResult::SUCCESS;
|
||||
case ModifyType::ALWAYS_FAILURE:
|
||||
case ModifyType::NONE:
|
||||
return LogicalResult::FAILURE;
|
||||
return ExecuteResult::FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -269,7 +269,7 @@ private:
|
|||
/// <summary>
|
||||
/// 执行结果
|
||||
/// </summary>
|
||||
enum class LogicalResult {
|
||||
enum class ExecuteResult {
|
||||
UNDEFINED, // 未定义
|
||||
SUCCESS, // 成功
|
||||
FAILURE // 失败
|
||||
|
@ -305,7 +305,7 @@ public:
|
|||
/// </summary>
|
||||
/// <param name="core"></param>
|
||||
/// <returns></returns>
|
||||
virtual LogicalResult execute() = 0;
|
||||
virtual ExecuteResult execute() = 0;
|
||||
};
|
||||
|
||||
|
||||
|
@ -435,13 +435,13 @@ public:
|
|||
/// <param name="node"></param>
|
||||
/// <param name="ste"></param>
|
||||
/// <returns>接续执行标志</returns>
|
||||
virtual bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) = 0;
|
||||
virtual bool fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste) = 0;
|
||||
/// <summary>
|
||||
/// 执行逻辑节点
|
||||
/// </summary>
|
||||
/// <param name="core"></param>
|
||||
/// <returns></returns>
|
||||
virtual LogicalResult execute() = 0;
|
||||
virtual ExecuteResult execute() = 0;
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
@ -469,7 +469,7 @@ private:
|
|||
/// 地图变量表
|
||||
/// </summary>
|
||||
QHash<QString, std::pair<IO_TYPE, std::shared_ptr<TopicData>>> _variables;
|
||||
LogicalResult _state_value = LogicalResult::FAILURE;
|
||||
ExecuteResult _state_value = ExecuteResult::FAILURE;
|
||||
|
||||
public:
|
||||
BehaviorMapNode(std::shared_ptr<MapKernal> kernal);
|
||||
|
@ -516,13 +516,13 @@ public:
|
|||
/// <param name="node"></param>
|
||||
/// <param name="ste"></param>
|
||||
/// <returns></returns>
|
||||
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
||||
bool fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste) override;
|
||||
|
||||
/// <summary>
|
||||
/// 执行状态
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
LogicalResult execute() override;
|
||||
ExecuteResult execute() override;
|
||||
|
||||
/// <summary>
|
||||
/// 输入变量列表
|
||||
|
@ -552,7 +552,7 @@ public:
|
|||
/// </summary>
|
||||
class COMPONENTBASIC_EXPORT SequenceNode : public LogicalNode {
|
||||
private:
|
||||
QHash<int, LogicalResult> _state_map;
|
||||
QHash<int, ExecuteResult> _state_map;
|
||||
|
||||
public:
|
||||
SequenceNode(std::shared_ptr<MapKernal> kernal);
|
||||
|
@ -564,8 +564,8 @@ public:
|
|||
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
|
||||
|
||||
void reset() override;
|
||||
LogicalResult execute() override;
|
||||
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
||||
ExecuteResult execute() override;
|
||||
bool fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste) override;
|
||||
|
||||
virtual std::shared_ptr<Serializable> newDefault() const override;
|
||||
void recoveryFrom(const QJsonObject& obj) override;
|
||||
|
@ -577,7 +577,7 @@ public:
|
|||
/// </summary>
|
||||
class COMPONENTBASIC_EXPORT SelectorNode : public LogicalNode {
|
||||
private:
|
||||
QHash<int, LogicalResult> _state_map;
|
||||
QHash<int, ExecuteResult> _state_map;
|
||||
|
||||
public:
|
||||
SelectorNode(std::shared_ptr<MapKernal> kernal);
|
||||
|
@ -589,8 +589,8 @@ public:
|
|||
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
|
||||
|
||||
void reset() override;
|
||||
LogicalResult execute() override;
|
||||
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
||||
ExecuteResult execute() override;
|
||||
bool fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste) override;
|
||||
|
||||
virtual std::shared_ptr<Serializable> newDefault() const override;
|
||||
void recoveryFrom(const QJsonObject& obj) override;
|
||||
|
@ -602,7 +602,7 @@ public:
|
|||
/// </summary>
|
||||
class COMPONENTBASIC_EXPORT ParallelNode : public LogicalNode {
|
||||
private:
|
||||
QHash<int, LogicalResult> _state_map;
|
||||
QHash<int, ExecuteResult> _state_map;
|
||||
|
||||
public:
|
||||
ParallelNode(std::shared_ptr<MapKernal> kernal);
|
||||
|
@ -614,8 +614,8 @@ public:
|
|||
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
|
||||
|
||||
void reset() override;
|
||||
LogicalResult execute() override;
|
||||
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
||||
ExecuteResult execute() override;
|
||||
bool fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste) override;
|
||||
|
||||
virtual std::shared_ptr<Serializable> newDefault() const override;
|
||||
void recoveryFrom(const QJsonObject& obj) override;
|
||||
|
@ -645,8 +645,8 @@ public:
|
|||
virtual void insert(std::shared_ptr<LogicalNode> node, int index /*= -1*/) override;
|
||||
|
||||
void reset() override;
|
||||
LogicalResult execute() override;
|
||||
virtual bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
||||
ExecuteResult execute() override;
|
||||
virtual bool fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste) override;
|
||||
|
||||
virtual std::shared_ptr<Serializable> newDefault() const override;
|
||||
void recoveryFrom(const QJsonObject& obj) override;
|
||||
|
@ -675,8 +675,8 @@ public:
|
|||
virtual void insert(std::shared_ptr<LogicalNode> node, int index /*= -1*/) override;
|
||||
|
||||
void reset() override;
|
||||
LogicalResult execute() override;
|
||||
virtual bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
||||
ExecuteResult execute() override;
|
||||
virtual bool fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste) override;
|
||||
|
||||
virtual std::shared_ptr<Serializable> newDefault() const override;
|
||||
void recoveryFrom(const QJsonObject& obj) override;
|
||||
|
@ -695,7 +695,7 @@ enum class ModifyType {
|
|||
class COMPONENTBASIC_EXPORT ModifiedNode : public LogicalNode {
|
||||
private:
|
||||
ModifyType _type_appoint = ModifyType::NONE;
|
||||
LogicalResult _result_store = LogicalResult::UNDEFINED;
|
||||
ExecuteResult _result_store = ExecuteResult::UNDEFINED;
|
||||
|
||||
public:
|
||||
ModifiedNode(std::shared_ptr<MapKernal> kernal);
|
||||
|
@ -711,10 +711,10 @@ public:
|
|||
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
|
||||
|
||||
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
|
||||
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
||||
bool fallback(std::shared_ptr<LogicalNode> node, ExecuteResult ste) override;
|
||||
|
||||
void reset() override;
|
||||
LogicalResult execute() override;
|
||||
ExecuteResult execute() override;
|
||||
|
||||
std::shared_ptr<Serializable> newDefault() const override;
|
||||
void recoveryFrom(const QJsonObject& obj) override;
|
||||
|
|
|
@ -433,6 +433,8 @@ void BehaviorEditor::new_behavior_map()
|
|||
if (!_current_fileurl.isValid())
|
||||
return;
|
||||
|
||||
qDebug() << _current_fileurl;
|
||||
|
||||
// 清空所有子节点内容
|
||||
auto childs = this->_map_root->children();
|
||||
if (childs.size())
|
||||
|
@ -463,7 +465,8 @@ BehaviorEditor::BehaviorEditor(QWidget* parent /*= nullptr*/)
|
|||
|
||||
auto mbar = this->menuBar();
|
||||
auto _file = mbar->addMenu(u8"文件");
|
||||
_file->addAction(u8"´ò¿ª", this, &BehaviorEditor::open_behavior_map);
|
||||
_file->addAction(u8"打开行为树", this, &BehaviorEditor::open_behavior_map);
|
||||
_file->addAction(u8"新建行为树", this, &BehaviorEditor::new_behavior_map);
|
||||
|
||||
auto font = this->font();
|
||||
font.setPixelSize(20);
|
||||
|
|
|
@ -144,6 +144,10 @@ protected:
|
|||
#include <QStandardItemModel>
|
||||
#include <QTextBrowser>
|
||||
#include <MessageLoader.h>
|
||||
|
||||
/// <summary>
|
||||
/// 行为树节点编辑器
|
||||
/// </summary>
|
||||
class BehaviorEditor : public QMainWindow {
|
||||
private:
|
||||
std::shared_ptr<MessageLoader> _global_loader;
|
||||
|
|
Loading…
Reference in New Issue