@@ -12,6 +12,7 @@ signal song_scrubbed(percentage : float, seconds : float)
1212@export var first_song_name : String
1313
1414@export var _audio_stream_player : AudioStreamPlayer
15+ var _audio_stream_paused : bool = false
1516
1617var _selected_track := 0
1718var _available_songs : Array [SongInfo ] = []
@@ -27,8 +28,6 @@ var last_played: int = -1
2728## Used to keep keep consistency between scene changes
2829var is_music_player_visible : bool = true
2930
30- var _has_startup_happened : bool = false
31-
3231func get_all_song_names () -> PackedStringArray :
3332 var songNames : PackedStringArray = []
3433 for si : SongInfo in _available_songs :
@@ -56,10 +55,12 @@ func get_current_song_progress_percentage() -> float:
5655 return 100 * (_audio_stream_player .get_playback_position () / _audio_stream_player .stream .get_length ())
5756
5857func is_paused () -> bool :
59- return _audio_stream_player . stream_paused
58+ return _audio_stream_paused
6059
6160func set_paused (paused : bool ) -> void :
6261 _audio_stream_player .stream_paused = paused
62+ # stream_paused requires an active stream
63+ _audio_stream_paused = paused
6364 song_paused .emit (paused )
6465
6566func toggle_play_pause () -> void :
@@ -69,6 +70,8 @@ func start_current_song() -> void:
6970 _audio_stream_player .stream = _available_songs [_selected_track ].song_stream
7071 _audio_stream_player .play ()
7172 song_started .emit (_selected_track )
73+ if _audio_stream_paused :
74+ set_paused (true )
7275
7376# REQUIREMENTS
7477# * SS-70
@@ -86,10 +89,12 @@ func select_next_song() -> void:
8689 _selected_track = playlist [playlist_index ]
8790 playlist_index += 1
8891 last_played = playlist_index
92+ _audio_stream_paused = false
8993 start_current_song ()
9094
9195func select_previous_song () -> void :
9296 _selected_track = (len (_available_songs ) - 1 ) if (_selected_track == 0 ) else (_selected_track - 1 )
97+ _audio_stream_paused = false
9398 start_current_song ()
9499
95100func setup_compat_song (file_name ) -> void :
@@ -162,9 +167,7 @@ func _ready() -> void:
162167 # GameStart so we can wait until the music is loaded
163168
164169func set_startup_music (play : bool ) -> void :
165- if not _has_startup_happened :
166- _has_startup_happened = true
167- set_paused (not play )
170+ set_paused (not play )
168171
169172func _on_audio_stream_player_finished () -> void :
170173 song_finished .emit (_selected_track )
0 commit comments