aboutsummaryrefslogtreecommitdiff
path: root/game/src/Autoload/SoundManager.gd
blob: c58ce1a4689d3d3a899b177eeb27b89508c66035 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
extends Node

# REQUIREMENTS:
# * SS-68

const _audio_directory_path : StringName = &"res://audio/sfx/"

var _loaded_sound : Dictionary = {}

var _bus_to_stream_player : Dictionary = {}

# REQUIREMENTS:
# * SND-10
func _ready():
   var dir = DirAccess.open(_audio_directory_path)
   for fname in dir.get_files():
      match fname.get_extension():
         "ogg", "wav", "mp3":
            _loaded_sound[fname.get_basename()] = load(_audio_directory_path.path_join(fname)) # SND-10

func play_stream(sound : AudioStream, bus_type : String) -> void:
   var player : AudioStreamPlayer = _bus_to_stream_player.get(bus_type)
   if player == null:
      player = AudioStreamPlayer.new()
      player.bus = bus_type
      player.stream = AudioStreamPolyphonic.new()
      _bus_to_stream_player[bus_type] = player
      add_child(player)
      player.play()
   var poly_playback : AudioStreamPlaybackPolyphonic = player.get_stream_playback()
   poly_playback.play_stream(sound)

func play(sound : String, bus_type : String) -> void:
   play_stream(_loaded_sound[sound], bus_type)

# REQUIREMENTS:
# * SND-7
func play_effect_stream(sound : AudioStream) -> void:
   play_stream(sound, "SFX")

func play_effect(sound : String) -> void:
   play(sound, "SFX")