Closes #38, #39 and #40; adds the client side of #41. - Every request goes to /api/v1. MusicServerClient gets a token with Settings.api_password the first time one is needed, reuses it, and on a 401 gets a new one and sends the request once more. Switching server gets a new token too. Callers never see the token. - Sync is started with POST, as MusicServer 5.0 requires. - The client has every endpoint in the server's OpenAPI spec, including statistics, soundtracks and songs by UUID, version, downloads and tokens. - tools/generate_api_types.gd generates a typed class per schema in server/openapi.json into server/generated/. Song info, statistics and versions are passed to callers as these classes. A list the server sends as null is an empty list. - FakeHttpTransport hands out tokens and answers 401 without one, so every test goes through the token flow. New tests cover the token handling, every endpoint and each generated class.
42 lines
1.3 KiB
GDScript
42 lines
1.3 KiB
GDScript
extends Node
|
|
## The game settings and the players, shared by the whole game.
|
|
##
|
|
## Registered as the [code]Settings[/code] autoload.
|
|
|
|
const MAX_NUMBER_OF_PLAYERS: int = 7
|
|
|
|
var default_path: String = "https://music.sanplex.xyz"
|
|
## Password for getting an API token from the server. Any password works when the
|
|
## server has none set.
|
|
var api_password: String = ""
|
|
var selected_server: int = 0
|
|
var is_local: bool = false
|
|
var is_debug: bool = false
|
|
var stop_after_current: bool = true
|
|
var auto_repeat_song: bool = true
|
|
var hide_next_track: bool = true
|
|
var add_to_stats: bool = true
|
|
var use_low_played_mode: bool = false
|
|
var winning_score: int = 20
|
|
var fullscreen: bool = false
|
|
var play_local: bool = false
|
|
var inspiration_list_speed: int = 1
|
|
var hide_for_seconds: float = 5.0
|
|
var hide_beginning: bool = false
|
|
var hide_length: bool = false
|
|
var hide_ticks: bool = false
|
|
var player_array: Array[PlayerObject]
|
|
var edit_players: bool = false
|
|
var currently_syncing: bool = false
|
|
var character_select_open: bool = false
|
|
|
|
## The game version, set in Project Settings > Application > Config > Version.
|
|
## Releases are made from it, see RELEASING.md.
|
|
var version: String = ProjectSettings.get_setting("application/config/version", "")
|
|
|
|
|
|
func delete_children(node: Node) -> void:
|
|
for n: Node in node.get_children():
|
|
node.remove_child(n)
|
|
n.queue_free()
|