@@ -20,28 +20,23 @@ signal game_ended()
2020signal game_error (what )
2121
2222# Callback from SceneTree
23- func _player_connected (_id ):
24- # This is not used in this demo, because _connected_ok is called for clients
25- # on success and will do the job.
26- pass
23+ func _player_connected (id ):
24+ # Registration of a client beings here, tell the connected player that we are here
25+ rpc_id (id , "register_player" , player_name )
2726
2827# Callback from SceneTree
2928func _player_disconnected (id ):
30- if get_tree (). is_network_server ():
31- if has_node ( "/root/world" ): # Game is in progress
29+ if has_node ( "/root/world" ): # Game is in progress
30+ if get_tree (). is_network_server ():
3231 emit_signal ("game_error" , "Player " + players [id ] + " disconnected" )
3332 end_game ()
34- else : # Game is not in progress
35- # If we are the server, send to the new dude all the already registered players
36- unregister_player (id )
37- for p_id in players :
38- # Erase in the server
39- rpc_id (p_id , "unregister_player" , id )
33+ else : # Game is not in progress
34+ # Unregister this player
35+ unregister_player (id )
4036
4137# Callback from SceneTree, only for clients (not server)
4238func _connected_ok ():
43- # Registration of a client beings here, tell everyone that we are here
44- rpc ("register_player" , get_tree ().get_network_unique_id (), player_name )
39+ # We just connected to a server
4540 emit_signal ("connection_succeeded" )
4641
4742# Callback from SceneTree, only for clients (not server)
@@ -56,18 +51,13 @@ func _connected_fail():
5651
5752# Lobby management functions
5853
59- remote func register_player (id , new_player_name ):
60- if get_tree ().is_network_server ():
61- # If we are the server, let everyone know about the new player
62- rpc_id (id , "register_player" , 1 , player_name ) # Send myself to new dude
63- for p_id in players : # Then, for each remote player
64- rpc_id (id , "register_player" , p_id , players [p_id ]) # Send player to new dude
65- rpc_id (p_id , "register_player" , id , new_player_name ) # Send new dude to player
66-
54+ remote func register_player (new_player_name ):
55+ var id = get_tree ().get_rpc_sender_id ()
56+ print (id )
6757 players [id ] = new_player_name
6858 emit_signal ("player_list_changed" )
6959
70- remote func unregister_player (id ):
60+ func unregister_player (id ):
7161 players .erase (id )
7262 emit_signal ("player_list_changed" )
7363
0 commit comments