From 64c5c076245c33537d9b3f62b84d359fda74bf36 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 14:06:56 -0600 Subject: [PATCH] Debug: Refine command processing to more granularly control printing during script execution. --- godot_ship/script/debug/debug_menu.gd | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/godot_ship/script/debug/debug_menu.gd b/godot_ship/script/debug/debug_menu.gd index 1b9eb9a..ef2950c 100644 --- a/godot_ship/script/debug/debug_menu.gd +++ b/godot_ship/script/debug/debug_menu.gd @@ -158,7 +158,7 @@ func _input(event): #traverse history down history_move(+1) -# Signal-processing functions: +# Command-processing functions: # _on_LineEdit_text_entered: process incoming text line # params: line: Line of text entered by user # returns: void @@ -166,14 +166,21 @@ func _on_LineEdit_text_entered(line): emit_signal("clear_in") debug_print_line(line + "\n") var command = line.split(' ', true, 1) - var command_func = parse(command[0]) - if command_func: - call(command_func, command) + if execute_command(command): history_append(line) else: debug_print_line("dbg: command not found: " + command[0] + "\n") debug_print_line("> ") +# execute_command: execute a line of text as a command +# params: command: partially tokenized PoolStringArray ["command_alias", "parameters ..."] +# returns: name of executed function, or null if nothing executed +func execute_command(command): + var command_func = parse(command[0]) + if command_func: + call(command_func, command) + return command_func + # History_related helper functions: # history_append: add a line of text to the history # params: text: line of text (unparsed command) to add to history @@ -376,7 +383,7 @@ func command_restart (_command): # print: prints a message to the in-game debug console func command_print(command): if command.size() > 1: - debug_print_line(command[1] + "\n") + debug_print_line(command[1]) else: debug_print_line("\n") @@ -547,7 +554,8 @@ func command_script(command): echo = false # Execute the script for cmd in script: - _on_LineEdit_text_entered(cmd) + cmd = cmd.split(' ', true, 1) + execute_command(cmd) # Restore state echo = state["echo"] present_working_node = state["pwn"]