diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2025-02-15 12:35:53 +0100 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2025-02-15 12:35:53 +0100 |
commit | 0d17544b3e3220a7493319271b79ce435f991a0b (patch) | |
tree | 77800833fb9074ecb717b1ac5af3433eb744a55b /UI/GamesLobby/games_lobby.gd | |
parent | 5b35174ffab42f0331f1a6527ef6bbab7a3dbdcb (diff) |
next commit
Diffstat (limited to 'UI/GamesLobby/games_lobby.gd')
-rw-r--r-- | UI/GamesLobby/games_lobby.gd | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/UI/GamesLobby/games_lobby.gd b/UI/GamesLobby/games_lobby.gd new file mode 100644 index 0000000..b829337 --- /dev/null +++ b/UI/GamesLobby/games_lobby.gd @@ -0,0 +1,76 @@ +extends Control + + +var games := [] + +var refresh_interval := 15.0 + +@onready var lobby_game_scene := preload("res://UI/GamesLobby/lobby_game.tscn") + + +func _ready() -> void: + %GamesList.get_child(0).queue_free() + + %ServerUrl.text = GameLobby.server_base_url + + if await check_game_lobby_available(): + get_server_list() + $RefreshTimer.wait_time = refresh_interval + $RefreshTimer.start() + else: + %ServerNotReachable.text = %ServerNotReachable.text.replace("%SERVER%", GameLobby.server_base_url) + + +func check_game_lobby_available(): + var is_available = await GameLobby.check_available() + + %ServerNotReachable.visible = !is_available + + return is_available + + +func get_server_list(): + var response = await GameLobby.request_get("/get-list") + var result = response.parse_json() + print(result) + + if result["success"]: + for node in %GamesList.get_children(): + node.queue_free() + + if result["data"].size() > 0: + %NoGamesFound.visible = false + + for game in result["data"]: + var lobby_game = lobby_game_scene.instantiate() + lobby_game.game_id = game["id"] + lobby_game.game_name = game["name"] + %GamesList.add_child(lobby_game) + else: + %NoGamesFound.visible = true + + +func _on_back_button_pressed() -> void: + get_tree().change_scene_to_file("res://UI/Start.tscn") + + +func _on_refresh_pressed() -> void: + if await check_game_lobby_available(): + get_server_list() + $RefreshTimer.start(refresh_interval) + + +func _on_refresh_timer_timeout() -> void: + get_server_list() + + +func _on_set_server_pressed() -> void: + var config = Client.get_config() + config.set_value( + "general", + "game_lobby_server_base_url", + %ServerUrl.text + ) + config.save("user://config") + + GameLobby.server_base_url = %ServerUrl.text |