Browse Source

fixed bugs, added support the username, added chat

galo 1 year ago
parent
commit
f76ebd96da
8 changed files with 92 additions and 21 deletions
  1. 17 1
      Client.gd
  2. 22 0
      Client.tscn
  3. 2 0
      Login.gd
  4. 34 10
      Server.gd
  5. 7 2
      hud.gd
  6. 4 2
      loginnetcode.gd
  7. 4 2
      main.tscn
  8. 2 4
      playersprite.tscn

+ 17 - 1
Client.gd

@@ -25,7 +25,8 @@ remote func ping():
 	print('messaged received from server')
 
 remote func tokerequest():
-	var tk = get_parent().get_node('Loginetcode').token
+	var tk = get_parent().get_node('Loginetcode').token_buffer
+	print('tk is ' + tk)
 	var username = get_parent().get_node('Loginetcode').username_server
 	rpc_id(1,'tokenreply', tk, username)
 
@@ -154,3 +155,18 @@ remote func powerpick(arg , id):
 func players_choice_is(choice, idbuffer):
 #	print(choice)
 	rpc_id(1,'optionpick',idbuffer, choice)
+
+remote func _On_chat_Message(arg):
+	$RichTextLabel.text += arg + "\n"
+
+func chat_messages(arg):
+	print(arg)
+	$LineEdit.text= ''
+	rpc_id(1,'chat_messages', arg)
+
+var usernamelist = {}
+
+remote func _on_usernames(arg):
+	for i in arg.keys():
+		usernamelist[i] = arg[i]
+

+ 22 - 0
Client.tscn

@@ -44,3 +44,25 @@ __meta__ = {
 }
 
 [node name="PowerMenu" parent="." instance=ExtResource( 2 )]
+
+[node name="LineEdit" type="LineEdit" parent="."]
+modulate = Color( 1, 1, 1, 0.627451 )
+margin_left = 480.0
+margin_top = 320.0
+margin_right = 620.0
+margin_bottom = 344.0
+align = 2
+placeholder_text = "....message"
+
+[node name="RichTextLabel" type="RichTextLabel" parent="."]
+margin_left = 480.0
+margin_top = 220.0
+margin_right = 620.0
+margin_bottom = 315.0
+
+[node name="ColorRect" type="ColorRect" parent="RichTextLabel"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+color = Color( 0, 0, 0, 0.207843 )
+
+[connection signal="text_entered" from="LineEdit" to="." method="chat_messages"]

+ 2 - 0
Login.gd

@@ -26,10 +26,12 @@ func _on_Button_button_down():
 	client2.port = int(port)
 	get_parent().add_child(client2)
 	pass # Replace with function body.
+
 func _on_Button2_button_down():
 	var server2 = server.instance()
 	var auth2 = auth.instance()
 	get_parent().add_child(server2)
+	server2.db_validation = false
 	get_parent().add_child(auth2)
 	pass # Replace with function body.
 

+ 34 - 10
Server.gd

@@ -29,20 +29,44 @@ func conn(id):
 	rpc_id(0,'ping')
 	rpc_id(0,'tokerequest')
 
+export var db_validation = true
+
 remote func tokenreply(token, username):
 	var db = get_parent().get_node('PostgreSQL')
-	var data = db.Read('validtokens_database','username',"'"+username+"'")
+	var data = db.Read('validtokens_database','username',"'"+str(username)+"'")
 	var message = 'token validated'
-	if data == []:
-		message = "no token found"
-	if data[0][2] != token:
-		message = "token is invalid"
-	print('check tokens....')
+	if db_validation:
+		if data == [] or data == null:
+			message = "no token found"
+			return
+		if data[0][2] != token:
+			message = "token is invalid"
+		print('check tokens....')
+	print(token)
 	print(data)
-	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)
+	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)
+
+func send_list_of_usernames(user, username):
+	rpc_id(user,'_on_usernames', usernames_dict)
+	rpc_id(0,'_on_usernames', { user : username } )
+
+var messages_array = []
+var usernames_dict = {}
+
+remote func chat_messages(message):
+	if $players.has_node(str(api.get_rpc_sender_id())):
+		var buff = usernames_dict[api.get_rpc_sender_id()] + ': ' + str(message)
+		messages_array.append( buff )
+		rpc_id(0,'_On_chat_Message', buff)
 
 remote func connected_peer():
 	print('syncing clients')

