Adding language switcher to audio settings
This commit is contained in:
parent
41129f0766
commit
b8e1e6ff0f
|
|
@ -20,6 +20,8 @@ var current_music_decay:float = 0
|
||||||
@onready var sfx_slider: Range = %SoundSlider
|
@onready var sfx_slider: Range = %SoundSlider
|
||||||
@onready var speech_slider: Range = %SpeechSlider
|
@onready var speech_slider: Range = %SpeechSlider
|
||||||
@onready var sum_slider: Range = %SumSlider
|
@onready var sum_slider: Range = %SumSlider
|
||||||
|
@onready var text_lang_selector: OptionButton = %InterfaceSelector
|
||||||
|
@onready var speech_lang_selector: OptionButton = %SpeechSelector
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
if current_music_decay > 0:
|
if current_music_decay > 0:
|
||||||
|
|
@ -69,6 +71,8 @@ func update_ui_from_state():
|
||||||
sfx_slider.value = State.sfx_volume
|
sfx_slider.value = State.sfx_volume
|
||||||
speech_slider.value = State.speech_volume
|
speech_slider.value = State.speech_volume
|
||||||
sum_slider.value = State.main_volume
|
sum_slider.value = State.main_volume
|
||||||
|
text_lang_selector.select(State.text_language)
|
||||||
|
speech_lang_selector.select(State.speech_language)
|
||||||
|
|
||||||
func _on_exit_button_pressed() -> void:
|
func _on_exit_button_pressed() -> void:
|
||||||
leave_stage.emit()
|
leave_stage.emit()
|
||||||
|
|
|
||||||
|
|
@ -63,14 +63,14 @@ pressed = true
|
||||||
[sub_resource type="Shortcut" id="Shortcut_0peu0"]
|
[sub_resource type="Shortcut" id="Shortcut_0peu0"]
|
||||||
events = [SubResource("InputEventAction_gy6yb")]
|
events = [SubResource("InputEventAction_gy6yb")]
|
||||||
|
|
||||||
[node name="Audio Settings" type="VBoxContainer"]
|
[node name="Audio and Language" type="VBoxContainer"]
|
||||||
script = ExtResource("1_0lla1")
|
script = ExtResource("1_0lla1")
|
||||||
metadata/_tab_index = 1
|
metadata/_tab_index = 1
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="."]
|
[node name="Label" type="Label" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_type_variation = &"HeaderLarge"
|
theme_type_variation = &"HeaderLarge"
|
||||||
text = "Audio Settings"
|
text = "Audio and Language"
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -161,20 +161,48 @@ max_value = 1.0
|
||||||
step = 0.05
|
step = 0.05
|
||||||
value = 0.5
|
value = 0.5
|
||||||
|
|
||||||
[node name="Audio Sliders" type="HBoxContainer" parent="VBoxContainer"]
|
[node name="I18nLabel" type="Label" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
theme_type_variation = &"HeaderMedium"
|
||||||
|
text = "Language Settings"
|
||||||
|
|
||||||
[node name="Labels" type="VBoxContainer" parent="VBoxContainer/Audio Sliders"]
|
[node name="GridContainer" type="GridContainer" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
columns = 2
|
||||||
|
|
||||||
[node name="Sliders" type="VBoxContainer" parent="VBoxContainer/Audio Sliders"]
|
[node name="Label2" type="Label" parent="GridContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
text = "Interface"
|
||||||
|
|
||||||
[node name="Sounds" type="HBoxContainer" parent="VBoxContainer"]
|
[node name="InterfaceSelector" type="OptionButton" parent="GridContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
selected = 0
|
||||||
|
item_count = 3
|
||||||
|
popup/item_0/text = "use system language"
|
||||||
|
popup/item_1/text = "English"
|
||||||
|
popup/item_1/id = 1
|
||||||
|
popup/item_2/text = "German"
|
||||||
|
popup/item_2/id = 2
|
||||||
|
|
||||||
[node name="Speech" type="HBoxContainer" parent="VBoxContainer"]
|
[node name="Label3" type="Label" parent="GridContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
text = "Voice Lines"
|
||||||
|
|
||||||
|
[node name="SpeechSelector" type="OptionButton" parent="GridContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
selected = 0
|
||||||
|
item_count = 3
|
||||||
|
popup/item_0/text = "use system language"
|
||||||
|
popup/item_1/text = "English"
|
||||||
|
popup/item_1/id = 1
|
||||||
|
popup/item_2/text = "German"
|
||||||
|
popup/item_2/id = 2
|
||||||
|
|
||||||
|
[node name="I18nLabel2" type="Label" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Find Subtitle Settings in Acessability Settings."
|
||||||
|
|
||||||
[node name="confirm_buttons" type="HSplitContainer" parent="."]
|
[node name="confirm_buttons" type="HSplitContainer" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,24 @@ extends Node
|
||||||
@export_file var user_saves_path:String = "user://savegames"
|
@export_file var user_saves_path:String = "user://savegames"
|
||||||
|
|
||||||
@export_group("Acessability")
|
@export_group("Acessability")
|
||||||
|
@export var reduce_motion: bool = false
|
||||||
@export var screen_reader_enabled:bool = false
|
@export var screen_reader_enabled:bool = false
|
||||||
@export var rendering_disabled: bool = false
|
@export var rendering_disabled: bool = false
|
||||||
@export var use_simplified_navigation:bool = false
|
@export var use_simplified_navigation:bool = false
|
||||||
@export var show_navigation_buttons: bool = false
|
@export var show_navigation_buttons: bool = false
|
||||||
|
@export_enum("handwriting", "serif", "legible", "system") var font_style: int = 0
|
||||||
@export_enum("disabled", "text", "cc") var subtitles: int = false
|
@export_enum("disabled", "text", "cc") var subtitles: int = false
|
||||||
@export var reduce_motion: bool = false
|
@export var ui_scaling: float = 1:
|
||||||
|
set(value):
|
||||||
|
ui_scaling = value
|
||||||
|
ProjectSettings.set_setting("gui/theme/default_theme_scale", value)
|
||||||
@export var show_content_notes: bool = false
|
@export var show_content_notes: bool = false
|
||||||
@export var provide_summaries: bool = false
|
@export var provide_summaries: bool = false
|
||||||
@export var allow_skipping: bool = false
|
@export var allow_skipping: bool = false
|
||||||
|
|
||||||
|
# FIXME find a better way to switch fonts!
|
||||||
|
var current_main_theme:Theme = preload("res://logic-scenes/themes/handwriting.theme")
|
||||||
|
|
||||||
@export_group("AudioSettings")
|
@export_group("AudioSettings")
|
||||||
@export var main_volume:float = 1:
|
@export var main_volume:float = 1:
|
||||||
set(volume):
|
set(volume):
|
||||||
|
|
@ -41,12 +49,23 @@ extends Node
|
||||||
set(volume):
|
set(volume):
|
||||||
speech_volume = volume
|
speech_volume = volume
|
||||||
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("text"), linear_to_db(volume))
|
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("text"), linear_to_db(volume))
|
||||||
|
@export_enum("system_locale", "english", "german") var text_language: int = -1:
|
||||||
|
set(value):
|
||||||
|
text_language = value
|
||||||
|
match text_language:
|
||||||
|
0: TranslationServer.set_locale("en")
|
||||||
|
1: TranslationServer.set_locale("de")
|
||||||
|
_: TranslationServer.set_locale(OS.get_locale())
|
||||||
|
@export_enum("system_locale", "english", "german") var speech_language: int = -1:
|
||||||
|
set(value):
|
||||||
|
speech_language = value
|
||||||
|
|
||||||
@export_group("Gameplay Settings")
|
@export_group("Gameplay Settings")
|
||||||
@export var input_sensitivity: float
|
@export var input_sensitivity: float
|
||||||
@export var inverty_y_axis: bool
|
@export var inverty_y_axis: bool
|
||||||
@export_enum("off", "top_left", "top_right", "bottom_left", "bottom_right") var stream_overlay_position: int
|
@export_enum("off", "top_left", "top_right", "bottom_left", "bottom_right") var stream_overlay_position: int
|
||||||
|
|
||||||
|
# for passing VFX settings not contained by project settings to scene environemnt
|
||||||
var ssil_enable:bool = false:
|
var ssil_enable:bool = false:
|
||||||
set(value):
|
set(value):
|
||||||
ssil_enable = value
|
ssil_enable = value
|
||||||
|
|
@ -56,16 +75,12 @@ var sdfgi_enable:bool = false:
|
||||||
sdfgi_enable = value
|
sdfgi_enable = value
|
||||||
environment_settings_changed.emit()
|
environment_settings_changed.emit()
|
||||||
|
|
||||||
var stage_list:Array = []
|
var active_save_game: SaveGame
|
||||||
var focus_locked: bool = false
|
|
||||||
|
|
||||||
signal environment_settings_changed
|
signal environment_settings_changed
|
||||||
signal theme_changed
|
signal theme_changed
|
||||||
|
|
||||||
var current_main_theme:Theme = preload("res://logic-scenes/themes/easy-handwriting.theme"):
|
|
||||||
set(theme):
|
|
||||||
current_main_theme = theme
|
|
||||||
emit_signal("theme_changed", theme)
|
|
||||||
|
|
||||||
func load_user_settings():
|
func load_user_settings():
|
||||||
|
|
||||||
|
|
@ -89,12 +104,14 @@ func load_user_settings():
|
||||||
func save_settings():
|
func save_settings():
|
||||||
var out_dict = {
|
var out_dict = {
|
||||||
"accessability": {
|
"accessability": {
|
||||||
|
"reduce_motion:": reduce_motion,
|
||||||
"screen_reader_enabled": screen_reader_enabled,
|
"screen_reader_enabled": screen_reader_enabled,
|
||||||
"rendering_disabled": rendering_disabled,
|
"rendering_disabled": rendering_disabled,
|
||||||
"use_simplified_navigation": use_simplified_navigation,
|
"use_simplified_navigation": use_simplified_navigation,
|
||||||
"show_navigation_buttons": show_navigation_buttons,
|
"show_navigation_buttons": show_navigation_buttons,
|
||||||
"subtitles": subtitles,
|
"subtitles": subtitles,
|
||||||
"reduce_motion:": reduce_motion,
|
"font_style": font_style,
|
||||||
|
"ui_scaling": ui_scaling,
|
||||||
"show_content_notes:": show_content_notes,
|
"show_content_notes:": show_content_notes,
|
||||||
"provide_summaries:": provide_summaries,
|
"provide_summaries:": provide_summaries,
|
||||||
"allow_skipping:": allow_skipping
|
"allow_skipping:": allow_skipping
|
||||||
|
|
@ -130,6 +147,9 @@ func _ready():
|
||||||
|
|
||||||
#region focus handling (called staging to avoid name colisions)
|
#region focus handling (called staging to avoid name colisions)
|
||||||
|
|
||||||
|
var stage_list:Array = []
|
||||||
|
var focus_locked: bool = false
|
||||||
|
|
||||||
# Intented for use when an actor wants focus for itself, can reclaim focus, thus dropping the stack that focused.
|
# Intented for use when an actor wants focus for itself, can reclaim focus, thus dropping the stack that focused.
|
||||||
func take_stage(actor: Object, reclaim: bool = false) -> bool:
|
func take_stage(actor: Object, reclaim: bool = false) -> bool:
|
||||||
if focus_locked: return false
|
if focus_locked: return false
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue