diff options
Diffstat (limited to 'addons/escoria-core/ui_library/menus/options')
| -rw-r--r-- | addons/escoria-core/ui_library/menus/options/flags/de.png | bin | 0 -> 2245 bytes | |||
| -rw-r--r-- | addons/escoria-core/ui_library/menus/options/flags/de.png.import | 40 | ||||
| -rw-r--r-- | addons/escoria-core/ui_library/menus/options/flags/en.png | bin | 0 -> 8760 bytes | |||
| -rw-r--r-- | addons/escoria-core/ui_library/menus/options/flags/en.png.import | 40 | ||||
| -rw-r--r-- | addons/escoria-core/ui_library/menus/options/flags/es.png | bin | 0 -> 5210 bytes | |||
| -rw-r--r-- | addons/escoria-core/ui_library/menus/options/flags/es.png.import | 40 | ||||
| -rw-r--r-- | addons/escoria-core/ui_library/menus/options/flags/fr.png | bin | 0 -> 1840 bytes | |||
| -rw-r--r-- | addons/escoria-core/ui_library/menus/options/flags/fr.png.import | 40 | ||||
| -rw-r--r-- | addons/escoria-core/ui_library/menus/options/options.gd | 190 | ||||
| -rw-r--r-- | addons/escoria-core/ui_library/menus/options/options.gd.uid | 1 | ||||
| -rw-r--r-- | addons/escoria-core/ui_library/menus/options/options.tscn | 136 |
11 files changed, 487 insertions, 0 deletions
diff --git a/addons/escoria-core/ui_library/menus/options/flags/de.png b/addons/escoria-core/ui_library/menus/options/flags/de.png Binary files differnew file mode 100644 index 0000000..4fe98a8 --- /dev/null +++ b/addons/escoria-core/ui_library/menus/options/flags/de.png diff --git a/addons/escoria-core/ui_library/menus/options/flags/de.png.import b/addons/escoria-core/ui_library/menus/options/flags/de.png.import new file mode 100644 index 0000000..f4b4dc8 --- /dev/null +++ b/addons/escoria-core/ui_library/menus/options/flags/de.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://r6b3dp6ipv5k" +path="res://.godot/imported/de.png-eb10e96b44c694832a61fe6e6648faac.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/escoria-core/ui_library/menus/options/flags/de.png" +dest_files=["res://.godot/imported/de.png-eb10e96b44c694832a61fe6e6648faac.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/escoria-core/ui_library/menus/options/flags/en.png b/addons/escoria-core/ui_library/menus/options/flags/en.png Binary files differnew file mode 100644 index 0000000..0589284 --- /dev/null +++ b/addons/escoria-core/ui_library/menus/options/flags/en.png diff --git a/addons/escoria-core/ui_library/menus/options/flags/en.png.import b/addons/escoria-core/ui_library/menus/options/flags/en.png.import new file mode 100644 index 0000000..309ad2b --- /dev/null +++ b/addons/escoria-core/ui_library/menus/options/flags/en.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxuxfcyqd81c2" +path="res://.godot/imported/en.png-e3d7ed70a1e59fdf7b47a2d8c96ff41f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/escoria-core/ui_library/menus/options/flags/en.png" +dest_files=["res://.godot/imported/en.png-e3d7ed70a1e59fdf7b47a2d8c96ff41f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/escoria-core/ui_library/menus/options/flags/es.png b/addons/escoria-core/ui_library/menus/options/flags/es.png Binary files differnew file mode 100644 index 0000000..7178ce4 --- /dev/null +++ b/addons/escoria-core/ui_library/menus/options/flags/es.png diff --git a/addons/escoria-core/ui_library/menus/options/flags/es.png.import b/addons/escoria-core/ui_library/menus/options/flags/es.png.import new file mode 100644 index 0000000..378230c --- /dev/null +++ b/addons/escoria-core/ui_library/menus/options/flags/es.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdw1c55s4iaf4" +path="res://.godot/imported/es.png-90c18482f305496440586f74957db9fb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/escoria-core/ui_library/menus/options/flags/es.png" +dest_files=["res://.godot/imported/es.png-90c18482f305496440586f74957db9fb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/escoria-core/ui_library/menus/options/flags/fr.png b/addons/escoria-core/ui_library/menus/options/flags/fr.png Binary files differnew file mode 100644 index 0000000..fcaf2cc --- /dev/null +++ b/addons/escoria-core/ui_library/menus/options/flags/fr.png diff --git a/addons/escoria-core/ui_library/menus/options/flags/fr.png.import b/addons/escoria-core/ui_library/menus/options/flags/fr.png.import new file mode 100644 index 0000000..a279aa7 --- /dev/null +++ b/addons/escoria-core/ui_library/menus/options/flags/fr.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfixfxtbgelrb" +path="res://.godot/imported/fr.png-6fb37573278571598430825ea325f0e3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/escoria-core/ui_library/menus/options/flags/fr.png" +dest_files=["res://.godot/imported/fr.png-6fb37573278571598430825ea325f0e3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/escoria-core/ui_library/menus/options/options.gd b/addons/escoria-core/ui_library/menus/options/options.gd new file mode 100644 index 0000000..32a9758 --- /dev/null +++ b/addons/escoria-core/ui_library/menus/options/options.gd @@ -0,0 +1,190 @@ +# An options menu +extends Control + + +# The back button was pressed +signal back_button_pressed + + +# Custom setting key +const CUSTOM_SETTING: String = "a_custom_setting" + + +# The current settings +var backup_settings + + +# A list of languages already added to the language selection +var _loaded_languages: Array = [] + + +# The settings changed +@onready var changed = false + + +# Initialize the flags +func _ready() -> void: + var _flags_container: HBoxContainer = \ + $VBoxContainer/MarginContainer/options/flags + for child in _flags_container.get_children(): + _flags_container.remove_child(child) + child.queue_free() + + _loaded_languages = [] + + for lang in TranslationServer.get_loaded_locales(): + if not lang in _loaded_languages: + _loaded_languages.append(lang) + var _lang = TextureRect.new() + _lang.texture = load( + "res://addons/escoria-core/ui_library" + \ + "/menus/options/flags/%s.png" % lang + ) + _flags_container.add_child(_lang) + _lang.connect("gui_input", Callable(self, "_on_language_input").bind(lang)) + + +# Show the options +func show(): + backup_settings = escoria.settings_manager.get_settings() + initialize_options(backup_settings) + visible = true + + +# Set the sliders to the values of the settings +# +# #### Parameters +# - p_settings: The settings to use +func initialize_options(p_settings): + var _options = $VBoxContainer/MarginContainer/options + _options.get_node("general_volume").value = p_settings["master_volume"] + _options.get_node("sound_volume").value = p_settings["sfx_volume"] + _options.get_node("music_volume").value = p_settings["music_volume"] + _options.get_node("speech_volume").value = p_settings["speech_volume"] + _options.get_node("ambient_volume").value = p_settings["ambient_volume"] + _options.get_node("fullscreen").set_pressed_no_signal(p_settings["fullscreen"]) + + +# The language was changed +# +# #### Parameters +# - event: The input event from the flag +# - language: The language to set +func _on_language_input(event: InputEvent, language: String): + if event.is_pressed(): + TranslationServer.set_locale(language) + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.TEXT_LANG, + language + ) + changed = true + + +# Sound volume was changed +# +# #### Parameters +# - value: The new volume level +func _on_sound_volume_changed(value): + if ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.SFX_VOLUME + ) != value: + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.SFX_VOLUME, + value + ) + escoria.settings_manager.apply_settings() + changed = true + + +# Music volume was changed +# +# #### Parameters +# - value: The new volume level +func _on_music_volume_changed(value): + if ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.MUSIC_VOLUME + ) != value: + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.MUSIC_VOLUME, + value + ) + escoria.settings_manager.apply_settings() + changed = true + + +# General volume was changed +# +# #### Parameters +# - value: The new volume level +func _on_general_volume_changed(value): + if ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.MASTER_VOLUME + ) != value: + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.MASTER_VOLUME, + value + ) + escoria.settings_manager.apply_settings() + changed = true + + +# Speech volume was changed +# +# #### Parameters +# - value: The new volume level +func _on_speech_volume_value_changed(value: float) -> void: + if ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.SPEECH_VOLUME + ) != value: + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.SPEECH_VOLUME, + value + ) + escoria.settings_manager.apply_settings() + changed = true + +# Ambient volume was changed +# +# #### Parameters +# - value: The new volume level +func _on_ambient_volume_value_changed(value: float) -> void: + if ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.AMBIENT_VOLUME + ) != value: + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.AMBIENT_VOLUME, + value + ) + escoria.settings_manager.apply_settings() + changed = true + + +# Fullscreen was changed +# +# #### Parameters +# - button_pressed: Fullscreen (true) or windowed (false) +func _on_fullscreen_toggled(button_pressed: bool) -> void: + if ESCProjectSettingsManager.get_setting( + ESCProjectSettingsManager.FULLSCREEN + ) != button_pressed: + ESCProjectSettingsManager.set_setting( + ESCProjectSettingsManager.FULLSCREEN, + button_pressed + ) + escoria.settings_manager.apply_settings() + changed = true + + +# Save the settings +func _on_apply_pressed(): + escoria.settings_manager.custom_settings[CUSTOM_SETTING] = 100 + escoria.settings_manager.save_settings() + changed = false + back_button_pressed.emit() + + +# The back button was pressed +func _on_back_pressed(): + escoria.settings_manager.save_settings_resource_to_project_settings(backup_settings) + escoria.settings_manager.apply_settings() + back_button_pressed.emit() diff --git a/addons/escoria-core/ui_library/menus/options/options.gd.uid b/addons/escoria-core/ui_library/menus/options/options.gd.uid new file mode 100644 index 0000000..b7bb93d --- /dev/null +++ b/addons/escoria-core/ui_library/menus/options/options.gd.uid @@ -0,0 +1 @@ +uid://btyrwps5h2qn7 diff --git a/addons/escoria-core/ui_library/menus/options/options.tscn b/addons/escoria-core/ui_library/menus/options/options.tscn new file mode 100644 index 0000000..133315c --- /dev/null +++ b/addons/escoria-core/ui_library/menus/options/options.tscn @@ -0,0 +1,136 @@ +[gd_scene load_steps=3 format=3 uid="uid://bhcfnds3yy2yv"] + +[ext_resource type="Texture2D" uid="uid://r6b3dp6ipv5k" path="res://addons/escoria-core/ui_library/menus/options/flags/de.png" id="1"] +[ext_resource type="Script" uid="uid://btyrwps5h2qn7" path="res://addons/escoria-core/ui_library/menus/options/options.gd" id="4"] + +[node name="options" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("4") + +[node name="Panel" type="ColorRect" parent="."] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color(0.270588, 0.270588, 0.270588, 1) + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +alignment = 1 + +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 6 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="options" type="GridContainer" parent="VBoxContainer/MarginContainer"] +layout_mode = 2 +size_flags_vertical = 6 +theme_override_constants/h_separation = 40 +columns = 2 + +[node name="label" type="Label" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +text = "OPTIONS_LANGUAGE" + +[node name="flags" type="HBoxContainer" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/separation = 30 +alignment = 1 + +[node name="TextureRect2" type="TextureRect" parent="VBoxContainer/MarginContainer/options/flags"] +layout_mode = 2 +texture = ExtResource("1") + +[node name="TextureRect3" type="TextureRect" parent="VBoxContainer/MarginContainer/options/flags"] +layout_mode = 2 +texture = ExtResource("1") + +[node name="label2" type="Label" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +text = "GENERAL_VOLUME" + +[node name="general_volume" type="HSlider" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 1.0 +step = 0.001 + +[node name="label3" type="Label" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +text = "SOUND_VOLUME" + +[node name="sound_volume" type="HSlider" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 1.0 +step = 0.001 + +[node name="label4" type="Label" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +text = "MUSIC_VOLUME" + +[node name="music_volume" type="HSlider" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 1.0 +step = 0.001 + +[node name="label5" type="Label" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +text = "SPEECH_VOLUME" + +[node name="speech_volume" type="HSlider" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 1.0 +step = 0.001 + +[node name="label6" type="Label" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +text = "AMBIENT_VOLUME" + +[node name="ambient_volume" type="HSlider" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 1.0 +step = 0.001 + +[node name="label7" type="Label" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 +text = "FULLSCREEN" + +[node name="fullscreen" type="CheckBox" parent="VBoxContainer/MarginContainer/options"] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 20 +alignment = 1 + +[node name="back" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "OPTIONS_BACK" + +[node name="apply" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "APPLY" + +[connection signal="value_changed" from="VBoxContainer/MarginContainer/options/general_volume" to="." method="_on_general_volume_changed"] +[connection signal="value_changed" from="VBoxContainer/MarginContainer/options/sound_volume" to="." method="_on_sound_volume_changed"] +[connection signal="value_changed" from="VBoxContainer/MarginContainer/options/music_volume" to="." method="_on_music_volume_changed"] +[connection signal="value_changed" from="VBoxContainer/MarginContainer/options/speech_volume" to="." method="_on_speech_volume_value_changed"] +[connection signal="value_changed" from="VBoxContainer/MarginContainer/options/ambient_volume" to="." method="_on_ambient_volume_value_changed"] +[connection signal="toggled" from="VBoxContainer/MarginContainer/options/fullscreen" to="." method="_on_fullscreen_toggled"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/back" to="." method="_on_back_pressed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/apply" to="." method="_on_apply_pressed"] |