+ 7 - 2
hud.gd

@@ -1,8 +1,13 @@
 extends VBoxContainer
 
+func _physics_process(delta):
+	var dad = get_node("../../..")
+	if dad.usernamelist.has(int(name)):
+		$username.text = dad.usernamelist[int(name)]
+
 func _update(arg):
-	if arg.has('name'):
-		$username.text = arg.name
+#	if arg.has('name'):
+#		$username.text = arg.name
 	if arg.has('k'):
 		$enemieskilled.text = 'enemies killed: ' + str(arg.k)
 	if arg.has('hp'):

+ 4 - 2
loginnetcode.gd

@@ -51,12 +51,14 @@ remote func update_status(message):
 	get_parent().get_node('LoginUI/register/VBoxContainer/Label').text = message
 	get_parent().get_node('LoginUI/loginscreen/VBoxContainer/Label2').text = message
 
-var token = ''
+var token_buffer = ''
 var username_server = ''
+signal token_arrived
 
 remote func _on_servertoken(token, username):
 	print('token arrived: ')
 	get_parent().get_node("LoginUI").emit_signal("login_confimed")
 	print(token)
-	token = token
+	token_buffer = token
+	emit_signal('token_arrived')
 	username_server = username

+ 4 - 2
main.tscn

@@ -46,7 +46,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 = 1
+frame = 2
 playing = true
 offset = Vector2( 32, 32 )
 
@@ -58,7 +58,6 @@ render_target_v_flip = true
 
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin2"]
 frames = SubResource( 5 )
-frame = 3
 speed_scale = 0.8
 playing = true
 offset = Vector2( 32, 32 )
@@ -72,6 +71,7 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin3"]
 modulate = Color( 1, 0, 0, 1 )
 frames = SubResource( 5 )
+frame = 2
 speed_scale = 1.2
 playing = true
 offset = Vector2( 32, 32 )
@@ -85,6 +85,7 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin4"]
 modulate = Color( 1, 0, 0.984314, 1 )
 frames = SubResource( 5 )
+frame = 3
 speed_scale = 0.9
 playing = true
 offset = Vector2( 32, 32 )
@@ -160,6 +161,7 @@ pressed = true
 text = "login"
 
 [node name="loginscreen" type="Control" parent="LoginUI"]
+visible = false
 anchor_right = 1.0
 anchor_bottom = 1.0
 margin_left = 180.0

+ 2 - 4
playersprite.tscn

@@ -242,6 +242,7 @@ font_data = ExtResource( 5 )
 [node name="playersprite" type="AnimatedSprite"]
 frames = SubResource( 27 )
 animation = "idle"
+frame = 5
 playing = true
 offset = Vector2( 3.72692, -21.0081 )
 script = SubResource( 28 )
@@ -278,12 +279,9 @@ margin_right = 29.5
 margin_bottom = -55.1752
 rect_scale = Vector2( 3, 1e-05 )
 rect_pivot_offset = Vector2( 27.5174, 6.3988 )
-custom_fonts/font = SubResource( 34 )
 custom_colors/font_color = Color( 0.688718, 0.956076, 0.892019, 1 )
 custom_colors/font_outline_modulate = Color( 0.221796, 0.266142, 0.474243, 1 )
+custom_fonts/font = SubResource( 34 )
 text = "Level Up"
 align = 1
 valign = 1
-__meta__ = {
-"_edit_use_anchors_": false
-}