From 0e408c82a010aba96915753d56f83349256f4231 Mon Sep 17 00:00:00 2001 From: Spartan322 Date: Mon, 28 Aug 2023 09:39:45 -0400 Subject: Add Window Override: Hides window for help argument (`./program -- --help`) Hides window until video options loading is complete --- game/src/Game/Autoload/Argument/ArgumentParser.gd | 4 +--- game/src/Game/Autoload/WindowOverride.gd | 27 +++++++++++++++++++++++ game/src/Game/GameStart.gd | 9 ++++++++ 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 game/src/Game/Autoload/WindowOverride.gd (limited to 'game/src') diff --git a/game/src/Game/Autoload/Argument/ArgumentParser.gd b/game/src/Game/Autoload/Argument/ArgumentParser.gd index b463c74..b012215 100644 --- a/game/src/Game/Autoload/Argument/ArgumentParser.gd +++ b/game/src/Game/Autoload/Argument/ArgumentParser.gd @@ -309,10 +309,8 @@ Options: ("Type: %s - Default Value: %s" % [option.get_type_string(), option.default_value]).rpad(45), option.description ]) + func _ready(): if Engine.is_editor_hint(): return _set_argument_setting() GameDebug._singleton = GameDebug.new() - if get_argument(&"help"): - _print_help() - get_tree().quit() diff --git a/game/src/Game/Autoload/WindowOverride.gd b/game/src/Game/Autoload/WindowOverride.gd new file mode 100644 index 0000000..837570e --- /dev/null +++ b/game/src/Game/Autoload/WindowOverride.gd @@ -0,0 +1,27 @@ +extends Node + +const VideoOptions = preload("res://src/Game/Menu/OptionMenu/VideoTab.tscn") + +func _init(): + var window_id := DisplayServer.get_window_list()[0] + DisplayServer.window_set_size(Vector2(1280.0, 720.0), window_id) + +func _ready(): + if ArgumentParser.get_argument(&"help"): return + _on_SceneTree_idle() + # Hack to ensure Video Options load + var video := VideoOptions.instantiate() + video.visible = false + add_child(video) + video.queue_free() + +func _on_SceneTree_idle(): + var window := get_window() + window.set_mode(Window.MODE_FULLSCREEN) + await get_tree().process_frame + window.transparent = false + window.borderless = false + var screen_pos := DisplayServer.screen_get_position(window.current_screen) + var screen_size := DisplayServer.screen_get_size(window.current_screen) + window.position = screen_pos + (screen_size - window.size) / 2 + ProjectSettings.set_setting.call_deferred("display/window/per_pixel_transparency/allowed", false) diff --git a/game/src/Game/GameStart.gd b/game/src/Game/GameStart.gd index fa7568b..723086e 100644 --- a/game/src/Game/GameStart.gd +++ b/game/src/Game/GameStart.gd @@ -7,6 +7,15 @@ const SoundTabScene = preload("res://src/Game/Menu/OptionMenu/SoundTab.tscn") @export var loading_screen : LoadingScreen func _ready() -> void: + if ArgumentParser.get_argument(&"help"): + ArgumentParser._print_help() + # For some reason this doesn't get freed properly + # Godot will always quit before it frees the active StreamPlayback resource + # This hack fixes that + MusicConductor.queue_free() + get_tree().quit() + return + # Hack to ensure Sound Options load var sound_tab := SoundTabScene.instantiate() sound_tab.visible = false -- cgit v1.2.3-56-ga3b1