diff options
Diffstat (limited to 'game/src/Game/GlobalClass')
-rw-r--r-- | game/src/Game/GlobalClass/GameDebug.gd | 26 | ||||
-rw-r--r-- | game/src/Game/GlobalClass/Localisation.gd | 34 | ||||
-rw-r--r-- | game/src/Game/GlobalClass/ShaderManager.gd | 49 |
3 files changed, 109 insertions, 0 deletions
diff --git a/game/src/Game/GlobalClass/GameDebug.gd b/game/src/Game/GlobalClass/GameDebug.gd new file mode 100644 index 0000000..08d2b8b --- /dev/null +++ b/game/src/Game/GlobalClass/GameDebug.gd @@ -0,0 +1,26 @@ +class_name GameDebug +extends RefCounted + +static var _singleton : GameDebug + +static var debug_mode : bool: + get = is_debug_mode, set = set_debug_mode + +static func set_debug_mode(value : bool) -> void: + if _singleton == null: + push_warning("Debug mode could not be set.") + return + _singleton._set_debug_mode(value) + +static func is_debug_mode() -> bool: + if _singleton == null: + push_warning("Could not get debug mode, returning false.") + return false + return _singleton._is_debug_mode() + +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/GlobalClass/Localisation.gd b/game/src/Game/GlobalClass/Localisation.gd new file mode 100644 index 0000000..946dc50 --- /dev/null +++ b/game/src/Game/GlobalClass/Localisation.gd @@ -0,0 +1,34 @@ +class_name Localisation +extends RefCounted + +# REQUIREMENTS +# * SS-59, SS-60, SS-61 +static 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") + +static 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 +static func initialize(): + var localisation_dir_path : String = ProjectSettings.get_setting("internationalization/locale/localisation_path", "") + if localisation_dir_path.is_empty(): + push_error("internationalization/locale/localisation_path setting is empty!") + else: + Localisation.load_localisation(localisation_dir_path) + +static func tr_number(num) -> String: + return TextServerManager.get_primary_interface().format_number(str(num)) diff --git a/game/src/Game/GlobalClass/ShaderManager.gd b/game/src/Game/GlobalClass/ShaderManager.gd new file mode 100644 index 0000000..fd91e31 --- /dev/null +++ b/game/src/Game/GlobalClass/ShaderManager.gd @@ -0,0 +1,49 @@ +class_name ShaderManagerClass +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 |