diff --git a/godot_ship/scenes/Debug Menu.tscn b/godot_ship/scenes/Debug Menu.tscn index 649c367..3d235bf 100644 --- a/godot_ship/scenes/Debug Menu.tscn +++ b/godot_ship/scenes/Debug Menu.tscn @@ -22,7 +22,7 @@ transform = Transform2D( 1, 0, 0, 1, 0, -360 ) [node name="VBoxContainer" type="VBoxContainer" parent="debug_canvas"] anchor_right = 1.0 anchor_bottom = 1.0 -margin_bottom = -180.0 +margin_bottom = -190.0 custom_constants/separation = 2 __meta__ = { "_edit_use_anchors_": false @@ -31,13 +31,20 @@ __meta__ = { [node name="TextEdit" type="TextEdit" parent="debug_canvas/VBoxContainer"] margin_right = 640.0 margin_bottom = 144.0 +grow_vertical = 0 rect_min_size = Vector2( 0, 144 ) -text = "Turn 0 -Player 1: 0 ships, 0 hits, 0 misses" +readonly = true +syntax_highlighting = true +fold_gutter = true +wrap_enabled = true +minimap_draw = true [node name="LineEdit" type="LineEdit" parent="debug_canvas/VBoxContainer"] margin_top = 146.0 margin_right = 640.0 margin_bottom = 170.0 -text = ">" +max_length = 256 +placeholder_text = "By your command." caret_blink = true + +[connection signal="text_entered" from="debug_canvas/VBoxContainer/LineEdit" to="." method="_on_LineEdit_text_entered"] diff --git a/godot_ship/script/debug/debug_menu.gd b/godot_ship/script/debug/debug_menu.gd index 9d005cd..dde0a1a 100644 --- a/godot_ship/script/debug/debug_menu.gd +++ b/godot_ship/script/debug/debug_menu.gd @@ -1,6 +1,9 @@ extends Control # Declare member variables here. +var debug_output +var debug_line = 0 + var debug_canvas var debug_transform @@ -9,13 +12,15 @@ var menu_position = 0.0 var menu_velocity = 4 # positions when the menu is hidden/active -var menu_hidden = Transform2D(Vector2(1,0), Vector2(0,1), Vector2(0,-180)) +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)) # Called when the node enters the scene tree for the first time. func _ready(): + debug_canvas = get_node("debug_canvas") debug_transform = debug_canvas.get_transform() + debug_output = get_node("debug_canvas/VBoxContainer/TextEdit") # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): @@ -33,8 +38,26 @@ func _unhandled_input(event): # open debug menu debug_active = !debug_active; +func _on_LineEdit_text_entered(line): + var command = line.split(' ', true, 1) + if command.size() > 0: + print("match ", command) + match command[0]: + "open": + if command.size() > 1: + MessageBus.emit_signal("change_scene", command[1]) + else: + debug_print_line("Usage: open scene") + "kill": + if command.size() > 1: + MessageBus.emit_signal("kill_scene", command[1]) + else: + debug_print_line("Usage: kill scene") + "restart": + MessageBus.emit_signal("return_to_title") + else: + pass - -func _on_LineEdit_text_entered(new_text): - - pass # Replace with function body. +func debug_print_line(string): + debug_output.set_line(debug_line, string) + debug_line += 1 diff --git a/godot_ship/script/game/Main.gd b/godot_ship/script/game/Main.gd index 7167a73..677fb4d 100644 --- a/godot_ship/script/game/Main.gd +++ b/godot_ship/script/game/Main.gd @@ -11,7 +11,8 @@ var debug_enabled = true # Called when the node enters the scene tree for the first time. func _ready(): # Connect to signals - MessageBus.connect("change_scene", self, "_on_change_scene") + MessageBus.connect("change_scene", self, "_on_scene_start") + MessageBus.connect("kill_scene", self, "_on_scene_kill") MessageBus.connect("quit", self, "_on_quit_request") MessageBus.connect("return_to_title", self, "_on_title_request") # Create the scenes @@ -21,21 +22,33 @@ func _ready(): debug_menu = preload("res://scenes/Debug Menu.tscn") if debug_enabled: add_child(debug_menu.instance()) - _on_change_scene("Title") + _on_scene_start("Title") -func _on_change_scene(scene): +# Creates a new instance of each menu scene +func _on_scene_start(scene): + print ("_on_scene_start(",scene,")") match scene: - "Singleplayer": - add_child(gameplay.instance()) - "Multiplayer": - add_child(gameplay.instance()) - "Options": - add_child(options.instance()) - "Title": - add_child(title_screen.instance()) + "Singleplayer": add_child (gameplay.instance()) + "Multiplayer": + add_child (gameplay.instance()) + # add_child (multiplayercontroller.instance()) + "Options": add_child (options.instance()) + "Title": add_child (title_screen.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() + +# 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(): - get_tree().change_scene("res://scenes/Main.tscn") + print ("_on_title_request()") + return get_tree().change_scene("res://scenes/Main.tscn") diff --git a/godot_ship/script/game/Message Bus.gd b/godot_ship/script/game/Message Bus.gd index c179af0..981cf82 100644 --- a/godot_ship/script/game/Message Bus.gd +++ b/godot_ship/script/game/Message Bus.gd @@ -3,7 +3,11 @@ extends Node # Ask for a scene change signal change_scene(scene_name) # Ask to kill scene +signal kill_scene(scene_name) # Ask to quit the game signal quit # Ask to return to title screen signal return_to_title + +# Ask to print a string to debug console +signal print_console(string)