diff --git a/scripts/custom_game.gd b/scripts/custom_game.gd index 15db1f6..ec77fb5 100644 --- a/scripts/custom_game.gd +++ b/scripts/custom_game.gd @@ -7,13 +7,8 @@ func _ready(): func _start_server(): # Custom Game can assume we're playing as well networking.start_server() - _show_lobby() func _start_client(): var ip = get_node("IP").text networking.start_client(ip) - _show_lobby() - -func _show_lobby(): - get_tree().change_scene("res://scenes/lobby.tscn") diff --git a/scripts/lobby.gd b/scripts/lobby.gd index cc606bf..390a257 100644 --- a/scripts/lobby.gd +++ b/scripts/lobby.gd @@ -45,7 +45,7 @@ func _connected(): networking.start_game() func _set_level(level): - networking.set_info("level", level) + networking.level = level func _set_spectating(is_spectating): networking.set_info("spectating", is_spectating) diff --git a/scripts/matchmaking.gd b/scripts/matchmaking.gd index f137556..30e3e4f 100644 --- a/scripts/matchmaking.gd +++ b/scripts/matchmaking.gd @@ -80,7 +80,7 @@ func queue(netid): # # func add_to_game(netid, port): - lobby.rpc_id(netid, "_client_init", port) + networking.rpc_id(netid, "reconnect", port) func skirmish_to_game(port, count=1): for i in range(count): diff --git a/scripts/menu.gd b/scripts/menu.gd index 2d4d1d6..95b6299 100644 --- a/scripts/menu.gd +++ b/scripts/menu.gd @@ -13,7 +13,8 @@ func _gui_setup(): get_node("Center/Singleplayer").connect("pressed", self, "_singleplayer") func _find_game(): - var ip = networking.global_server_ip + # var ip = networking.global_server_ip + var ip = util.args.get_value("-ip") var port = networking.matchmaking.MATCHMAKING_PORT networking.start_client(ip, port) @@ -42,12 +43,10 @@ func _arg_actions(): # my_info.record = true if o.get_value("-server"): networking.start_server() - get_tree().change_scene("res://scenes/lobby.tscn") - # if o.get_value("-matchmaker"): - # call_deferred("_matchmaker_init") + if o.get_value("-matchmaker"): + networking.matchmaking.start_matchmaker() if o.get_value("-client"): networking.start_client() - get_tree().change_scene("res://scenes/lobby.tscn") if o.get_value("-singleplayer"): _singleplayer() if o.get_value('-h'): diff --git a/scripts/networking.gd b/scripts/networking.gd index a37779a..d92c63b 100644 --- a/scripts/networking.gd +++ b/scripts/networking.gd @@ -11,6 +11,8 @@ var global_server_ip = "nv.cosinegaming.com" var matchmaker_tcp var right_team_next = false +var level + signal info_updated func _ready(): @@ -34,6 +36,12 @@ func start_client(ip="", port=0): print("Connecting to " + ip + ":" + str(port)) peer.create_client(ip, port) get_tree().set_network_peer(peer) + get_tree().change_scene("res://scenes/lobby.tscn") + +remote func reconnect(port): + # Reset previously known players + players = {} + start_client("", port) func _connect_to_matchmaker(game_port): var matchmaker_peer = StreamPeerTCP.new() @@ -55,9 +63,9 @@ func start_server(port=0): register_player(get_tree().get_network_unique_id()) if util.args.get_value("-silent"): set_info("spectating", true) + get_tree().change_scene("res://scenes/lobby.tscn") master func _start_game(): - var level = players[1].level # TODO: Can we guarantee this will have level? rpc("_pre_configure_game", level) func start_game(): @@ -108,8 +116,9 @@ sync func _set_info(key, value, peer=0): if peer == 0: # Was self. See https://github.com/godotengine/godot/issues/19026 peer = get_tree().get_network_unique_id() - players[peer][key] = value - emit_signal("info_updated") + if players.has(peer): + players[peer][key] = value + emit_signal("info_updated") func set_info(key, value, peer=0): rpc("_set_info", str(key), value, peer) @@ -140,7 +149,6 @@ sync func _pre_configure_game(level): # Load all players (including self) for p in players: - players[p].level = level if not (players[p].has("spectating") and players[p].spectating): _spawn_player(p) @@ -149,6 +157,7 @@ sync func _pre_configure_game(level): sync func _done_preconfiguring(who): players_done.append(who) if players_done.size() == players.size(): + print("done") # We call deferred in case singleplayer has placing the player in queue still call_deferred("rpc", "_post_configure_game")