Files
scrap-signal/autoloads/audio_manager.gd
Kellan KOZUME e02fbeddc8 refactor(minigame): replace grid with wire-connecting minigame
- Replace GridContainer-based puzzle with drag-and-drop wire system
- Add draw_wires() and on_canvas_input() driven by WireCanvas node
- Shuffle right-side endpoints for varied puzzle layout
- Fix type inference errors (Dictionary values cast to Array/Color)
- Fix WireCanvas size_flags_vertical to SIZE_SHRINK_CENTER
- Set Panel custom_minimum_size and VBox to prevent layout overflow
- Title and StatusLabel now always visible
2026-04-26 03:25:02 -04:00

67 lines
1.9 KiB
GDScript

extends Node
var music_player : AudioStreamPlayer
var sfx_player : AudioStreamPlayer
const AMBIANCE_VOLUME_DB := -12.0
const SFX_VOLUME_DB := -8.0
const AMBIANCES := {
"entrepot": preload("res://assets/audio/music/entrepot.ogg"),
"atelier": preload("res://assets/audio/music/atelier.ogg"),
"cour": preload("res://assets/audio/music/cour.ogg"),
}
const SFX := {
"item_pickup": preload("res://assets/audio/sfx/item_pickup.ogg"),
"interact": preload("res://assets/audio/sfx/interact.ogg"),
"door_unlock": preload("res://assets/audio/sfx/door_unlocking.ogg"),
"repair_success": preload("res://assets/audio/sfx/succesful_repair.ogg"),
}
func _ready() -> void:
process_mode = Node.PROCESS_MODE_ALWAYS
music_player = AudioStreamPlayer.new()
music_player.name = "MusicPlayer"
music_player.bus = "Ambient"
music_player.volume_db = AMBIANCE_VOLUME_DB
add_child(music_player)
music_player.process_mode = Node.PROCESS_MODE_ALWAYS
sfx_player = AudioStreamPlayer.new()
sfx_player.name = "SfxPlayer"
sfx_player.bus = "SFX"
sfx_player.volume_db = SFX_VOLUME_DB
add_child(sfx_player)
sfx_player.process_mode = Node.PROCESS_MODE_ALWAYS
func _on_music_finished() -> void:
music_player.play()
func play_ambiance(zone: String) -> void:
if not AMBIANCES.has(zone):
return
if music_player.stream == AMBIANCES[zone] and music_player.playing:
return
var tween := create_tween()
tween.tween_property(music_player, "volume_db", -40.0, 0.8)
tween.tween_callback(func():
music_player.stream = AMBIANCES[zone]
music_player.play()
)
tween.tween_property(music_player, "volume_db", AMBIANCE_VOLUME_DB, 1.2)
func stop_ambiance() -> void:
var tween := create_tween()
tween.tween_property(music_player, "volume_db", -40.0, 1.0)
tween.tween_callback(music_player.stop)
func play_sfx(sfx_name: String) -> void:
if not SFX.has(sfx_name):
push_warning("SFX introuvable : " + sfx_name)
return
sfx_player.stream = SFX[sfx_name]
sfx_player.play()