diff options
Diffstat (limited to 'game/src/Game/Autoload')
-rw-r--r-- | game/src/Game/Autoload/Argument/ArgumentParser.gd | 1 | ||||
-rw-r--r-- | game/src/Game/Autoload/Events.gd | 61 | ||||
-rw-r--r-- | game/src/Game/Autoload/Events/GameDebug.gd | 9 | ||||
-rw-r--r-- | game/src/Game/Autoload/Events/Loader.gd | 6 | ||||
-rw-r--r-- | game/src/Game/Autoload/Events/Localisation.gd | 34 | ||||
-rw-r--r-- | game/src/Game/Autoload/Events/Options.gd | 2 | ||||
-rw-r--r-- | game/src/Game/Autoload/Events/ShaderManager.gd | 49 | ||||
-rw-r--r-- | game/src/Game/Autoload/GameLoader.gd | 18 |
8 files changed, 34 insertions, 146 deletions
diff --git a/game/src/Game/Autoload/Argument/ArgumentParser.gd b/game/src/Game/Autoload/Argument/ArgumentParser.gd index 123a733..b463c74 100644 --- a/game/src/Game/Autoload/Argument/ArgumentParser.gd +++ b/game/src/Game/Autoload/Argument/ArgumentParser.gd @@ -312,6 +312,7 @@ Options: 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/Events.gd b/game/src/Game/Autoload/Events.gd index f979301..da12bf6 100644 --- a/game/src/Game/Autoload/Events.gd +++ b/game/src/Game/Autoload/Events.gd @@ -1,56 +1,11 @@ +## Events are exclusively for the purpose of handling global signals +## This is to reduce "signal bubbling" which is when a signal callback is used to "bubble" the signal callbacks up the scene tree. +## It does such by providing a global interface of signals that are connected to and emitted by that are garunteed to exist. extends Node -var GameDebug: GameDebugSingleton -var Options: OptionsSingleton -var Localisation: LocalisationSingleton -var ShaderManager: ShaderManagerSingleton +var Loader: LoaderEventsObject +var Options: OptionsEventsObject -var _define_filepaths_dict : Dictionary = { - GameSingleton.get_province_identifier_file_key(): "res://common/map/provinces.json", - GameSingleton.get_water_province_file_key(): "res://common/map/water.json", - GameSingleton.get_region_file_key(): "res://common/map/regions.json", - GameSingleton.get_terrain_variant_file_key(): "res://common/map/terrain.json", - GameSingleton.get_terrain_texture_dir_key(): "res://art/terrain/", - GameSingleton.get_province_image_file_key(): "res://common/map/provinces.png", - GameSingleton.get_terrain_image_file_key(): "res://common/map/terrain.png", - GameSingleton.get_goods_file_key(): "res://common/goods.json", - GameSingleton.get_good_icons_dir_key(): "res://art/economy/goods" -} - -# REQUIREMENTS -# * FS-333, FS-334, FS-335, FS-341 -func load_events(loading_screen: LoadingScreen): - GameSingleton.setup_logger() - loading_screen.update_loading_screen(5) - - # Set this to your Vic2 install dir or a mod's dir to enable compatibility mode - # (this won't work for mods which rely on vanilla map assets, copy missing assets - # into the mod's dir for a temporary fix) - # Usage: OpenVic --compatibility-mode <path> - - var compatibility_mode_path : String = ArgumentParser.get_argument(&"compatibility-mode") - - var start := Time.get_ticks_usec() - - GameDebug = GameDebugSingleton.new() - loading_screen.update_loading_screen(15) - Options = OptionsSingleton.new() - loading_screen.update_loading_screen(25) - Localisation = LocalisationSingleton.new() - loading_screen.update_loading_screen(45) - ShaderManager = ShaderManagerSingleton.new() - loading_screen.update_loading_screen(50, true) - - if compatibility_mode_path: - if GameSingleton.load_defines_compatibility_mode(compatibility_mode_path) != OK: - push_error("Errors loading game defines!") - else: - if GameSingleton.load_defines(_define_filepaths_dict) != OK: - push_error("Errors loading game defines!") - - loading_screen.update_loading_screen(100) - var end := Time.get_ticks_usec() - print("Loading took ", float(end - start) / 1000000, " seconds") - - # change scene in a thread-safe way - get_tree().call_deferred("change_scene_to_file", "res://src/Game/GameMenu.tscn") +func _init(): + Loader = LoaderEventsObject.new() + Options = OptionsEventsObject.new() diff --git a/game/src/Game/Autoload/Events/GameDebug.gd b/game/src/Game/Autoload/Events/GameDebug.gd deleted file mode 100644 index 9e18343..0000000 --- a/game/src/Game/Autoload/Events/GameDebug.gd +++ /dev/null @@ -1,9 +0,0 @@ -extends RefCounted -class_name GameDebugSingleton - -func set_debug_mode(value : bool) -> void: - ArgumentParser.set_argument(&"game-debug", value) - print("Set debug mode to: ", value) - -func is_debug_mode() -> bool: - return ArgumentParser.get_argument(&"game-debug", false) diff --git a/game/src/Game/Autoload/Events/Loader.gd b/game/src/Game/Autoload/Events/Loader.gd new file mode 100644 index 0000000..c17dc6f --- /dev/null +++ b/game/src/Game/Autoload/Events/Loader.gd @@ -0,0 +1,6 @@ +class_name LoaderEventsObject +extends RefCounted + +signal startup_load_begun() +signal startup_load_changed(percentage : float) +signal startup_load_ended() diff --git a/game/src/Game/Autoload/Events/Localisation.gd b/game/src/Game/Autoload/Events/Localisation.gd deleted file mode 100644 index 37b550d..0000000 --- a/game/src/Game/Autoload/Events/Localisation.gd +++ /dev/null @@ -1,34 +0,0 @@ -extends RefCounted -class_name LocalisationSingleton - -# REQUIREMENTS -# * SS-59, SS-60, SS-61 -func get_default_locale() -> String: - var locales := TranslationServer.get_loaded_locales() - var default_locale := OS.get_locale() - if default_locale in locales: - return default_locale - var default_language := OS.get_locale_language() - for locale in locales: - if locale.begins_with(default_language): - return default_language - return ProjectSettings.get_setting("internationalization/locale/fallback", "en_GB") - -func load_localisation(dir_path : String) -> void: - if LoadLocalisation.load_localisation_dir(dir_path) != OK: - push_error("Error loading localisation directory: ", dir_path) - var loaded_locales : PackedStringArray = TranslationServer.get_loaded_locales() - print("Loaded ", loaded_locales.size(), " locales: ", loaded_locales) - -# REQUIREMENTS -# * SS-57 -# * FS-17 -func _init(): - var localisation_dir_path : String = ProjectSettings.get_setting("internationalization/locale/localisation_path", "") - if localisation_dir_path.is_empty(): - push_error("Missing localisation_path setting!") - else: - load_localisation(localisation_dir_path) - -func tr_number(num) -> String: - return TextServerManager.get_primary_interface().format_number(str(num)) diff --git a/game/src/Game/Autoload/Events/Options.gd b/game/src/Game/Autoload/Events/Options.gd index 2e9b90b..08f34db 100644 --- a/game/src/Game/Autoload/Events/Options.gd +++ b/game/src/Game/Autoload/Events/Options.gd @@ -1,5 +1,5 @@ +class_name OptionsEventsObject extends RefCounted -class_name OptionsSingleton signal save_settings(save_file: ConfigFile) signal load_settings(load_file: ConfigFile) diff --git a/game/src/Game/Autoload/Events/ShaderManager.gd b/game/src/Game/Autoload/Events/ShaderManager.gd deleted file mode 100644 index 731dc3c..0000000 --- a/game/src/Game/Autoload/Events/ShaderManager.gd +++ /dev/null @@ -1,49 +0,0 @@ -extends RefCounted -class_name ShaderManagerSingleton - -const param_province_shape_tex : StringName = &"province_shape_tex" -const param_province_shape_subdivisions : StringName = &"province_shape_subdivisions" -const param_province_colour_tex : StringName = &"province_colour_tex" -const param_hover_index : StringName = &"hover_index" -const param_selected_index : StringName = &"selected_index" -const param_terrain_tex : StringName = &"terrain_tex" -const param_terrain_tile_factor : StringName = &"terrain_tile_factor" - -func set_up_shader(material : Material, add_cosmetic_textures : bool) -> Error: - # Shader Material - if material == null: - push_error("material is null!") - return FAILED - if not material is ShaderMaterial: - push_error("Invalid map mesh material class: ", material.get_class()) - return FAILED - var shader_material : ShaderMaterial = material - - # Province shape texture - var province_shape_texture := GameSingleton.get_province_shape_texture() - if province_shape_texture == null: - push_error("Failed to get province shape texture!") - return FAILED - shader_material.set_shader_parameter(param_province_shape_tex, province_shape_texture) - var subdivisions := GameSingleton.get_province_shape_image_subdivisions() - if subdivisions.x < 1 or subdivisions.y < 1: - push_error("Invalid province shape image subdivision: ", subdivisions.x, "x", subdivisions.y) - return FAILED - shader_material.set_shader_parameter(param_province_shape_subdivisions, Vector2(subdivisions)) - - if add_cosmetic_textures: - # Province colour texture - var map_province_colour_texture := GameSingleton.get_province_colour_texture() - if map_province_colour_texture == null: - push_error("Failed to get province colour image!") - return FAILED - shader_material.set_shader_parameter(param_province_colour_tex, map_province_colour_texture) - - # Terrain texture - var terrain_texture := GameSingleton.get_terrain_texture() - if terrain_texture == null: - push_error("Failed to get terrain texture!") - return FAILED - shader_material.set_shader_parameter(param_terrain_tex, terrain_texture) - - return OK diff --git a/game/src/Game/Autoload/GameLoader.gd b/game/src/Game/Autoload/GameLoader.gd new file mode 100644 index 0000000..1720e3c --- /dev/null +++ b/game/src/Game/Autoload/GameLoader.gd @@ -0,0 +1,18 @@ +extends Node + +var define_filepaths_dict : Dictionary = { + GameSingleton.get_province_identifier_file_key(): "res://common/map/provinces.json", + GameSingleton.get_water_province_file_key(): "res://common/map/water.json", + GameSingleton.get_region_file_key(): "res://common/map/regions.json", + GameSingleton.get_terrain_variant_file_key(): "res://common/map/terrain.json", + GameSingleton.get_terrain_texture_dir_key(): "res://art/terrain/", + GameSingleton.get_province_image_file_key(): "res://common/map/provinces.png", + GameSingleton.get_terrain_image_file_key(): "res://common/map/terrain.png", + GameSingleton.get_goods_file_key(): "res://common/goods.json", + GameSingleton.get_good_icons_dir_key(): "res://art/economy/goods" +} + +var ShaderManager : ShaderManagerClass + +func _init(): + ShaderManager = ShaderManagerClass.new() |