Add sound management

This commit is contained in:
TheThomaas 2026-09-27 15:09:55 +02:00
parent 28fd165018
commit 43bd8cb8fc
5 changed files with 34 additions and 0 deletions

9
default_bus_layout.tres Normal file
View file

@ -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"

View file

@ -21,6 +21,7 @@ config/icon="res://icon.svg"
ControllerIcons="*uid://b7ho1rjcpht1d" ControllerIcons="*uid://b7ho1rjcpht1d"
GameData="*uid://d4beiel88cwc7" GameData="*uid://d4beiel88cwc7"
UiAudio="*uid://7e7fe2xk3aue"
[display] [display]

View file

@ -10,6 +10,7 @@ extends Node
@export var progression_backgrounds: Array[Texture2D] = [] @export var progression_backgrounds: Array[Texture2D] = []
@export var menu_music: AudioStream @export var menu_music: AudioStream
@export var start_click_sound: AudioStream
const GAME_SCENE_PATH := "res://scenes/main.tscn" const GAME_SCENE_PATH := "res://scenes/main.tscn"
const MUSIC_FADE_DURATION := 0.8 const MUSIC_FADE_DURATION := 0.8
@ -53,8 +54,12 @@ func fade_in_game_infos() -> void:
func _on_start_pressed() -> void: func _on_start_pressed() -> void:
if is_transitioning: return if is_transitioning: return
is_transitioning = true is_transitioning = true
play_click_sound()
start_transition_to(GAME_SCENE_PATH) start_transition_to(GAME_SCENE_PATH)
func play_click_sound() -> void:
UiAudio.play(start_click_sound)
func _on_quit_pressed() -> void: func _on_quit_pressed() -> void:
get_tree().quit() get_tree().quit()

18
scripts/ui_audio.gd Normal file
View file

@ -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)

1
scripts/ui_audio.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://7e7fe2xk3aue