cambios
This commit is contained in:
157
game/ui/menus/options/options.gd
Normal file
157
game/ui/menus/options/options.gd
Normal file
@@ -0,0 +1,157 @@
|
||||
# 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 settings_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", self, "_on_language_input", [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"]
|
||||
|
||||
|
||||
# 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
|
||||
)
|
||||
settings_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()
|
||||
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()
|
||||
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()
|
||||
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()
|
||||
settings_changed = true
|
||||
|
||||
|
||||
# Save the settings
|
||||
func _on_apply_pressed():
|
||||
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_manager.save_settings_resource_to_project_settings(backup_settings)
|
||||
escoria.settings_manager.apply_settings()
|
||||
emit_signal("back_button_pressed")
|
||||
Reference in New Issue
Block a user