Implement "Misc->Create Script Template"
This commit is contained in:
parent
1cb3b64a29
commit
4cabbc6082
|
@ -1096,6 +1096,54 @@ void LimboAIEditor::_misc_option_selected(int p_id) {
|
||||||
ProjectSettingsEditor::get_singleton()->set_general_page("limbo_ai/behavior_tree");
|
ProjectSettingsEditor::get_singleton()->set_general_page("limbo_ai/behavior_tree");
|
||||||
ProjectSettingsEditor::get_singleton()->popup_project_settings();
|
ProjectSettingsEditor::get_singleton()->popup_project_settings();
|
||||||
} break;
|
} break;
|
||||||
|
case MISC_CREATE_SCRIPT_TEMPLATE: {
|
||||||
|
if (!FileAccess::exists("res://script_templates/BTTask/custom_task.gd")) {
|
||||||
|
Ref<DirAccess> dir = DirAccess::create(DirAccess::ACCESS_RESOURCES);
|
||||||
|
if (!dir->exists("res://script_templates/")) {
|
||||||
|
dir->make_dir("res://script_templates/");
|
||||||
|
}
|
||||||
|
if (!dir->exists("res://script_templates/BTTask")) {
|
||||||
|
dir->make_dir("res://script_templates/BTTask");
|
||||||
|
}
|
||||||
|
Error err;
|
||||||
|
Ref<FileAccess> f = FileAccess::open("res://script_templates/BTTask/custom_task.gd", FileAccess::WRITE, &err);
|
||||||
|
ERR_FAIL_COND(err != OK);
|
||||||
|
|
||||||
|
String script_template =
|
||||||
|
"# meta-name: Custom Task\n"
|
||||||
|
"# meta-description: Custom task to be used in a BehaviorTree\n"
|
||||||
|
"# meta-default: true\n"
|
||||||
|
"@tool\n"
|
||||||
|
"extends _BASE_\n"
|
||||||
|
"## _CLASS_\n"
|
||||||
|
"\n\n"
|
||||||
|
"# Display a customized name (requires @tool).\n"
|
||||||
|
"func _generate_name() -> String:\n"
|
||||||
|
"_TS_return \"_CLASS_\"\n"
|
||||||
|
"\n\n"
|
||||||
|
"# Called once during initialization.\n"
|
||||||
|
"func _setup() -> void:\n"
|
||||||
|
"_TS_pass\n"
|
||||||
|
"\n\n"
|
||||||
|
"# Called each time this task is entered.\n"
|
||||||
|
"func _enter() -> void:\n"
|
||||||
|
"_TS_pass\n"
|
||||||
|
"\n\n"
|
||||||
|
"# Called each time this task is exited.\n"
|
||||||
|
"func _exit() -> void:\n"
|
||||||
|
"_TS_pass\n"
|
||||||
|
"\n\n"
|
||||||
|
"# Called each time this task is ticked (aka executed).\n"
|
||||||
|
"func _tick(delta: float) -> int:\n"
|
||||||
|
"_TS_return SUCCESS\n";
|
||||||
|
|
||||||
|
f->store_string(script_template);
|
||||||
|
f->close();
|
||||||
|
}
|
||||||
|
|
||||||
|
ScriptEditor::get_singleton()->open_file("res://script_templates/BTTask/custom_task.gd");
|
||||||
|
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1291,6 +1339,20 @@ void LimboAIEditor::_update_favorite_tasks() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LimboAIEditor::_update_misc_menu() {
|
||||||
|
PopupMenu *misc_menu = misc_btn->get_popup();
|
||||||
|
|
||||||
|
misc_menu->clear();
|
||||||
|
|
||||||
|
misc_menu->add_icon_shortcut(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Debug"), SNAME("EditorIcons")), ED_GET_SHORTCUT("limbo_ai/open_debugger"), MISC_OPEN_DEBUGGER);
|
||||||
|
misc_menu->add_item(TTR("Project Settings..."), MISC_PROJECT_SETTINGS);
|
||||||
|
|
||||||
|
misc_menu->add_separator();
|
||||||
|
misc_menu->add_item(
|
||||||
|
FileAccess::exists("res://script_templates/BTAction/custom_action.gd") ? TTR("Edit Script Template") : TTR("Create Script Template"),
|
||||||
|
MISC_CREATE_SCRIPT_TEMPLATE);
|
||||||
|
}
|
||||||
|
|
||||||
void LimboAIEditor::_notification(int p_what) {
|
void LimboAIEditor::_notification(int p_what) {
|
||||||
switch (p_what) {
|
switch (p_what) {
|
||||||
case NOTIFICATION_ENTER_TREE: {
|
case NOTIFICATION_ENTER_TREE: {
|
||||||
|
@ -1316,10 +1378,6 @@ void LimboAIEditor::_notification(int p_what) {
|
||||||
history_forward->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Forward"), SNAME("EditorIcons")));
|
history_forward->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Forward"), SNAME("EditorIcons")));
|
||||||
|
|
||||||
misc_btn->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Tools"), SNAME("EditorIcons")));
|
misc_btn->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Tools"), SNAME("EditorIcons")));
|
||||||
PopupMenu *misc_menu = misc_btn->get_popup();
|
|
||||||
misc_menu->clear();
|
|
||||||
misc_menu->add_icon_shortcut(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Debug"), SNAME("EditorIcons")), ED_GET_SHORTCUT("limbo_ai/open_debugger"), MISC_OPEN_DEBUGGER);
|
|
||||||
misc_menu->add_item(TTR("Project Settings..."), MISC_PROJECT_SETTINGS);
|
|
||||||
|
|
||||||
_update_favorite_tasks();
|
_update_favorite_tasks();
|
||||||
_update_header();
|
_update_header();
|
||||||
|
@ -1441,7 +1499,8 @@ LimboAIEditor::LimboAIEditor() {
|
||||||
misc_btn = memnew(MenuButton);
|
misc_btn = memnew(MenuButton);
|
||||||
misc_btn->set_text(TTR("Misc"));
|
misc_btn->set_text(TTR("Misc"));
|
||||||
misc_btn->set_flat(true);
|
misc_btn->set_flat(true);
|
||||||
misc_btn->get_popup()->connect("index_pressed", callable_mp(this, &LimboAIEditor::_misc_option_selected));
|
misc_btn->connect("pressed", callable_mp(this, &LimboAIEditor::_update_misc_menu));
|
||||||
|
misc_btn->get_popup()->connect("id_pressed", callable_mp(this, &LimboAIEditor::_misc_option_selected));
|
||||||
toolbar->add_child(misc_btn);
|
toolbar->add_child(misc_btn);
|
||||||
|
|
||||||
// toolbar->add_child(memnew(VSeparator));
|
// toolbar->add_child(memnew(VSeparator));
|
||||||
|
|
|
@ -158,6 +158,7 @@ private:
|
||||||
enum MiscMenu {
|
enum MiscMenu {
|
||||||
MISC_OPEN_DEBUGGER,
|
MISC_OPEN_DEBUGGER,
|
||||||
MISC_PROJECT_SETTINGS,
|
MISC_PROJECT_SETTINGS,
|
||||||
|
MISC_CREATE_SCRIPT_TEMPLATE,
|
||||||
};
|
};
|
||||||
|
|
||||||
Vector<Ref<BehaviorTree>> history;
|
Vector<Ref<BehaviorTree>> history;
|
||||||
|
@ -197,6 +198,7 @@ private:
|
||||||
void _update_header() const;
|
void _update_header() const;
|
||||||
void _update_history_buttons();
|
void _update_history_buttons();
|
||||||
void _update_favorite_tasks();
|
void _update_favorite_tasks();
|
||||||
|
void _update_misc_menu();
|
||||||
void _new_bt();
|
void _new_bt();
|
||||||
void _save_bt(String p_path);
|
void _save_bt(String p_path);
|
||||||
void _load_bt(String p_path);
|
void _load_bt(String p_path);
|
||||||
|
|
Loading…
Reference in New Issue