Added main menu and settings
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
class_name CSoundManager
|
||||
extends Node
|
||||
|
||||
|
||||
const MASTER_BUS = "Master"
|
||||
const UI_BUS = "UI"
|
||||
const SFX_BUS = "SFX"
|
||||
const MUSIC_BUS = "Music"
|
||||
|
||||
|
||||
@export_group("Pitch settings", "pitch")
|
||||
@export_range(0.9, 1.1, 0.01) var putch_ui_min := 1.0
|
||||
@export_range(0.9, 1.1, 0.01) var putch_ui_max := 1.0
|
||||
@export_range(0.9, 1.1, 0.01) var putch_sfx_min := 1.0
|
||||
@export_range(0.9, 1.1, 0.01) var putch_sfx_max := 1.0
|
||||
|
||||
@export_group("Number of players", "player_count")
|
||||
@export_range(1, 10) var player_count_ui := 1
|
||||
@export_range(1, 100) var player_count_sfx := 1
|
||||
|
||||
|
||||
|
||||
var _ui_players : Array[AudioStreamPlayer] = []
|
||||
var _sfx_players : Array[AudioStreamPlayer2D] = []
|
||||
var _music_player : AudioStreamPlayer
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
_create_ui_players()
|
||||
_create_sfx_players()
|
||||
_create_music_player()
|
||||
|
||||
|
||||
func play_ui_stream(stream: AudioStream) -> AudioStreamPlayer:
|
||||
var player := _get_free_player(_ui_players)
|
||||
player.stream = stream
|
||||
player.pitch_scale = randf_range(putch_ui_min, putch_ui_max)
|
||||
player.play()
|
||||
return player
|
||||
|
||||
|
||||
func play_sfx_stream(stream: AudioStream, position: Vector2) -> AudioStreamPlayer2D:
|
||||
var player := _get_free_2d_player(_sfx_players)
|
||||
player.stream = stream
|
||||
player.pitch_scale = randf_range(putch_ui_min, putch_ui_max)
|
||||
player.position = position
|
||||
player.play()
|
||||
return player
|
||||
|
||||
|
||||
func play_music_stream(stream: AudioStream) -> AudioStreamPlayer:
|
||||
_music_player.stream = stream
|
||||
_music_player.play()
|
||||
return _music_player
|
||||
|
||||
|
||||
func _create_ui_players() -> void:
|
||||
for i in range(player_count_ui):
|
||||
var player : AudioStreamPlayer = AudioStreamPlayer.new()
|
||||
player.bus = UI_BUS
|
||||
_ui_players.append(player)
|
||||
add_child(player)
|
||||
|
||||
|
||||
func _create_sfx_players() -> void:
|
||||
for i in range(player_count_sfx):
|
||||
var player : AudioStreamPlayer2D = AudioStreamPlayer2D.new()
|
||||
player.bus = SFX_BUS
|
||||
_sfx_players.append(player)
|
||||
add_child(player)
|
||||
|
||||
|
||||
func _create_music_player() -> void:
|
||||
var player : AudioStreamPlayer = AudioStreamPlayer.new()
|
||||
player.bus = MUSIC_BUS
|
||||
_music_player = player
|
||||
add_child(player)
|
||||
|
||||
|
||||
func _get_free_player(players: Array[AudioStreamPlayer]) -> AudioStreamPlayer:
|
||||
for player in players:
|
||||
if not player.playing:
|
||||
return player
|
||||
return players[0]
|
||||
|
||||
|
||||
func _get_free_2d_player(players: Array[AudioStreamPlayer2D]) -> AudioStreamPlayer2D:
|
||||
for player in players:
|
||||
if not player.playing:
|
||||
return player
|
||||
return players[0]
|
||||
Reference in New Issue
Block a user