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

109 lines
3.4 KiB
GDScript3
Raw Normal View History

2021-10-20 05:40:31 +00:00
extends Control
# Scenes
onready var Title_Screen = preload("res://scenes/Title Screen.tscn")
onready var Game = preload("res://scenes/Game/Game.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-14 05:51:36 +00:00
# Themes
var lightmode = preload("res://assets/backgrounds/Background_Light.png");
var darkmode = preload("res://assets/backgrounds/Background_Dark.png");
2021-11-08 19:41:55 +00:00
#flags
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;
_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-11-14 05:51:36 +00:00
_errno += OptionsController.connect("change_theme", self, "_on_change_theme" )
2021-11-14 05:58:41 +00:00
# Set the theme based on the config file
_on_change_theme(OptionsController.get_theme())
# go fullscreen
2021-11-08 19:41:55 +00:00
OS.low_processor_usage_mode = power_saving
OS.low_processor_usage_mode_sleep_usec = 6800
OS.window_fullscreen = start_fullscreen
2021-10-20 06:05:39 +00:00
if debug_enabled:
add_child(Debug_Menu.instance())
# Process global keybinds
func _input(event):
if event.is_action_pressed("ui_fullscreen"):
# toggle_fullscreen
OS.window_fullscreen = !OS.window_fullscreen
# Ensure the scene doesn't become empty
func _process(_delta):
# Make sure there's something running
2021-11-14 05:36:39 +00:00
# Background counts as one child
# Debug counts as one child
2021-11-14 05:36:39 +00:00
if get_child_count() < 2 + int(debug_enabled):
MessageBus.emit_signal("change_scene", "Title")
pass
2021-10-20 05:40:31 +00:00
# Creates a new instance of each menu scene
func _on_scene_start(scene):
2021-11-14 05:36:39 +00:00
var instance
#print ("_on_scene_start(",scene,")")
2021-10-20 05:40:31 +00:00
match scene:
"Singleplayer":
2021-11-14 05:36:39 +00:00
instance = Game.instance()
add_child (instance)
return true
"Multiplayer":
2021-11-14 05:36:39 +00:00
instance = Game.instance()
instance.is_multiplayer = true
add_child (instance)
return true
"Options":
2021-11-14 05:36:39 +00:00
instance = Options.instance()
add_child (instance)
return true
"Title":
2021-11-14 05:36:39 +00:00
instance = Title_Screen.instance()
add_child (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 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 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")
2021-11-14 05:51:36 +00:00
func _on_change_theme(theme):
if theme == "light":
get_node("Background").set_texture(lightmode)
elif theme == "dark":
get_node("Background").set_texture(darkmode)