diff options
author | Spartan322 <Megacake1234@gmail.com> | 2024-01-20 00:00:31 +0100 |
---|---|---|
committer | Spartan322 <Megacake1234@gmail.com> | 2024-01-22 01:57:27 +0100 |
commit | 9bca5cf3206a54b2e587cefab80d9dbcbbd002af (patch) | |
tree | bb8d68e013c3a815f1a1e418e564f03a9a2a451b /game/src/Game/GameStart.gd | |
parent | 0840fd621cf35201f1e5ef90ad09033a2242b181 (diff) |
Add Victoria 2 Folder Picker dialog
Move Localization.initialize to beginning of GameStart._ready
Move compatibility mode paths search to separate _setup_compatibility_mode_paths
Move _setup_compatibility_mode_paths call to GameStart._ready
Fix `Non-argument '%s' found, skipping.` warning for Godot command line arguments
Diffstat (limited to 'game/src/Game/GameStart.gd')
-rw-r--r-- | game/src/Game/GameStart.gd | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/game/src/Game/GameStart.gd b/game/src/Game/GameStart.gd index 857fea9..7a52846 100644 --- a/game/src/Game/GameStart.gd +++ b/game/src/Game/GameStart.gd @@ -6,13 +6,17 @@ const GameMenuScene := preload("res://src/Game/GameMenu.tscn") @export_subgroup("Nodes") @export var loading_screen : LoadingScreen +@export var vic2_dir_dialog : FileDialog @export_subgroup("") @export var section_name : String = "general" @export var setting_name : String = "base_defines_path" + var _settings_base_path : String = "" +var _compatibility_path_list : PackedStringArray = [] func _ready() -> void: + Localisation.initialize() if ArgumentParser.get_argument(&"help"): ArgumentParser._print_help() # For some reason this doesn't get freed properly @@ -31,7 +35,8 @@ func _ready() -> void: Events.Options.load_settings_from_file() sound_tab.queue_free() - loading_screen.start_loading_screen(_initialize_game) + await _setup_compatibility_mode_paths() + await loading_screen.start_loading_screen(_initialize_game) func _load_setting(file : ConfigFile) -> void: if file == null: return @@ -41,7 +46,7 @@ func _save_setting(file : ConfigFile) -> void: if file == null: return file.set_value(section_name, setting_name, _settings_base_path) -func _load_compatibility_mode() -> void: +func _setup_compatibility_mode_paths() -> void: # To test mods, set your base path to Victoria II and then pass mods in reverse order with --mod="mod" for each mod. var arg_base_path : String = ArgumentParser.get_argument(&"base-path", "") @@ -67,23 +72,40 @@ func _load_compatibility_mode() -> void: # and if not also search for a Steam install actual_base_path = GameSingleton.search_for_game_path("..") if not actual_base_path: - OS.alert(tr("ERROR_ASSET_PATH_NOT_FOUND_MESSAGE"), tr("ERROR_ASSET_PATH_NOT_FOUND")) - get_tree().quit() - return + get_tree().paused = true + vic2_dir_dialog.popup_centered_ratio() + # Remove with https://github.com/godotengine/godot/pull/81178 + vic2_dir_dialog.ok_button_text = "VIC2_DIR_DIALOG_SELECT" + # WHY WON'T CANCEL AUTO-TRANSLATE WORK NOW?!?!?!? + var cancel_button := vic2_dir_dialog.get_cancel_button() + cancel_button.auto_translate = false + cancel_button.auto_translate = true + var failure_func := func() -> void: + get_window().mode = Window.MODE_WINDOWED + OS.alert(tr("ERROR_ASSET_PATH_NOT_FOUND_MESSAGE"), tr("ERROR_ASSET_PATH_NOT_FOUND")) + get_tree().quit() + vic2_dir_dialog.canceled.connect(failure_func) + await vic2_dir_dialog.dir_selected + get_tree().paused = false + actual_base_path = GameSingleton.search_for_game_path(vic2_dir_dialog.current_path) + if not actual_base_path: + failure_func.call() + return if not _settings_base_path: _settings_base_path = actual_base_path # Save the path found in the search Events.Options.save_settings_to_file() - var paths : PackedStringArray = [actual_base_path] + _compatibility_path_list = [actual_base_path] # Add mod paths var settings_mod_names : PackedStringArray = ArgumentParser.get_argument(&"mod", "") for mod_name : String in settings_mod_names: - paths.push_back(actual_base_path + "/mod/" + mod_name) + _compatibility_path_list.push_back(actual_base_path + "/mod/" + mod_name) - if GameSingleton.load_defines_compatibility_mode(paths) != OK: +func _load_compatibility_mode() -> void: + if GameSingleton.load_defines_compatibility_mode(_compatibility_path_list) != OK: push_error("Errors loading game defines!") # REQUIREMENTS @@ -93,7 +115,6 @@ func _initialize_game() -> void: loading_screen.try_update_loading_screen(0) GameSingleton.setup_logger() - Localisation.initialize() loading_screen.try_update_loading_screen(15, true) _load_compatibility_mode() |