mirror of
https://github.com/deunix-educ/aventuriers-des-mots.git
synced 2026-10-13 02:11:58 +02:00
Add sound effects, ambient music and volume mixing (0.5.0)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -28,6 +28,7 @@ func _ready() -> void:
|
||||
var mission := ExerciseEngine.get_mission(GameManager.pending_mission_id)
|
||||
var rule := ExerciseEngine.get_rule(mission.get("rule_id", ""))
|
||||
_backdrop.kind = "marsh" if rule.get("level", "CE1") == "CE2" else "forest"
|
||||
AudioManager.play_music(SoundCatalog.music_for_level(rule.get("level", "CE1")))
|
||||
|
||||
var summary := ProgressManager.complete_mission(
|
||||
GameManager.pending_mission_id, GameManager.last_outcomes
|
||||
@@ -47,6 +48,10 @@ func _ready() -> void:
|
||||
"%s %d" % [UIText.get_text("reward_screen.total_label"), summary["total_stars"]]
|
||||
)
|
||||
_show_new_items(summary["new_items"])
|
||||
if summary["stars"] == MissionScoring.MAX_STARS or not summary["new_items"].is_empty():
|
||||
get_tree().create_timer(0.25 + 0.2 * MissionScoring.MAX_STARS).timeout.connect(
|
||||
AudioManager.play_sfx.bind("fanfare")
|
||||
)
|
||||
|
||||
_collection_button.text = UIText.get_text("reward_screen.collection_button")
|
||||
_collection_button.pressed.connect(_on_collection_pressed)
|
||||
@@ -64,6 +69,9 @@ func _show_stars(earned: int) -> void:
|
||||
_stars_row.add_child(star)
|
||||
if i < earned:
|
||||
Motion.pop_in(star, 0.25 + 0.2 * i)
|
||||
get_tree().create_timer(0.25 + 0.2 * i).timeout.connect(
|
||||
AudioManager.play_sfx.bind("star")
|
||||
)
|
||||
|
||||
|
||||
func _show_new_items(new_items: Array) -> void:
|
||||
|
||||
+32
-5
@@ -7,6 +7,10 @@ extends Control
|
||||
@onready var _title_label: Label = %TitleLabel
|
||||
@onready var _volume_label: Label = %VolumeLabel
|
||||
@onready var _volume_slider: HSlider = %VolumeSlider
|
||||
@onready var _music_label: Label = %MusicLabel
|
||||
@onready var _music_slider: HSlider = %MusicSlider
|
||||
@onready var _effects_label: Label = %EffectsLabel
|
||||
@onready var _effects_slider: HSlider = %EffectsSlider
|
||||
@onready var _text_size_label: Label = %TextSizeLabel
|
||||
@onready var _text_size_box: HBoxContainer = %TextSizeBox
|
||||
@onready var _animations_label: Label = %AnimationsLabel
|
||||
@@ -23,11 +27,14 @@ func _ready() -> void:
|
||||
_adult_button.text = UIText.get_text("settings.adult_button")
|
||||
_back_button.text = UIText.get_text("settings.back_button")
|
||||
|
||||
_volume_slider.min_value = 0.0
|
||||
_volume_slider.max_value = 1.0
|
||||
_volume_slider.step = 1.0 / AppSettings.VOLUME_STEPS
|
||||
_volume_slider.value = SettingsManager.volume
|
||||
_volume_slider.value_changed.connect(_on_volume_changed)
|
||||
_music_label.text = UIText.get_text("settings.music_label")
|
||||
_effects_label.text = UIText.get_text("settings.effects_label")
|
||||
_setup_slider(_volume_slider, SettingsManager.volume, _on_volume_changed)
|
||||
_setup_slider(_music_slider, SettingsManager.music_volume, _on_music_changed)
|
||||
_setup_slider(_effects_slider, SettingsManager.effects_volume, _on_effects_changed)
|
||||
# Un petit son a la fin du geste fait entendre le niveau choisi.
|
||||
_volume_slider.drag_ended.connect(_on_drag_ended)
|
||||
_effects_slider.drag_ended.connect(_on_drag_ended)
|
||||
|
||||
_build_text_size_buttons()
|
||||
|
||||
@@ -65,10 +72,30 @@ func _build_animation_buttons() -> void:
|
||||
_animations_box.add_child(button)
|
||||
|
||||
|
||||
func _setup_slider(slider: HSlider, value: float, handler: Callable) -> void:
|
||||
slider.min_value = 0.0
|
||||
slider.max_value = 1.0
|
||||
slider.step = 1.0 / AppSettings.VOLUME_STEPS
|
||||
slider.value = value
|
||||
slider.value_changed.connect(handler)
|
||||
|
||||
|
||||
func _on_volume_changed(value: float) -> void:
|
||||
SettingsManager.set_volume(value)
|
||||
|
||||
|
||||
func _on_music_changed(value: float) -> void:
|
||||
SettingsManager.set_music_volume(value)
|
||||
|
||||
|
||||
func _on_effects_changed(value: float) -> void:
|
||||
SettingsManager.set_effects_volume(value)
|
||||
|
||||
|
||||
func _on_drag_ended(_value_changed: bool) -> void:
|
||||
AudioManager.play_sfx("success")
|
||||
|
||||
|
||||
func _on_text_size_pressed(index: int) -> void:
|
||||
SettingsManager.set_text_scale_index(index)
|
||||
|
||||
|
||||
+43
-2
@@ -49,14 +49,55 @@ layout_mode = 2
|
||||
theme_type_variation = &"CardTitle"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="VolumeLabel" type="Label" parent="Margin/Center/Card/VBox"]
|
||||
[node name="VolumeRow" type="HBoxContainer" parent="Margin/Center/Card/VBox"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 16
|
||||
|
||||
[node name="VolumeLabel" type="Label" parent="Margin/Center/Card/VBox/VolumeRow"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
custom_minimum_size = Vector2(230, 0)
|
||||
theme_type_variation = &"Emphasis"
|
||||
|
||||
[node name="VolumeSlider" type="HSlider" parent="Margin/Center/Card/VBox"]
|
||||
[node name="VolumeSlider" type="HSlider" parent="Margin/Center/Card/VBox/VolumeRow"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 4
|
||||
custom_minimum_size = Vector2(0, 40)
|
||||
|
||||
[node name="MusicRow" type="HBoxContainer" parent="Margin/Center/Card/VBox"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 16
|
||||
|
||||
[node name="MusicLabel" type="Label" parent="Margin/Center/Card/VBox/MusicRow"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
custom_minimum_size = Vector2(230, 0)
|
||||
theme_type_variation = &"Emphasis"
|
||||
|
||||
[node name="MusicSlider" type="HSlider" parent="Margin/Center/Card/VBox/MusicRow"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 4
|
||||
custom_minimum_size = Vector2(0, 40)
|
||||
|
||||
[node name="EffectsRow" type="HBoxContainer" parent="Margin/Center/Card/VBox"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 16
|
||||
|
||||
[node name="EffectsLabel" type="Label" parent="Margin/Center/Card/VBox/EffectsRow"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
custom_minimum_size = Vector2(230, 0)
|
||||
theme_type_variation = &"Emphasis"
|
||||
|
||||
[node name="EffectsSlider" type="HSlider" parent="Margin/Center/Card/VBox/EffectsRow"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 4
|
||||
custom_minimum_size = Vector2(0, 40)
|
||||
|
||||
[node name="TextSizeLabel" type="Label" parent="Margin/Center/Card/VBox"]
|
||||
|
||||
Reference in New Issue
Block a user