diff options
Diffstat (limited to 'game/src/Game/Autoload/Events')
-rw-r--r-- | game/src/Game/Autoload/Events/GameDebug.gd | 21 | ||||
-rw-r--r-- | game/src/Game/Autoload/Events/Localisation.gd | 30 | ||||
-rw-r--r-- | game/src/Game/Autoload/Events/Options.gd | 30 | ||||
-rw-r--r-- | game/src/Game/Autoload/Events/ShaderManager.gd | 48 |
4 files changed, 129 insertions, 0 deletions
diff --git a/game/src/Game/Autoload/Events/GameDebug.gd b/game/src/Game/Autoload/Events/GameDebug.gd new file mode 100644 index 0000000..df7a23a --- /dev/null +++ b/game/src/Game/Autoload/Events/GameDebug.gd @@ -0,0 +1,21 @@ +extends RefCounted + +# REQUIREMENTS: +# * SS-56 +func _init(): + for engine_args in OS.get_cmdline_args(): + match(engine_args): + "--game-debug": + set_debug_mode(true) + + for engine_args in OS.get_cmdline_user_args(): + match(engine_args): + "--game-debug", "-d", "--debug", "--debug-mode": + set_debug_mode(true) + +func set_debug_mode(value : bool) -> void: + ProjectSettings.set_setting("openvic/debug/enabled", value) + print("Set debug mode to: ", value) + +func is_debug_mode() -> bool: + return ProjectSettings.get_setting("openvic/debug/enabled", false) diff --git a/game/src/Game/Autoload/Events/Localisation.gd b/game/src/Game/Autoload/Events/Localisation.gd new file mode 100644 index 0000000..eda7e51 --- /dev/null +++ b/game/src/Game/Autoload/Events/Localisation.gd @@ -0,0 +1,30 @@ +extends RefCounted + +# 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: + print("loaded locales: ", TranslationServer.get_loaded_locales()) + else: + push_error("Failed to load localisation directory: ", dir_path) + +# 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) diff --git a/game/src/Game/Autoload/Events/Options.gd b/game/src/Game/Autoload/Events/Options.gd new file mode 100644 index 0000000..fbeccef --- /dev/null +++ b/game/src/Game/Autoload/Events/Options.gd @@ -0,0 +1,30 @@ +extends RefCounted + +signal save_settings(save_file: ConfigFile) +signal load_settings(load_file: ConfigFile) +signal reset_settings() + +func load_settings_from_file() -> void: + load_settings.emit(_settings_file) + +# REQUIREMENTS +# * SS-11 +func save_settings_to_file() -> void: + save_settings.emit(_settings_file) + _settings_file.save(_settings_file_path) + +func try_reset_settings() -> void: + reset_settings.emit() + +const settings_file_path_setting : String = "openvic/settings/settings_file_path" +const settings_file_path_default : String = "user://settings.cfg" + +var _settings_file_path : String = ProjectSettings.get_setting(settings_file_path_setting, settings_file_path_default) +var _settings_file := ConfigFile.new() + +# REQUIREMENTS +# * SS-9 +# * UIFUN-7 +func _init(): + if FileAccess.file_exists(_settings_file_path): + _settings_file.load(_settings_file_path) diff --git a/game/src/Game/Autoload/Events/ShaderManager.gd b/game/src/Game/Autoload/Events/ShaderManager.gd new file mode 100644 index 0000000..a503c52 --- /dev/null +++ b/game/src/Game/Autoload/Events/ShaderManager.gd @@ -0,0 +1,48 @@ +extends RefCounted + +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 |