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:
John 2021-10-20 05:13:24 -05:00 committed by John
parent 5f8c881c1c
commit 4cbccbbbbe
7 changed files with 139 additions and 46 deletions

View File

@ -48,6 +48,7 @@ placeholder_text = "By your command."
caret_blink = true
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="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 b = "text"
func _on_Debug_clear_line():
func _on_Debug_clear_in():
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):
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))
# signals
signal clear_line
signal clear_in
signal clear_out
signal print_text(text)
# Called when the node enters the scene tree for the first time.
@ -43,36 +44,112 @@ func _input(event):
debug_active = !debug_active;
func _on_LineEdit_text_entered(line):
emit_signal("clear_line")
emit_signal("clear_in")
debug_print_line("")
var command = line.split(' ', true, 1)
if command.size() > 0:
match command[0]:
"start":
if command.size() > 1:
MessageBus.emit_signal("change_scene", command[1])
debug_print_line("start '" + command[1] + "'\n".c_unescape())
else:
debug_print_line("Usage: start scene")
"kill":
if command.size() > 1 and command[1] != "Debug":
MessageBus.emit_signal("kill_scene", command[1])
debug_print_line("kill '" + command[1] + "'\n".c_unescape())
else:
debug_print_line("Usage: kill scene")
"restart":
MessageBus.emit_signal("return_to_title")
"print":
if command.size() > 1:
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")
"start", "s":
command_start(command)
"stop", "kill", "k":
command_stop(command)
"list", "ls", "l":
command_list(command)
"restart", "killall":
command_restart(command)
"print", "p":
command_print(command)
"raw_emit", "emit", "r", "e": # Send a signal over the MessageBus
command_emit(command)
"clear","cls": # Clear the output
command_clear(command)
"help", "h":
command_help(command)
_:
debug_print_line("BY YOUR COMMAND.\n")
debug_print_line("Command not recognized.\n")
func debug_print_line(string):
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.
func _ready():
# Connect to signals
MessageBus.connect("start_tcsn", self, "_on_scene_start_by_name")
MessageBus.connect("change_scene", self, "_on_scene_start")
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("return_to_title", self, "_on_title_request")
# Create the scenes
@ -42,23 +44,32 @@ func _on_scene_start(scene):
add_child (title_screen.instance())
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`
func _on_scene_kill(scene):
print ("_on_scene_kill(",scene,")")
var c = get_children()
for i in range (c.size()):
if c[i].name == scene:
c[i].queue_free()
MessageBus.emit_signal("print_console", String(c[i].name) + " killed.\n".c_unescape())
return true
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
func _on_quit_request():
print ("_on_quit_request()")
get_tree().quit()
# Kills the current tree and replaces it with a new one
func _on_title_request():
print ("_on_title_request()")
return get_tree().change_scene("res://scenes/Main.tscn")

View File

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