2021-10-20 05:40:31 +00:00
|
|
|
extends Control
|
|
|
|
|
|
|
|
# Scenes
|
2021-10-29 22:39:46 +00:00
|
|
|
onready var title_screen = preload("res://scenes/Title Screen.tscn")
|
|
|
|
onready var gameplay = preload("res://scenes/Gameplay.tscn" )
|
|
|
|
onready var options = preload("res://scenes/Options.tscn" )
|
|
|
|
onready var debug_menu = preload("res://scenes/Debug Menu.tscn" )
|
2021-10-20 05:40:31 +00:00
|
|
|
|
2021-11-08 18:17:13 +00:00
|
|
|
var power_saving = true
|
2021-10-20 05:40:31 +00:00
|
|
|
var debug_enabled = true
|
2021-10-22 06:53:04 +00:00
|
|
|
var start_fullscreen = false
|
2021-10-20 05:40:31 +00:00
|
|
|
|
|
|
|
# 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;
|
2021-10-29 22:39:46 +00:00
|
|
|
_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-21 18:37:41 +00:00
|
|
|
# go fullscreen
|
2021-11-08 18:17:13 +00:00
|
|
|
if power_saving:
|
|
|
|
OS.low_processor_usage_mode = true
|
|
|
|
OS.low_processor_usage_mode_sleep_usec = 6800
|
2021-10-22 06:53:04 +00:00
|
|
|
if start_fullscreen:
|
|
|
|
OS.window_fullscreen = true
|
2021-10-20 06:05:39 +00:00
|
|
|
if debug_enabled:
|
2021-10-20 05:40:31 +00:00
|
|
|
add_child(debug_menu.instance())
|
2021-10-21 06:24:27 +00:00
|
|
|
|
2021-10-21 18:37:41 +00:00
|
|
|
# Process global keybinds
|
|
|
|
func _input(event):
|
|
|
|
if event.is_action_pressed("ui_fullscreen"):
|
|
|
|
# toggle_fullscreen
|
|
|
|
OS.window_fullscreen = !OS.window_fullscreen
|
|
|
|
|
|
|
|
|
2021-10-21 06:24:27 +00:00
|
|
|
# Ensure the scene doesn't become empty
|
|
|
|
func _process(_delta):
|
|
|
|
# Make sure there's something running
|
|
|
|
# Debug counts as one child
|
|
|
|
if get_child_count() < 1 + int(debug_enabled):
|
|
|
|
MessageBus.emit_signal("change_scene", "Title")
|
|
|
|
pass
|
2021-10-20 05:40:31 +00:00
|
|
|
|
2021-10-20 07:26:32 +00:00
|
|
|
# Creates a new instance of each menu scene
|
|
|
|
func _on_scene_start(scene):
|
2021-11-01 00:21:23 +00:00
|
|
|
#print ("_on_scene_start(",scene,")")
|
2021-10-20 05:40:31 +00:00
|
|
|
match scene:
|
2021-10-20 08:18:06 +00:00
|
|
|
"Singleplayer":
|
|
|
|
add_child (gameplay.instance())
|
|
|
|
return true
|
|
|
|
"Multiplayer":
|
2021-10-20 07:26:32 +00:00
|
|
|
add_child (gameplay.instance())
|
|
|
|
# add_child (multiplayercontroller.instance())
|
2021-10-20 08:18:06 +00:00
|
|
|
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
|
|
|
|
2021-10-20 07:26:32 +00:00
|
|
|
# Kills all child nodes with name matching `scene`
|
|
|
|
func _on_scene_kill(scene):
|
2021-10-21 10:22:42 +00:00
|
|
|
var node = find_node(scene, false, false)
|
|
|
|
if node :
|
|
|
|
node.queue_free()
|
|
|
|
MessageBus.emit_signal("print_console", String(node.name) + " killed.\n".c_unescape())
|
2021-10-20 07:26:32 +00:00
|
|
|
|
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())
|
|
|
|
|
|
|
|
|
2021-10-20 07:26:32 +00:00
|
|
|
# Quits
|
2021-10-20 05:40:31 +00:00
|
|
|
func _on_quit_request():
|
|
|
|
get_tree().quit()
|
2021-10-20 07:26:32 +00:00
|
|
|
|
|
|
|
# Kills the current tree and replaces it with a new one
|
2021-10-20 05:40:31 +00:00
|
|
|
func _on_title_request():
|
2021-10-20 07:26:32 +00:00
|
|
|
return get_tree().change_scene("res://scenes/Main.tscn")
|