1
0
mirror of https://github.com/JohnBreaux/Boat-Battle.git synced 2024-11-15 05:25:57 +00:00

Add help text to debug menu

This commit is contained in:
ValliantStorme 2021-10-20 05:13:24 -05:00
parent b7ba97b1ff
commit 2d1ada2588
7 changed files with 139 additions and 46 deletions

View File

@ -48,6 +48,7 @@ placeholder_text = "By your command."
caret_blink = true caret_blink = true
script = ExtResource( 3 ) script = ExtResource( 3 )
[connection signal="clear_line" from="." to="debug_canvas/VBoxContainer/LineEdit" method="_on_Debug_clear_line"] [connection signal="clear_in" from="." to="debug_canvas/VBoxContainer/LineEdit" method="_on_Debug_clear_in"]
[connection signal="clear_out" from="." to="debug_canvas/VBoxContainer/TextEdit" method="_on_Debug_clear_out"]
[connection signal="print_text" from="." to="debug_canvas/VBoxContainer/TextEdit" method="_on_Debug_print_text"] [connection signal="print_text" from="." to="debug_canvas/VBoxContainer/TextEdit" method="_on_Debug_print_text"]
[connection signal="text_entered" from="debug_canvas/VBoxContainer/LineEdit" to="." method="_on_LineEdit_text_entered"] [connection signal="text_entered" from="debug_canvas/VBoxContainer/LineEdit" to="." method="_on_LineEdit_text_entered"]

View File

@ -5,5 +5,5 @@ extends LineEdit
# var a = 2 # var a = 2
# var b = "text" # var b = "text"
func _on_Debug_clear_line(): func _on_Debug_clear_in():
clear() clear()

View File

@ -1,9 +0,0 @@
extends LineEdit
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
func _on_Debug_clear_line():
clear()

View File

@ -8,3 +8,9 @@ func _ready():
func _on_Debug_print_text(text): func _on_Debug_print_text(text):
insert_text_at_cursor(text) insert_text_at_cursor(text)
func _on_Debug_clear_out():
cursor_set_line(0)
cursor_set_column(0)
text = "";

View File

@ -16,7 +16,8 @@ var menu_hidden = Transform2D(Vector2(1,0), Vector2(0,1), Vector2(0,-170))
var menu_active = Transform2D(Vector2(1,0), Vector2(0,1), Vector2(0, 0)) var menu_active = Transform2D(Vector2(1,0), Vector2(0,1), Vector2(0, 0))
# signals # signals
signal clear_line signal clear_in
signal clear_out
signal print_text(text) signal print_text(text)
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
@ -43,36 +44,112 @@ func _input(event):
debug_active = !debug_active; debug_active = !debug_active;
func _on_LineEdit_text_entered(line): func _on_LineEdit_text_entered(line):
emit_signal("clear_line") emit_signal("clear_in")
debug_print_line("") debug_print_line("")
var command = line.split(' ', true, 1) var command = line.split(' ', true, 1)
if command.size() > 0:
match command[0]: match command[0]:
"start": "start", "s":
if command.size() > 1: command_start(command)
MessageBus.emit_signal("change_scene", command[1]) "stop", "kill", "k":
debug_print_line("start '" + command[1] + "'\n".c_unescape()) command_stop(command)
else: "list", "ls", "l":
debug_print_line("Usage: start scene") command_list(command)
"kill": "restart", "killall":
if command.size() > 1 and command[1] != "Debug": command_restart(command)
MessageBus.emit_signal("kill_scene", command[1]) "print", "p":
debug_print_line("kill '" + command[1] + "'\n".c_unescape()) command_print(command)
else: "raw_emit", "emit", "r", "e": # Send a signal over the MessageBus
debug_print_line("Usage: kill scene") command_emit(command)
"restart": "clear","cls": # Clear the output
MessageBus.emit_signal("return_to_title") command_clear(command)
"print": "help", "h":
if command.size() > 1: command_help(command)
debug_print_line(command[1].c_unescape())
"raw_emit":
var mbus_signal = command[1].split(' ', true, 1)
match mbus_signal.size():
2: MessageBus.emit_signal(mbus_signal[0], mbus_signal[1])
1: MessageBus.emit_signal(mbus_signal[0])
0: debug_print_line( "Usage: raw_emit signal [value]\n")
_: _:
debug_print_line("BY YOUR COMMAND.\n") debug_print_line("Command not recognized.\n")
func debug_print_line(string): func debug_print_line(string):
emit_signal("print_text", string.c_unescape()) emit_signal("print_text", string.c_unescape())
# Commands
# start: Loads scene from res://scenes/*.tscn by filename, and starts it
func command_start (command):
if command.size() > 1:
MessageBus.emit_signal("start_tcsn", command[1])
debug_print_line("start '" + command[1] + "'\n")
else:
debug_print_line("Usage: start scene")
# stop: Stops scene by name of root node.
func command_stop (command):
if command.size() > 1 and command[1] != "Debug":
MessageBus.emit_signal("kill_scene", command[1])
debug_print_line("kill '" + command[1] + "'\n")
else:
debug_print_line("Usage: kill scene")
# list: Lists names of active scenes (children of Root)
func command_list (command):
debug_print_line("list: ")
MessageBus.emit_signal("list_scenes")
# restart: Kills the current tree and replants Root
func command_restart (command):
MessageBus.emit_signal("return_to_title")
# print: prints a message to the in-game debug console
func command_print(command):
if command.size() > 1:
debug_print_line(command[1] + "\n")
# emit: emits a message onto the MessageBus (!Extremely Danger!)
func command_emit (command):
var mbus_signal = command[1].split(' ', true, 1)
match mbus_signal.size():
2:
debug_print_line("Message: " + String(mbus_signal) + "\n")
MessageBus.emit_signal(mbus_signal[0], mbus_signal[1])
1:
debug_print_line("Message: " + String(mbus_signal) + "\n")
MessageBus.emit_signal(mbus_signal[0])
0: debug_print_line( "Usage: raw_emit signal [value]\n")
# clear: clears the debug output
func command_clear (command):
emit_signal("clear_out");
# help: Prints help dialogue
func command_help (command):
if (command.size() == 1):
debug_print_line("Ship's Commander V0.1\n")
debug_print_line("Valid commands:\nstart, stop, list, restart, print, emit, clear, help\n")
else:
debug_print_line(command[1])
match command[1]:
"start", "s":
debug_print_line(" filename\nAliases: 'start', 's'\n")
debug_print_line("Loads and runs the scene filename.tscn\n")
"stop", "kill", "k":
debug_print_line(" scene\nAliases: 'stop', 'kill', 'k'\n")
debug_print_line("Kills an active scene whose name matches node.\n")
"list", "ls", "l":
debug_print_line("\nAliases: 'list', 'ls', 'l'\n")
debug_print_line("Lists the currently active scenes\n")
"restart", "killall":
debug_print_line("\nAliases: 'restart', 'killall'\n")
debug_print_line("Kills the current scene tree and plants a new Root.\n")
"print", "p":
debug_print_line(" string\nAliases: 'print', 'p'\n")
debug_print_line("Prints a string to the in-game debug console\n")
"raw_emit", "emit", "r", "e":
debug_print_line(" signal [message]\nAliases: 'raw_emit', 'emit', 'r', 'e'\n")
debug_print_line("Puts a message on the MessageBus without validation.\n")
"clear","cls":
debug_print_line("\nAliases: 'clear', 'cls'\n")
debug_print_line("Clears the debug output.\n")
"help", "h":
debug_print_line(" [command]\nAliases: 'help', 'h'\n")
debug_print_line("Prints information about a command.\n")
_:
debug_print_line(command[1] + "\nIsn't a valid command\n")
debug_print_line("\n")

