extends Control # TODO: rename to server browser onready var is_loaded = false onready var lobbies = $v/body/lobbies onready var join_button = $v/head/join onready var lobbies_label = $v/subhead/label onready var display_name_edit = $v/subhead/display_name func _ready(): display_name_edit.text = Global.client.signaller.display_name join_button.disabled = true Global.client.signaller.connect("lobby_new", self, "_lobby_new") Global.client.signaller.connect("lobby_delete", self, "_lobby_delete") Global.client.signaller.connect("lobby_joined", self, "_lobby_joined") Global.client.signaller.connect("lobby_left", self, "_lobby_left") Global.client.signaller.connect("websocket_disconnected", self, "_signaller_disconnected") Global.client.signaller.request_lobby_list() if Global.create_lobby: Global.create_lobby = false Global.client.signaller.create_lobby() func _signaller_disconnected(): Global.main_menu() func _lobby_joined(_id, _peerId): Global.lobby() func _lobby_left(_id): Global.lobby_browser() func _on_back_pressed(): Global.main_menu() func _on_create_lobby_pressed(): Global.client.signaller.create_lobby() func _on_join_pressed(): var items = lobbies.get_selected_items() if len(items) > 0: Global.client.signaller.join_lobby(lobbies.get_item_metadata(items[0])["id"]) func _lobby_new(new_lobbies): for i in range(len(new_lobbies)): var id = new_lobbies[i]["id"] var name = new_lobbies[i]["name"] print("New Lobby ", id, name) # TODO: could keep an index of IDs and indexes lobbies.add_item(name) lobbies.set_item_metadata(lobbies.get_item_count() - 1, { "id": id }) if Global.join_first_available_lobby: Global.join_first_available_lobby = false Global.client.signaller.join_lobby(id) lobbies_label.text = "Active Lobbies: %d" % lobbies.get_item_count() func _lobby_delete(id): for i in range(lobbies.get_item_count()): if id == lobbies.get_item_metadata(i)["id"]: lobbies.remove_item(i) return lobbies_label.text = "Active Lobbies: %d" % lobbies.get_item_count() func _on_lobbies_item_activated(_index): _on_join_pressed() func _on_lobbies_item_selected(_index): join_button.disabled = false func _on_display_name_text_changed(new_text): Global.client.signaller.set_display_name(new_text)