Unified settings management and sound fixes
- fix: speech was not paused during pause menu - fix: allow sound levels to reach min value 0.0 (=muted) - fix: crash was happening when switch language during the game
This commit is contained in:
committed by
Duncan Brown
parent
4ef86c6cc3
commit
04348147b9
@@ -6,6 +6,10 @@ extends Control
|
||||
signal back_button_pressed
|
||||
|
||||
|
||||
# Custom setting key
|
||||
const CUSTOM_SETTING: String = "a_custom_setting"
|
||||
|
||||
|
||||
# The current settings
|
||||
var backup_settings
|
||||
|
||||
@@ -39,10 +43,11 @@ func _ready() -> void:
|
||||
_flags_container.add_child(_lang)
|
||||
_lang.connect("gui_input", self, "_on_language_input", [lang])
|
||||
|
||||
|
||||
# Show the options
|
||||
func show():
|
||||
backup_settings = escoria.settings.duplicate()
|
||||
initialize_options(escoria.settings)
|
||||
backup_settings = escoria.settings_manager.get_settings()
|
||||
initialize_options(backup_settings)
|
||||
visible = true
|
||||
|
||||
|
||||
@@ -66,7 +71,10 @@ func initialize_options(p_settings):
|
||||
func _on_language_input(event: InputEvent, language: String):
|
||||
if event.is_pressed():
|
||||
TranslationServer.set_locale(language)
|
||||
escoria.settings["text_lang"] = language
|
||||
ESCProjectSettingsManager.set_setting(
|
||||
ESCProjectSettingsManager.TEXT_LANG,
|
||||
language
|
||||
)
|
||||
settings_changed = true
|
||||
|
||||
|
||||
@@ -75,9 +83,15 @@ func _on_language_input(event: InputEvent, language: String):
|
||||
# #### Parameters
|
||||
# - value: The new volume level
|
||||
func _on_sound_volume_changed(value):
|
||||
escoria.settings["sfx_volume"] = value
|
||||
escoria.apply_settings(escoria.settings)
|
||||
settings_changed = true
|
||||
if ESCProjectSettingsManager.get_setting(
|
||||
ESCProjectSettingsManager.SFX_VOLUME
|
||||
) != value:
|
||||
ESCProjectSettingsManager.set_setting(
|
||||
ESCProjectSettingsManager.SFX_VOLUME,
|
||||
value
|
||||
)
|
||||
escoria.settings_manager.apply_settings()
|
||||
settings_changed = true
|
||||
|
||||
|
||||
# Music volume was changed
|
||||
@@ -85,9 +99,15 @@ func _on_sound_volume_changed(value):
|
||||
# #### Parameters
|
||||
# - value: The new volume level
|
||||
func _on_music_volume_changed(value):
|
||||
escoria.settings["music_volume"] = value
|
||||
escoria.apply_settings(escoria.settings)
|
||||
settings_changed = true
|
||||
if ESCProjectSettingsManager.get_setting(
|
||||
ESCProjectSettingsManager.MUSIC_VOLUME
|
||||
) != value:
|
||||
ESCProjectSettingsManager.set_setting(
|
||||
ESCProjectSettingsManager.MUSIC_VOLUME,
|
||||
value
|
||||
)
|
||||
escoria.settings_manager.apply_settings()
|
||||
settings_changed = true
|
||||
|
||||
|
||||
# General volume was changed
|
||||
@@ -95,9 +115,15 @@ func _on_music_volume_changed(value):
|
||||
# #### Parameters
|
||||
# - value: The new volume level
|
||||
func _on_general_volume_changed(value):
|
||||
escoria.settings["master_volume"] = value
|
||||
escoria.apply_settings(escoria.settings)
|
||||
settings_changed = true
|
||||
if ESCProjectSettingsManager.get_setting(
|
||||
ESCProjectSettingsManager.MASTER_VOLUME
|
||||
) != value:
|
||||
ESCProjectSettingsManager.set_setting(
|
||||
ESCProjectSettingsManager.MASTER_VOLUME,
|
||||
value
|
||||
)
|
||||
escoria.settings_manager.apply_settings()
|
||||
settings_changed = true
|
||||
|
||||
|
||||
# Speech volume was changed
|
||||
@@ -105,21 +131,27 @@ func _on_general_volume_changed(value):
|
||||
# #### Parameters
|
||||
# - value: The new volume level
|
||||
func _on_speech_volume_value_changed(value: float) -> void:
|
||||
escoria.settings["speech_volume"] = value
|
||||
escoria.apply_settings(escoria.settings)
|
||||
settings_changed = true
|
||||
if ESCProjectSettingsManager.get_setting(
|
||||
ESCProjectSettingsManager.SPEECH_VOLUME
|
||||
) != value:
|
||||
ESCProjectSettingsManager.set_setting(
|
||||
ESCProjectSettingsManager.SPEECH_VOLUME,
|
||||
value
|
||||
)
|
||||
escoria.settings_manager.apply_settings()
|
||||
settings_changed = true
|
||||
|
||||
|
||||
# Save the settings
|
||||
func _on_apply_pressed():
|
||||
escoria.settings.custom_settings["a_custom_setting"] = 100
|
||||
escoria.save_manager.save_settings()
|
||||
escoria.settings_manager.custom_settings[CUSTOM_SETTING] = 100
|
||||
escoria.settings_manager.save_settings()
|
||||
settings_changed = false
|
||||
emit_signal("back_button_pressed")
|
||||
|
||||
|
||||
# The back button was pressed
|
||||
func _on_back_pressed():
|
||||
escoria.settings = backup_settings
|
||||
escoria.apply_settings(escoria.settings)
|
||||
escoria.settings_manager.save_settings_resource_to_project_settings(backup_settings)
|
||||
escoria.settings_manager.apply_settings()
|
||||
emit_signal("back_button_pressed")
|
||||
|
||||
@@ -7,9 +7,6 @@
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
script = ExtResource( 4 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Panel" type="Panel" parent="."]
|
||||
anchor_right = 1.0
|
||||
@@ -86,10 +83,8 @@ margin_top = 79.0
|
||||
margin_right = 457.0
|
||||
margin_bottom = 95.0
|
||||
size_flags_horizontal = 3
|
||||
min_value = 0.001
|
||||
max_value = 1.0
|
||||
step = 0.001
|
||||
value = 0.001
|
||||
|
||||
[node name="label3" type="Label" parent="VBoxContainer/MarginContainer/options"]
|
||||
margin_top = 100.0
|
||||
@@ -103,10 +98,8 @@ margin_top = 99.0
|
||||
margin_right = 457.0
|
||||
margin_bottom = 115.0
|
||||
size_flags_horizontal = 3
|
||||
min_value = 0.001
|
||||
max_value = 1.0
|
||||
step = 0.001
|
||||
value = 0.001
|
||||
|
||||
[node name="label4" type="Label" parent="VBoxContainer/MarginContainer/options"]
|
||||
margin_top = 120.0
|
||||
@@ -120,10 +113,8 @@ margin_top = 119.0
|
||||
margin_right = 457.0
|
||||
margin_bottom = 135.0
|
||||
size_flags_horizontal = 3
|
||||
min_value = 0.001
|
||||
max_value = 1.0
|
||||
step = 0.001
|
||||
value = 0.001
|
||||
|
||||
[node name="label5" type="Label" parent="VBoxContainer/MarginContainer/options"]
|
||||
margin_top = 140.0
|
||||
@@ -137,10 +128,8 @@ margin_top = 139.0
|
||||
margin_right = 457.0
|
||||
margin_bottom = 155.0
|
||||
size_flags_horizontal = 3
|
||||
min_value = 0.001
|
||||
max_value = 1.0
|
||||
step = 0.001
|
||||
value = 0.001
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
|
||||
margin_top = 539.0
|
||||
|
||||
Reference in New Issue
Block a user