aboutsummaryrefslogtreecommitdiff
path: root/game/src/Autoload/SoundManager.gd
blob: d3f80398136ed3f1c34d0bbed0026f31ab0133f2 (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
extends Node

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

var _loaded_sound : Dictionary = {}

var _bus_to_stream_player : Dictionary = {}

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)

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

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