extends Node var song_object_array: Array[SongObject] = [] var latest_played_song: int = 0 var currently_playing_song: int = -1 var first_song_downloaded: bool = false var first_song_played: bool = false var number_of_tracks_to_preload: int = 1 var is_song_downloading: bool = false func get_next_song() -> SongObject: return song_object_array[latest_played_song] func set_latest_played_song() -> void: latest_played_song += 1 if latest_played_song > song_object_array.size() - 1: latest_played_song = song_object_array.size() - 1 func update_last_played_song() -> void: latest_played_song = song_object_array.size() func get_preloaded_songs() -> int: var number_of_tracks_preloaded: int = 0 for song: SongObject in song_object_array: if !song.has_played: number_of_tracks_preloaded += 1 return number_of_tracks_preloaded func should_preload_more_songs() -> bool: return number_of_tracks_to_preload > get_preloaded_songs() func set_last_played_answered() -> void: if song_object_array[latest_played_song].has_played && !song_object_array[latest_played_song].is_answered: song_object_array[latest_played_song].is_answered = true func song_is_answered(song_no: int = currently_playing_song) -> void: 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: print("add to stats: ", song_no) Settings.make_put_request("/music/played?song="+str(song_no)) func add_to_playlist(new_song_object: SongObject) -> void: song_object_array.append(new_song_object) func get_playlist() -> Array[SongObject]: if Settings.is_debug: return song_object_array else: var temp_list: Array[SongObject] = [] for s: SongObject in song_object_array: if s.has_played: temp_list.append(s) return temp_list func reset_playlist() -> void: currently_playing_song = -1 latest_played_song = 0 clear_song_list() func clear_song_list() -> void: song_object_array.clear() func unset_is_playing() -> void: for song_object: SongObject in song_object_array: song_object.is_playing = false func set_currently_playing_song(value: int) -> void: currently_playing_song = value func get_current_game_title() -> String: return song_object_array[currently_playing_song].get_game_title() func get_current_song_title() -> String: return song_object_array[currently_playing_song].get_song_title() func add_point(player_id: int) -> void: song_object_array[currently_playing_song].add_point(player_id) func remove_point(player_id: int) -> void: song_object_array[currently_playing_song].remove_point(player_id) func remove_player_from_list(player_to_remove: int) -> void: for song_list_object: SongObject in song_object_array: song_object_array[song_list_object.song_number].players_given_point.remove_at(song_object_array[song_list_object.song_number].players_given_point.find(player_to_remove)) func get_song(song_no: int) -> AudioStream: return song_object_array[song_no].song func add_song_to_song_object(song_no: int, sound: AudioStream) -> void: song_object_array[song_no].song = sound func song_has_played(song_no: int = latest_played_song) -> void: song_object_array[song_no].has_played = true func song_is_playing(song_no: int = latest_played_song) -> void: song_object_array[song_no].is_playing = true