Sfoglia il codice sorgente

more work done on the lobby system

galo 1 anno fa
parent
commit
2e10940995
3 ha cambiato i file con 27 aggiunte e 22 eliminazioni
  1. 3 2
      Client.gd
  2. 10 11
      Client.tscn
  3. 14 9
      Server.gd

+ 3 - 2
Client.gd

@@ -38,10 +38,11 @@ remote func on_player_state_data(arg):
 	$spawnmsg/CenterContainer/VBoxContainer/spawnmsg2.text = str(arg)
 
 func spawn_request():
-	$spawnmsg/CenterContainer.visible = false
-	emit_signal('client_request')
 	rpc_id(1,'spawn_request')
 
+remote func on_spawn_request_reply():
+	$spawnmsg/CenterContainer.visible = false
+	emit_signal('client_request')
 
 func _On_Connection_Failed():
 	print("Failed to connect to game server")

+ 10 - 11
Client.tscn

@@ -12,10 +12,12 @@
 [sub_resource type="GDScript" id=1]
 script/source = "extends Label
 
+export(NodePath) var node
+
 func _input(event):
 	if visible:
 		if Input.is_action_just_pressed('ui_select'):
-			get_parent().get_parent().spawn_request()
+			get_node(node).spawn_request()
 "
 
 [node name="Client" type="Node" groups=["client"]]
@@ -90,31 +92,28 @@ anchor_right = 1.0
 anchor_bottom = 1.0
 
 [node name="VBoxContainer" type="VBoxContainer" parent="spawnmsg/CenterContainer"]
-margin_left = 245.0
-margin_top = 138.0
-margin_right = 394.0
-margin_bottom = 221.0
+margin_left = 238.0
+margin_top = 164.0
+margin_right = 402.0
+margin_bottom = 196.0
 
 [node name="spawnmsg" type="Label" parent="spawnmsg/CenterContainer/VBoxContainer"]
 margin_right = 149.0
 margin_bottom = 14.0
-text = "press \"space\" to spawn"
+text = "press \"space\" to be ready"
 align = 1
 valign = 1
 script = SubResource( 1 )
+node = NodePath("../../../..")
 
 [node name="spawnmsg2" type="Label" parent="spawnmsg/CenterContainer/VBoxContainer"]
 margin_top = 18.0
 margin_right = 149.0
 margin_bottom = 83.0
-text = "1: await....
-2: await....
-3: await....
-4: await...."
+text = "loading list...."
 align = 1
 valign = 1
 autowrap = true
-script = SubResource( 1 )
 
 [node name="ColorRect" type="ColorRect" parent="spawnmsg/CenterContainer/VBoxContainer/spawnmsg2"]
 show_behind_parent = true

+ 14 - 9
Server.gd

@@ -47,29 +47,34 @@ remote func tokenreply(token, username):
 	print(data)
 	print(message)
 	if username == null or username == "":
-		username = 'player ' +  str(custom_multiplayer.get_network_connected_peers().size()) + ' '
+		username = 'player ' +  str(api.get_rpc_sender_id()) + ' '
 	if message == 'token validated':
 		player_spawn_queue[api.get_rpc_sender_id()] = {'id' : str(api.get_rpc_sender_id()), 'username':username, 'can_spawn':true}
 		user_state_dict[str(username)] =  ' ...await'
-		rpc_id(api.get_rpc_sender_id(),'on_player_state_data',user_state_dict)
+		usernames_dict[api.get_rpc_sender_id()] =  str(username)
+		rpc_id(0,'on_player_state_data',user_state_dict)
 		rpc_id(api.get_rpc_sender_id(),'on_token_confirmed')
 
 remote func spawn_request():
 	if player_spawn_queue.has(api.get_rpc_sender_id()):
 		if player_spawn_queue[api.get_rpc_sender_id()].can_spawn:
-			player_spawn(player_spawn_queue[api.get_rpc_sender_id()])
-
-func player_spawn(arg):
+			user_state_dict[usernames_dict[api.get_rpc_sender_id()]] =  ' ready'
+			rpc_id(0,'on_player_state_data',user_state_dict)
+			if not user_state_dict.values().has(' ...await'):
+				for x in player_spawn_queue.keys():
+					player_spawn(player_spawn_queue[x],x)
+					rpc_id(x,'on_spawn_request_reply')
+					player_spawn_queue.erase(x)
+
+func player_spawn(arg, arg2):
 	var id = arg.id
 	var username = arg.username
 	print('clients connected: ' + str(custom_multiplayer.get_network_connected_peers().size()))
 	var instance = playerphsyics.instance()
 	instance.name = id
 	$players.add_child(instance)
-
-	usernames_dict[api.get_rpc_sender_id()] =  str(username)
-	send_list_of_usernames(api.get_rpc_sender_id(), username)
-	rpc_id(api.get_rpc_sender_id(),'loadlevel','test')
+	send_list_of_usernames(arg2, username)
+	rpc_id(arg2,'loadlevel','test')
 
 var player_spawn_queue = {}