extends Control onready var is_loaded = false onready var lobbies_grid = $v/body/p/lobbies onready var zero_state = $v/body/p/lobbies/zero_state onready var lobbies_label = $v/subhead/label onready var display_name_edit = $v/subhead/display_name onready var lobbies = {} onready var lobby = preload("res://objects/lobby.tscn") func _ready(): display_name_edit.text = Global.client.display_name Global.client.connect("lobby_data", self, "_lobby_data") Global.client.connect("lobby_delete", self, "_lobby_delete") Global.client.connect("lobby_begin_join", self, "_lobby_begin_join") Global.client.connect("lobby_left", self, "_lobby_left") Global.client.connect("signaller_connected", self, "_signaller_connected") Global.client.connect("signaller_disconnected", self, "_signaller_disconnected") if Global.client.is_signaller_connected(): _signaller_connected() else: Global.client.connect_to_signaller() # TODO: add search func _input(ev): pass # if ev is InputEventKey and ev.pressed: # if ev.scancode == KEY_T: # var ls = [] # for n in range(5): # var j = n + lobbies.size() # ls.push_back({id = j, name = j, currentPlayers = j, maxPlayers = j, locked = false}) # call_deferred("_lobby_new", ls) func _signaller_disconnected(): Global.main_menu() func _signaller_connected(): print("Lobby Browser: Signaller Connected") if Global.check_onetime_flag("create-lobby"): call_deferred("_on_create_lobby_pressed") else: Global.client.request_lobby_list() func _lobby_begin_join(data): print("Joining Lobby: %s" % data) Global.lobby() func _lobby_left(_uuid): Global.lobby_browser() func _on_back_pressed(): Global.main_menu() func _on_create_lobby_pressed(): Global.lobby() Global.client.create_lobby() func _lobby_data(new_lobbies: Array): for l in new_lobbies: if lobbies.has(l.uuid): _update_lobby(l.uuid, l) else: _add_lobby(l.uuid, l) if Global.check_onetime_flag("join-first-available-lobby"): Global.client.join_lobby(l.uuid) func _lobby_delete(uuid: String): print("Lobby Deleted: %s" % uuid) _delete_lobby(uuid) func _add_lobby(uuid, lobby_data): call_deferred("_update_lobbies_text") print("New Lobby ", lobby_data) # if lobby_data.currentPlayers > 0: var new_lobby = lobby.instance() new_lobby.set_with_dict(lobby_data) lobbies_grid.add_child(new_lobby) lobbies[uuid] = new_lobby func _update_lobby(uuid, lobby_data): call_deferred("_update_lobbies_text") print("Updated Lobby ", lobby_data) lobbies[uuid].set_with_dict(lobby_data) func _delete_lobby(uuid): call_deferred("_update_lobbies_text") if lobbies.has(uuid): print("Removing lobby...") lobbies_grid.remove_child(lobbies[uuid]) lobbies[uuid].queue_free() lobbies.erase(uuid) func _update_lobbies_text(): var n = lobbies.size() lobbies_label.text = "Active Lobbies: %d" % n if n < 1: if !lobbies_grid.is_a_parent_of(zero_state): lobbies_grid.add_child(zero_state) if n > 0: if lobbies_grid.is_a_parent_of(zero_state): lobbies_grid.remove_child(zero_state) func _on_display_name_text_changed(new_text): Global.client.display_name = new_text