From 10d760bbf43c77c7db60242336b3688247efc0a5 Mon Sep 17 00:00:00 2001 From: Luna Date: Fri, 18 May 2018 19:19:14 -0400 Subject: [PATCH] Fix server not playing when not spectating --- scenes/lobby.tscn | 2 +- scripts/lobby.gd | 6 ++++-- scripts/networking.gd | 31 +++++++++++++++++++++++-------- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/scenes/lobby.tscn b/scenes/lobby.tscn index 9eb171b..10f49eb 100644 --- a/scenes/lobby.tscn +++ b/scenes/lobby.tscn @@ -23,7 +23,7 @@ use_mipmaps = false use_filter = false font_data = SubResource( 2 ) -[node name="Lobby" type="Control" index="0"] +[node name="Lobby" type="Control"] anchor_left = 0.0 anchor_top = 0.0 diff --git a/scripts/lobby.gd b/scripts/lobby.gd index f183605..ec59d82 100644 --- a/scripts/lobby.gd +++ b/scripts/lobby.gd @@ -9,8 +9,10 @@ func _ready(): get_node("Username").connect("text_changed", self, "_send_name") get_node("StartGame").connect("pressed", self, "_start_game") - get_node("Spectating").pressed = util.args.get_value("-silent") - get_node("Spectating").connect("pressed", self, "_change_spectating") # TODO + var spectating = util.args.get_value("-silent") + get_node("Spectating").pressed = spectating + # + get_node("Spectating").connect("toggled", networking, "set_spectating") # TODO # get_node("CustomGame/LevelSelect").connect("item_selected", self, "select_level") TODO # _send_name() diff --git a/scripts/networking.gd b/scripts/networking.gd index 068e596..8cb125c 100644 --- a/scripts/networking.gd +++ b/scripts/networking.gd @@ -20,8 +20,8 @@ var right_team_next = false func _ready(): add_child(matchmaking) - get_tree().connect("network_peer_connected", self, "_register_player") - get_tree().connect("network_peer_disconnected", self, "disconnect_player") + get_tree().connect("network_peer_disconnected", self, "unregister_player") + get_tree().connect("network_peer_connected", self, "register_player") # get_tree().connect("connected_to_server", self, "_on_connect") # func connect_global_server(): TODO @@ -60,11 +60,13 @@ func start_server(port, server_playing=false): get_tree().set_network_peer(peer) # As soon as we're listening, let the matchmaker know _connect_to_matchmaker(port) + if not util.args.get_value("-silent"): + register_player(get_tree().get_network_unique_id()) # is_connected = true TODO # get_node("CustomGame/Server").set_text("Serving!") # get_node("JoinedGameLobby").show() - # if "start_game" in my_info and my_info.start_game: TODO - # start_game() + if util.args.get_value("-start-game"): + start_game() sync func start_game(level): print(var2str(players)) @@ -81,8 +83,11 @@ func disconnect_player(id): # rpc_id(1, "start_game") # is_connected = true TODO -remote func _register_player(new_peer): - players[new_peer] = {} +remote func register_player(new_peer): + var info = {} + info.is_right_team = right_team_next + right_team_next = not right_team_next + players[new_peer] = info if get_tree().is_network_server(): # I tell new player about all the existing people rset_id(new_peer, "players", players) @@ -106,9 +111,19 @@ remote func _register_player(new_peer): # rpc_id(new_peer, "_pre_configure_game", my_info.level) # rpc_id(new_peer, "_post_configure_game") -sync func _unregister_player(peer): +sync func unregister_player(peer): players.erase(peer) - get_node("/root/Level/Players/%d" % peer).queue_free() + if begun: + get_node("/root/Level/Players/%d" % peer).queue_free() + +func set_spectating(spectating): + var id = get_tree().get_network_unique_id() + if spectating: + if players[id]: + unregister_player(id) + else: + if not players[id]: + register_player(id) sync func _spawn_player(p): var hero = 0