View File

@ -11,8 +11,10 @@ var debug_enabled = true
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
# Connect to signals # Connect to signals
MessageBus.connect("start_tcsn", self, "_on_scene_start_by_name")
MessageBus.connect("change_scene", self, "_on_scene_start") MessageBus.connect("change_scene", self, "_on_scene_start")
MessageBus.connect("kill_scene", self, "_on_scene_kill") MessageBus.connect("kill_scene", self, "_on_scene_kill")
MessageBus.connect("list_scenes", self, "_on_scene_list")
MessageBus.connect("quit", self, "_on_quit_request") MessageBus.connect("quit", self, "_on_quit_request")
MessageBus.connect("return_to_title", self, "_on_title_request") MessageBus.connect("return_to_title", self, "_on_title_request")
# Create the scenes # Create the scenes
@ -42,23 +44,32 @@ func _on_scene_start(scene):
add_child (title_screen.instance()) add_child (title_screen.instance())
return true return true
func _on_scene_start_by_name(scene):
var pack = load("res://scenes/" + scene + ".tscn");
add_child(pack.instance());
# Kills all child nodes with name matching `scene` # Kills all child nodes with name matching `scene`
func _on_scene_kill(scene): func _on_scene_kill(scene):
print ("_on_scene_kill(",scene,")")
var c = get_children() var c = get_children()
for i in range (c.size()): for i in range (c.size()):
if c[i].name == scene: if c[i].name == scene:
c[i].queue_free() c[i].queue_free()
MessageBus.emit_signal("print_console", String(c[i].name) + " killed.\n".c_unescape())
return true return true
return false return false
func _on_scene_list():
var children = get_children()
var names = []
for i in range (children.size()):
names.append(children[i].name)
MessageBus.emit_signal("print_console", String(names) + "\n".c_unescape())
# Quits # Quits
func _on_quit_request(): func _on_quit_request():
print ("_on_quit_request()")
get_tree().quit() get_tree().quit()
# Kills the current tree and replaces it with a new one # Kills the current tree and replaces it with a new one
func _on_title_request(): func _on_title_request():
print ("_on_title_request()")
return get_tree().change_scene("res://scenes/Main.tscn") return get_tree().change_scene("res://scenes/Main.tscn")

View File

@ -1,9 +1,16 @@
extends Node extends Node
# Ignore "unused signal" warnings in this class
# warning-ignore-all:unused_signal
# Ask for a scene change # Ask for a scene change
signal change_scene(scene_name) signal change_scene(scene_name)
signal start_tcsn(scene_tcsn_name)
# Ask to kill scene # Ask to kill scene
signal kill_scene(scene_name) signal kill_scene(scene_name)
# Ask to list active scenes
signal list_scenes()
# Ask to quit the game # Ask to quit the game
signal quit signal quit
# Ask to return to title screen # Ask to return to title screen