From 48a2b8ab74be7e500db5cb2678e81b3f36cf9d45 Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Thu, 25 Dec 2025 21:51:50 +0300 Subject: [PATCH] Added sound playing --- game/managers/sound_manager.gd | 76 +++++++++++++++++++------------- game/managers/sound_manager.tscn | 12 +++-- game/menu/main/main_menu.gd | 5 +++ 3 files changed, 58 insertions(+), 35 deletions(-) diff --git a/game/managers/sound_manager.gd b/game/managers/sound_manager.gd index 913e135..da7cbe6 100644 --- a/game/managers/sound_manager.gd +++ b/game/managers/sound_manager.gd @@ -8,36 +8,26 @@ const SFX_BUS = "SFX" const MUSIC_BUS = "Music" -enum UISound { - UI_ACCEPT, - UI_DECLINE, - UI_NEXT, - UI_PREVIOUS, -} - -enum SFXSound { - -} - -enum Music { - -} - +@export_group("Pitch settings", "pitch") +@export_range(0.5, 1.5, 0.05) var putch_ui_min := 1.0 +@export_range(0.5, 1.5, 0.05) var putch_ui_max := 1.0 +@export_range(0.5, 1.5, 0.05) var putch_sfx_min := 1.0 +@export_range(0.5, 1.5, 0.05) 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 @export_group("UI Sounds", "ui") -@export var ui_accept : AudioStream -@export var ui_decline : AudioStream -@export var ui_next : AudioStream -@export var ui_previous : AudioStream +@export var ui_stream_accept : AudioStream +@export var ui_stream_decline : AudioStream +@export var ui_stream_next : AudioStream +@export var ui_stream_previous : AudioStream -var ui_players : Array[AudioStreamPlayer] = [] -var sfx_players : Array[AudioStreamPlayer2D] = [] -var music_player : AudioStreamPlayer +var _ui_players : Array[AudioStreamPlayer] = [] +var _sfx_players : Array[AudioStreamPlayer2D] = [] +var _music_player : AudioStreamPlayer func _ready() -> void: @@ -46,33 +36,57 @@ func _ready() -> void: _create_music_player() -func play_ui_sound(sound: UISound) -> void: - pass +func play_ui_stream(stream: AudioStream) -> void: + var player := _get_free_player(_ui_players) + player.stream = stream + player.pitch_scale = randf_range(putch_ui_min, putch_ui_max) + player.play() -func play_sfx_sound(sound: SFXSound) -> void: - pass +func play_sfx_stream(stream: AudioStream) -> void: + var player := _get_free_2d_player(_sfx_players) + player.stream = stream + player.pitch_scale = randf_range(putch_ui_min, putch_ui_max) + player.play() -func play_music(music: Music) -> void: - pass +func play_music_stream(stream: AudioStream) -> void: + _music_player.stream = stream + _music_player.play() 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) + _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) + _sfx_players.append(player) + add_child(player) func _create_music_player() -> void: var player : AudioStreamPlayer = AudioStreamPlayer.new() player.bus = MUSIC_BUS - music_player = player + _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] diff --git a/game/managers/sound_manager.tscn b/game/managers/sound_manager.tscn index 66697cc..c233474 100644 --- a/game/managers/sound_manager.tscn +++ b/game/managers/sound_manager.tscn @@ -8,9 +8,13 @@ [node name="SoundManager" type="Node"] script = ExtResource("1_cg0sy") +putch_ui_min = 0.95 +putch_ui_max = 1.05 +putch_sfx_min = 0.95 +putch_sfx_max = 1.05 player_count_ui = 4 player_count_sfx = 50 -ui_accept = ExtResource("2_agyxs") -ui_decline = ExtResource("3_0i6kl") -ui_next = ExtResource("4_fpnh3") -ui_previous = ExtResource("5_22ptj") +ui_stream_accept = ExtResource("2_agyxs") +ui_stream_decline = ExtResource("3_0i6kl") +ui_stream_next = ExtResource("4_fpnh3") +ui_stream_previous = ExtResource("5_22ptj") diff --git a/game/menu/main/main_menu.gd b/game/menu/main/main_menu.gd index 1ff02dd..03b0789 100644 --- a/game/menu/main/main_menu.gd +++ b/game/menu/main/main_menu.gd @@ -51,20 +51,25 @@ func _setup_neighbors() -> void: func _on_continue_button_pressed() -> void: + SoundManager.play_ui_stream(SoundManager.ui_stream_accept) continue_game.emit() func _on_start_button_pressed() -> void: + SoundManager.play_ui_stream(SoundManager.ui_stream_accept) new_game.emit() func _on_options_button_pressed() -> void: + SoundManager.play_ui_stream(SoundManager.ui_stream_accept) show_options.emit() func _on_credits_button_pressed() -> void: + SoundManager.play_ui_stream(SoundManager.ui_stream_accept) show_credits.emit() func _on_quit_button_pressed() -> void: + SoundManager.play_ui_stream(SoundManager.ui_stream_decline) quit_game.emit()