summaryrefslogtreecommitdiff
path: root/addons/escoria-core/ui_library/menus/options
diff options
context:
space:
mode:
Diffstat (limited to 'addons/escoria-core/ui_library/menus/options')
-rw-r--r--addons/escoria-core/ui_library/menus/options/flags/de.pngbin0 -> 2245 bytes
-rw-r--r--addons/escoria-core/ui_library/menus/options/flags/de.png.import40
-rw-r--r--addons/escoria-core/ui_library/menus/options/flags/en.pngbin0 -> 8760 bytes
-rw-r--r--addons/escoria-core/ui_library/menus/options/flags/en.png.import40
-rw-r--r--addons/escoria-core/ui_library/menus/options/flags/es.pngbin0 -> 5210 bytes
-rw-r--r--addons/escoria-core/ui_library/menus/options/flags/es.png.import40
-rw-r--r--addons/escoria-core/ui_library/menus/options/flags/fr.pngbin0 -> 1840 bytes
-rw-r--r--addons/escoria-core/ui_library/menus/options/flags/fr.png.import40
-rw-r--r--addons/escoria-core/ui_library/menus/options/options.gd190
-rw-r--r--addons/escoria-core/ui_library/menus/options/options.gd.uid1
-rw-r--r--addons/escoria-core/ui_library/menus/options/options.tscn136
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
new file mode 100644
index 0000000..4fe98a8
--- /dev/null
+++ b/addons/escoria-core/ui_library/menus/options/flags/de.png
Binary files differ
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
new file mode 100644
index 0000000..0589284
--- /dev/null
+++ b/addons/escoria-core/ui_library/menus/options/flags/en.png
Binary files differ
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
new file mode 100644
index 0000000..7178ce4
--- /dev/null
+++ b/addons/escoria-core/ui_library/menus/options/flags/es.png
Binary files differ
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
new file mode 100644
index 0000000..fcaf2cc
--- /dev/null
+++ b/addons/escoria-core/ui_library/menus/options/flags/fr.png
Binary files differ
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"]