Post Game jam commit
This commit is contained in:
commit
6db2131520
164 changed files with 172524 additions and 0 deletions
72
scripts/singletons/sound_manager.gd
Normal file
72
scripts/singletons/sound_manager.gd
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
extends Node
|
||||
|
||||
const SFX_DEATH = preload("res://assets/sfx/death.mp3")
|
||||
const SFX_HEART = preload("res://assets/sfx/heart.mp3")
|
||||
const SFX_SWING = preload("res://assets/sfx/swing.mp3")
|
||||
const SFX_CLICK = preload("res://assets/sfx/click.mp3")
|
||||
|
||||
const MUSIC_TITLE = preload("res://assets/music/title.wav")
|
||||
|
||||
# Configuration
|
||||
var pool_size = 10
|
||||
var sfx_dict = {}
|
||||
var music_dict = {}
|
||||
var sfx_pool = []
|
||||
var current_pool_index = 0
|
||||
|
||||
@onready var music_player_1 := AudioStreamPlayer.new()
|
||||
@onready var music_player_2 := AudioStreamPlayer.new()
|
||||
|
||||
func _ready():
|
||||
process_mode = Node.PROCESS_MODE_ALWAYS
|
||||
|
||||
sfx_dict = {
|
||||
"death": SFX_DEATH,
|
||||
"heart": SFX_HEART,
|
||||
"swing": SFX_SWING,
|
||||
"click": SFX_CLICK
|
||||
}
|
||||
|
||||
music_dict = {
|
||||
"title": MUSIC_TITLE
|
||||
}
|
||||
|
||||
for i in range(pool_size):
|
||||
var asp = AudioStreamPlayer.new()
|
||||
asp.bus = "SFX"
|
||||
add_child(asp)
|
||||
sfx_pool.append(asp)
|
||||
|
||||
add_child(music_player_1)
|
||||
add_child(music_player_2)
|
||||
music_player_1.bus = "Music"
|
||||
music_player_2.bus = "Music"
|
||||
|
||||
|
||||
func play_sfx(sound_name: String):
|
||||
if sfx_dict.has(sound_name):
|
||||
var asp : AudioStreamPlayer = sfx_pool[current_pool_index]
|
||||
asp.stream = sfx_dict[sound_name]
|
||||
asp.play()
|
||||
current_pool_index = (current_pool_index + 1) % pool_size
|
||||
|
||||
func play_music(music_name: String, fade_duration: float = 1.0):
|
||||
if not music_dict.has(music_name): return
|
||||
var next_track = music_dict[music_name]
|
||||
|
||||
|
||||
var active = music_player_1 if music_player_1.playing else music_player_2
|
||||
var idle = music_player_2 if music_player_1.playing else music_player_1
|
||||
|
||||
if active.stream == next_track: return
|
||||
|
||||
idle.stream = next_track
|
||||
idle.volume_db = -80
|
||||
idle.play()
|
||||
|
||||
var tween = create_tween().set_parallel(true)
|
||||
tween.tween_property(active, "volume_db", -80, fade_duration)
|
||||
tween.tween_property(idle, "volume_db", 0, fade_duration)
|
||||
|
||||
await tween.finished
|
||||
active.stop()
|
||||
Loading…
Add table
Add a link
Reference in a new issue