1
0
mirror of https://github.com/JohnBreaux/Boat-Battle.git synced 2024-11-15 13:25:58 +00:00
Boat-Battle/godot_ship/script/game/Main.gd

77 lines
2.2 KiB
GDScript3
Raw Normal View History

2021-10-20 05:40:31 +00:00
extends Control
# Scenes
var title_screen
var gameplay
var options
var debug_menu
var debug_enabled = true
# Called when the node enters the scene tree for the first time.
func _ready():
# Connect to signals
2021-10-20 11:00:09 +00:00
var _errno = 0;
_errno += MessageBus.connect("start_tcsn", self, "_on_scene_start_by_name")
_errno += MessageBus.connect("change_scene", self, "_on_scene_start")
_errno += MessageBus.connect("kill_scene", self, "_on_scene_kill")
_errno += MessageBus.connect("list_scenes", self, "_on_scene_list")
_errno += MessageBus.connect("quit", self, "_on_quit_request")
_errno += MessageBus.connect("return_to_title", self, "_on_title_request")
2021-10-20 05:40:31 +00:00
# Create the scenes
title_screen = preload("res://scenes/Title Screen.tscn")
gameplay = preload("res://scenes/Gameplay.tscn")
options = preload("res://scenes/Options.tscn")
debug_menu = preload("res://scenes/Debug Menu.tscn")
2021-10-20 06:05:39 +00:00
if debug_enabled:
2021-10-20 05:40:31 +00:00
add_child(debug_menu.instance())
_on_scene_start("Title")
2021-10-20 05:40:31 +00:00
# Creates a new instance of each menu scene
func _on_scene_start(scene):
print ("_on_scene_start(",scene,")")
2021-10-20 05:40:31 +00:00
match scene:
"Singleplayer":
add_child (gameplay.instance())
return true
"Multiplayer":
add_child (gameplay.instance())
# add_child (multiplayercontroller.instance())
return true
"Options":
add_child (options.instance())
return true
"Title":
add_child (title_screen.instance())
return true
2021-10-20 10:13:24 +00:00
func _on_scene_start_by_name(scene):
var pack = load("res://scenes/" + scene + ".tscn");
add_child(pack.instance());
2021-10-20 05:40:31 +00:00
# Kills all child nodes with name matching `scene`
func _on_scene_kill(scene):
var c = get_children()
for i in range (c.size()):
if c[i].name == scene:
c[i].queue_free()
2021-10-20 10:13:24 +00:00
MessageBus.emit_signal("print_console", String(c[i].name) + " killed.\n".c_unescape())
return true
return false
2021-10-20 10:13:24 +00:00
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
2021-10-20 05:40:31 +00:00
func _on_quit_request():
get_tree().quit()
# Kills the current tree and replaces it with a new one
2021-10-20 05:40:31 +00:00
func _on_title_request():
return get_tree().change_scene("res://scenes/Main.tscn")