diff --git a/default_bus_layout.tres b/default_bus_layout.tres new file mode 100644 index 0000000..052f901 --- /dev/null +++ b/default_bus_layout.tres @@ -0,0 +1,9 @@ +[gd_resource type="AudioBusLayout" format=3 uid="uid://cpmscnqvdpn8f"] + +[resource] +bus/1/name = &"SFX" +bus/1/solo = false +bus/1/mute = false +bus/1/bypass_fx = false +bus/1/volume_db = 0.0 +bus/1/send = &"Master" diff --git a/project.godot b/project.godot index d79aa12..4bc40cf 100644 --- a/project.godot +++ b/project.godot @@ -21,6 +21,7 @@ config/icon="res://icon.svg" ControllerIcons="*uid://b7ho1rjcpht1d" GameData="*uid://d4beiel88cwc7" +UiAudio="*uid://7e7fe2xk3aue" [display] diff --git a/scripts/main_menu.gd b/scripts/main_menu.gd index 44bcf07..77c7916 100644 --- a/scripts/main_menu.gd +++ b/scripts/main_menu.gd @@ -10,6 +10,7 @@ extends Node @export var progression_backgrounds: Array[Texture2D] = [] @export var menu_music: AudioStream +@export var start_click_sound: AudioStream const GAME_SCENE_PATH := "res://scenes/main.tscn" const MUSIC_FADE_DURATION := 0.8 @@ -53,8 +54,12 @@ func fade_in_game_infos() -> void: func _on_start_pressed() -> void: if is_transitioning: return is_transitioning = true + play_click_sound() start_transition_to(GAME_SCENE_PATH) +func play_click_sound() -> void: + UiAudio.play(start_click_sound) + func _on_quit_pressed() -> void: get_tree().quit() diff --git a/scripts/ui_audio.gd b/scripts/ui_audio.gd new file mode 100644 index 0000000..6ce4a39 --- /dev/null +++ b/scripts/ui_audio.gd @@ -0,0 +1,18 @@ +extends Node +# Autoload : UiAudio +# Gère les sons d'interface (boutons, menus, pause...) indépendamment des scènes, +# pour qu'un son ne soit jamais coupé par un changement de scène. + +@export var bus : StringName = &"SFX" # doit exister dans Audio Bus Layout, sinon utilise "Master" + +func play(stream : AudioStream, volume_db : float = 0.0) -> void: + if !stream: return + + var player := AudioStreamPlayer.new() + player.stream = stream + player.volume_db = volume_db + player.bus = bus if AudioServer.get_bus_index(bus) != -1 else &"Master" + + add_child(player) + player.play() + player.finished.connect(player.queue_free) diff --git a/scripts/ui_audio.gd.uid b/scripts/ui_audio.gd.uid new file mode 100644 index 0000000..fb8ffd6 --- /dev/null +++ b/scripts/ui_audio.gd.uid @@ -0,0 +1 @@ +uid://7e7fe2xk3aue