Browse Source

adding spawn on demand system

galo 1 year ago
parent
commit
5abb6e4951
4 changed files with 53 additions and 14 deletions
  1. 9 1
      Client.gd
  2. 20 1
      Client.tscn
  3. 22 10
      Server.gd
  4. 2 2
      main.tscn

+ 9 - 1
Client.gd

@@ -30,6 +30,15 @@ remote func tokerequest():
 	var username = get_parent().get_node('Loginetcode').username_server
 	rpc_id(1,'tokenreply', tk, username)
 
+remote func on_token_confirmed():
+	$spawnmsg/spawnmsg.visible = true
+
+func spawn_request():
+	$spawnmsg/spawnmsg.visible = false
+	emit_signal('client_request')
+	rpc_id(1,'spawn_request')
+
+
 func _On_Connection_Failed():
 	print("Failed to connect to game server")
 
@@ -82,7 +91,6 @@ func request_clients():
 
 remote func client_data(arg):
 	current_clients = arg
-	emit_signal('client_request')
 
 # extra stuff
 

+ 20 - 1
Client.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=9 format=2]
+[gd_scene load_steps=10 format=2]
 
 [ext_resource path="res://Debug.tscn" type="PackedScene" id=1]
 [ext_resource path="res://PowerMenu.tscn" type="PackedScene" id=2]
@@ -9,6 +9,15 @@
 [ext_resource path="res://enemiessprite.gd" type="Script" id=7]
 [ext_resource path="res://font/tiny.tres" type="DynamicFont" id=8]
 
+[sub_resource type="GDScript" id=1]
+script/source = "extends Label
+
+func _input(event):
+	if visible:
+		if Input.is_action_just_pressed('ui_select'):
+			get_parent().get_parent().spawn_request()
+"
+
 [node name="Client" type="Node" groups=["client"]]
 script = ExtResource( 3 )
 
@@ -73,5 +82,15 @@ anchor_right = 1.0
 anchor_bottom = 1.0
 color = Color( 0, 0, 0, 0.207843 )
 
+[node name="spawnmsg" type="CanvasLayer" parent="."]
+
+[node name="spawnmsg" type="Label" parent="spawnmsg"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+text = "press \"space\" to spawn"
+align = 1
+valign = 1
+script = SubResource( 1 )
+
 [connection signal="timeout" from="Debug/ping/Timer" to="Debug/ping" method="_on_Timer_timeout"]
 [connection signal="text_entered" from="Chat/LineEdit" to="." method="chat_messages"]

+ 22 - 10
Server.gd

@@ -47,16 +47,28 @@ remote func tokenreply(token, username):
 	print(data)
 	print(message)
 	if message == 'token validated':
-		print('clients connected: ' + str(custom_multiplayer.get_network_connected_peers().size()))
-		var instance = playerphsyics.instance()
-		instance.name = str(api.get_rpc_sender_id())
-		$players.add_child(instance)
-		if username == null or username == "":
-			username = 'player' +  str(custom_multiplayer.get_network_connected_peers().size())
-		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')
+		player_spawn_queue[api.get_rpc_sender_id()] = {'id' : str(api.get_rpc_sender_id()), 'username':username, 'can_spawn':true}
+		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):
+	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)
+	if username == null or username == "":
+		username = 'player' +  str(custom_multiplayer.get_network_connected_peers().size())
+	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')
+
+var player_spawn_queue = {}
 
 func send_list_of_usernames(user, username):
 	rpc_id(user,'_on_usernames', usernames_dict)

+ 2 - 2
main.tscn

@@ -52,7 +52,7 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin1"]
 modulate = Color( 0, 0.811765, 1, 1 )
 frames = SubResource( 5 )
-frame = 2
+frame = 1
 playing = true
 offset = Vector2( 32, 32 )
 
@@ -64,7 +64,7 @@ render_target_v_flip = true
 
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin2"]
 frames = SubResource( 5 )
-frame = 2
+frame = 3
 speed_scale = 0.8
 playing = true
 offset = Vector2( 32, 32 )