Add BTConsolePrint task
This commit is contained in:
parent
afbf095d1b
commit
5a8442d5a0
|
@ -0,0 +1,74 @@
|
|||
/* bt_console_print.cpp */
|
||||
|
||||
#include "bt_console_print.h"
|
||||
#include "core/object.h"
|
||||
#include "core/print_string.h"
|
||||
#include "modules/limboai/bt/actions/bt_action.h"
|
||||
|
||||
String BTConsolePrint::_generate_name() const {
|
||||
String tx = text;
|
||||
if (text.length() > 30) {
|
||||
tx = text.substr(0, 30) + "...";
|
||||
}
|
||||
tx = tx.replace("\"", "\\\"");
|
||||
if (format_var_args.size() > 0) {
|
||||
return vformat("ConsolePrint text: \"%s\" format_args: %s", tx, format_var_args);
|
||||
}
|
||||
return vformat("ConsolePrint \"%s\"", tx);
|
||||
}
|
||||
|
||||
int BTConsolePrint::_tick(float p_delta) {
|
||||
switch (format_var_args.size()) {
|
||||
case 0: {
|
||||
print_line(text);
|
||||
} break;
|
||||
case 1: {
|
||||
print_line(vformat(text, get_blackboard().get(format_var_args[0], "")));
|
||||
} break;
|
||||
case 2: {
|
||||
print_line(vformat(text, get_blackboard().get(format_var_args[0], ""),
|
||||
get_blackboard().get(format_var_args[1], "")));
|
||||
} break;
|
||||
case 3: {
|
||||
print_line(vformat(text, get_blackboard().get(format_var_args[0], ""),
|
||||
get_blackboard().get(format_var_args[1], ""),
|
||||
get_blackboard().get(format_var_args[2], "")));
|
||||
} break;
|
||||
case 4: {
|
||||
print_line(vformat(text, get_blackboard().get(format_var_args[0], ""),
|
||||
get_blackboard().get(format_var_args[1], ""),
|
||||
get_blackboard().get(format_var_args[2], ""),
|
||||
get_blackboard().get(format_var_args[3], "")));
|
||||
} break;
|
||||
case 5:
|
||||
default: {
|
||||
print_line(vformat(text, get_blackboard().get(format_var_args[0], ""),
|
||||
get_blackboard().get(format_var_args[1], ""),
|
||||
get_blackboard().get(format_var_args[2], ""),
|
||||
get_blackboard().get(format_var_args[3], ""),
|
||||
get_blackboard().get(format_var_args[4], "")));
|
||||
} break;
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
String BTConsolePrint::get_configuration_warning() const {
|
||||
String warning = BTAction::get_configuration_warning();
|
||||
if (!warning.empty()) {
|
||||
warning += "\n";
|
||||
}
|
||||
if (format_var_args.size() > 5) {
|
||||
warning += "ConsolePrint supports up to 5 format arguments.\n";
|
||||
}
|
||||
return warning;
|
||||
}
|
||||
|
||||
void BTConsolePrint::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_text", "p_text"), &BTConsolePrint::set_text);
|
||||
ClassDB::bind_method(D_METHOD("get_text"), &BTConsolePrint::get_text);
|
||||
ClassDB::bind_method(D_METHOD("set_format_var_args", "p_variables"), &BTConsolePrint::set_format_var_args);
|
||||
ClassDB::bind_method(D_METHOD("get_format_var_args"), &BTConsolePrint::get_format_var_args);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "text", PROPERTY_HINT_MULTILINE_TEXT), "set_text", "get_text");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "format_var_args"), "set_format_var_args", "get_format_var_args");
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
/* bt_console_print.h */
|
||||
|
||||
#ifndef BT_CONSOLE_PRINT_H
|
||||
#define BT_CONSOLE_PRINT_H
|
||||
|
||||
#include "bt_action.h"
|
||||
#include "core/object.h"
|
||||
#include "core/variant.h"
|
||||
|
||||
class BTConsolePrint : public BTAction {
|
||||
GDCLASS(BTConsolePrint, BTAction);
|
||||
|
||||
private:
|
||||
String text;
|
||||
PoolStringArray format_var_args;
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
virtual String _generate_name() const;
|
||||
virtual int _tick(float p_delta);
|
||||
|
||||
public:
|
||||
void set_text(String p_value) {
|
||||
text = p_value;
|
||||
emit_changed();
|
||||
}
|
||||
String get_text() const { return text; }
|
||||
|
||||
void set_format_var_args(const PoolStringArray &p_value) {
|
||||
format_var_args = p_value;
|
||||
emit_changed();
|
||||
}
|
||||
PoolStringArray get_format_var_args() const { return format_var_args; }
|
||||
|
||||
virtual String get_configuration_warning() const;
|
||||
};
|
||||
|
||||
#endif // BT_CONSOLE_PRINT_H
|
|
@ -0,0 +1 @@
|
|||
<svg enable-background="new 0 0 16 16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill="#e0e0e0"><path d="m12.47 1.5h-8.94c-1.12 0-2.03.91-2.03 2.03v.77 1.25 1.86 2.59 1.16 1.31c0 1.12.91 2.03 2.03 2.03h8.94c1.12 0 2.03-.91 2.03-2.03v-1.04-.99-1.91-2.53-1.43-1.04c0-1.12-.91-2.03-2.03-2.03zm.83 4.5v2.56 1.88.99 1.04c0 .45-.38.83-.83.83h-8.94c-.45 0-.83-.38-.83-.83v-1.31-1.16-2.5-1.93-1.27-.77c0-.45.38-.83.83-.83h8.94c.45 0 .83.38.83.83v1.04z"/><path d="m10.65 7.35-4.8-2.85-.85 1.18 3.83 2.27-3.79 2.38.88 1.17 4.75-2.98c.2-.13.33-.35.33-.58v-.01c0-.23-.14-.45-.35-.58z"/></g></svg>
|
After Width: | Height: | Size: 600 B |
|
@ -5,6 +5,7 @@
|
|||
#include "core/class_db.h"
|
||||
|
||||
#include "bt/actions/bt_action.h"
|
||||
#include "bt/actions/bt_console_print.h"
|
||||
#include "bt/actions/bt_fail.h"
|
||||
#include "bt/actions/bt_random_wait.h"
|
||||
#include "bt/actions/bt_subtree.h"
|
||||
|
@ -75,6 +76,7 @@ void register_limboai_types() {
|
|||
ClassDB::register_class<BTRandomWait>();
|
||||
ClassDB::register_class<BTWaitTicks>();
|
||||
ClassDB::register_class<BTSubtree>();
|
||||
ClassDB::register_class<BTConsolePrint>();
|
||||
|
||||
ClassDB::register_class<BTCondition>();
|
||||
|
||||
|
|
Loading…
Reference in New Issue