Ignore Show answer when no song is playing

Before the first song played, currently_playing_song is -1, so pressing
Show answer marked the last song in the list as answered. That is the
preloaded song, so its title was shown as soon as it started playing,
and played?song=-1 was sent to the server. With an empty playlist it
crashed.
This commit is contained in:
Sansan committed 2026-10-06 08:32:56 +02:00
1 parent 5a979fca48
commit ed292877ef
3 files changed
+32

No files matched your search

+3
View File
@@ -36,6 +36,9 @@ func set_last_played_answered() -> void:
song_object_array[latest_played_song].is_answered = true
func song_is_answered(song_no: int = currently_playing_song) -> void:
# Nothing is playing yet (-1); a negative index would answer the last, unplayed song
if song_no < 0 || song_no >= song_object_array.size():
return
print("show_answer_pressed song_object: ", song_object_array[song_no]._to_string())
song_object_array[song_no].is_answered = true
if Settings.add_to_stats:
+12
View File
@@ -214,3 +214,15 @@ func test_closing_settings_with_full_cache_downloads_nothing() -> void:
_close_settings()
assert_int(_server.count("/music/rand")).is_equal(downloads_before)
func test_show_answer_before_first_song_does_not_reveal_next_song() -> void:
_press("ShowAnswerButton")
assert_bool(Playlist.song_object_array[0].is_answered).is_false()
assert_int(_server.count("/music/played?song=-1")).is_equal(0)
await _play_first_song()
assert_str((_window.get_node("VBoxContainer/SoundtrackLabel") as Label).text) \
.is_equal("????????")
+17
View File
@@ -182,3 +182,20 @@ func test_current_titles_are_hidden_until_answered() -> void:
assert_str(Playlist.get_current_soundtrack_title()).is_equal("Soundtrack 0")
assert_str(Playlist.get_current_song_title()).is_equal("Song 0")
func test_answering_when_nothing_is_playing_does_nothing() -> void:
Settings.add_to_stats = true
var songs: Array[SongObject] = _add_songs(2)
Playlist.song_is_answered()
assert_bool(songs[0].is_answered).is_false()
assert_bool(songs[1].is_answered).is_false()
assert_array(_server.requested_paths).is_empty()
func test_answering_with_empty_playlist_does_nothing() -> void:
Playlist.song_is_answered()
assert_array(_server.requested_paths).is_empty()