diff --git a/client/entities/characters/hp.gd b/client/entities/characters/hp.gd index 2a2b60bc12a7144ca04b62b0babf305251856cc3..f34dfe84dfc8b3cd4e4a310247ecb5010201339b 100644 --- a/client/entities/characters/hp.gd +++ b/client/entities/characters/hp.gd @@ -3,21 +3,26 @@ const GAMEPATH = "/root/game/" var posPv var player - +var my_id func _ready(): posPv = Vector3(0,0,0) player = get_node("../../") - var my_id = get_tree().get_network_unique_id() - - if str(my_id) != str (player.get_name()) : - set_text('pv : 20% ') + my_id = get_tree().get_network_unique_id() + + update_printed_hp() func _process(delta): var cam = get_tree().get_root().get_camera() - posPv.x = player.get_global_transform().origin.x-1 - posPv.y = player.get_global_transform().origin.y+2 + posPv.x = player.get_global_transform().origin.x - 0.5 + posPv.y = player.get_global_transform().origin.y + 2 var labelIdpos = cam.unproject_position(posPv) set_position(labelIdpos) + + +# update the current hp labels +func update_printed_hp(): + if str(my_id) != str (player.get_name()): + set_text(str(player.hp) + '%') \ No newline at end of file diff --git a/client/entities/characters/player.gd b/client/entities/characters/player.gd index c19b556830ce7c87d301bad111cad9523bb74a55..716c9c7a16c806d8cba91d63b94ad3fbe87da746 100644 --- a/client/entities/characters/player.gd +++ b/client/entities/characters/player.gd @@ -1,12 +1,19 @@ extends KinematicBody +var hp:int = 0 + + # Update the player's position based on the position computed by the remote scene on the server puppet func getRemoteMovement(position:Vector3): self.set_translation(position) + # Feedback when hurt puppet func hurt(hpNow:int): - print("You suffered a hit and are now at " + String(hpNow) + " !") + hp = hpNow + print("You suffered a hit and are now at " + String(hp)) + get_node("Labels/Hp").update_printed_hp() + # Feedback when killed puppet func die(killerId:int): @@ -14,6 +21,4 @@ puppet func die(killerId:int): # Hide the killed player (NB: the client is only about inputs and display) #self.set_visible(false) - - \ No newline at end of file diff --git a/client/entities/characters/player.tscn b/client/entities/characters/player.tscn index ed1cc7baedc2c9a9f31b3c3759de15804cb870c6..5c8fcf4b45d827153851d13b5244520656522168 100644 --- a/client/entities/characters/player.tscn +++ b/client/entities/characters/player.tscn @@ -7,18 +7,18 @@ [node name="player" type="KinematicBody"] script = ExtResource( 1 ) -[node name="Labels " type="Control" parent="."] +[node name="Labels" type="Control" parent="."] margin_right = 40.0 margin_bottom = 40.0 -[node name="Pseudo" type="Label" parent="Labels "] +[node name="Pseudo" type="Label" parent="Labels"] margin_right = 40.0 margin_bottom = 14.0 text = " " script = ExtResource( 2 ) -[node name="Hp" type="Label" parent="Labels "] +[node name="Hp" type="Label" parent="Labels"] margin_right = 40.0 margin_bottom = 14.0 script = ExtResource( 3 ) diff --git a/client/entities/characters/pseudo.gd b/client/entities/characters/pseudo.gd index 8dba6d621d0c245ffba582c9d24bc5efcd34bd85..a8bf8f6ff92783f8d3d7072a9994c64bce4a928d 100644 --- a/client/entities/characters/pseudo.gd +++ b/client/entities/characters/pseudo.gd @@ -10,7 +10,6 @@ func _ready(): cam = get_tree().get_root().get_camera() posId = Vector3(0,0,0) player = get_node("../../") - print("Bonjour:",player) var my_id = get_tree().get_network_unique_id() if str(my_id) != str (player.get_name()) : @@ -19,7 +18,7 @@ func _ready(): func _process(delta): - posId.x = player.get_global_transform().origin.x-1.5 - posId.y = player.get_global_transform().origin.y+3 + posId.x = player.get_global_transform().origin.x - 1.65 + posId.y = player.get_global_transform().origin.y + 2.7 var labelIdpos = cam.unproject_position(posId) set_position(labelIdpos) diff --git a/client/levels/lobby/lobby.gd b/client/levels/lobby/lobby.gd index 3c453e05ff8fe45fde29c903f5ea0d6bcf39c2f3..476b381ccbc70a3b0b2e2a2fca804925dc4f2a2c 100644 --- a/client/levels/lobby/lobby.gd +++ b/client/levels/lobby/lobby.gd @@ -1,7 +1,6 @@ extends Control func _ready(): - #gamestate.connect("connected_to_server", self, "_player_connected") get_tree().connect("connected_to_server", self, "_player_connected") get_tree().connect("connection_failed", self, "_connection_failed") get_tree().connect("server_disconnected", self, "_player_disconnected") @@ -26,11 +25,11 @@ func _on_joinButton_pressed(): gamestate.joinServer(ip, port) -#func _player_connected(): -# print("You successfuly joined the server with the id " + str(gamestate.get_network_unique_id())) -# -#func _connection_failed(): -# print("Connection failure") -# -#func _player_disconnected(): -# print("You disconnected the server") \ No newline at end of file +func _player_connected(): + print("You successfuly joined the server with the id " + str(get_tree().get_network_unique_id())) + +func _connection_failed(): + print("Connection failure") + +func _player_disconnected(): + print("You disconnected the server") \ No newline at end of file diff --git a/server/entities/characters/player.gd b/server/entities/characters/player.gd index a87dfd2b9beb688870c25bad4bf85c99f70af168..93d5ddd6a3fae55f57f9bd5b2264b642a6f58805 100644 --- a/server/entities/characters/player.gd +++ b/server/entities/characters/player.gd @@ -198,7 +198,7 @@ func secondaryAttack(): func hurt(damages:int, sourceId:int): hp += damages lastStrikerId = sourceId - rpc_unreliable_id(ownId, "hurt", hp) + rpc_unreliable("hurt", hp) func die(): rpc("die", lastStrikerId) diff --git a/server/levels/test/game.gd b/server/levels/test/game.gd index 86489f1ce45bb299a628551eb2bd362675d6e1f0..7364c55bab5e5524e696f80ba7d031731e0f29cb 100644 --- a/server/levels/test/game.gd +++ b/server/levels/test/game.gd @@ -1,7 +1,6 @@ extends Node master func sendPlayerInputs(movementInput:int, jumpInput:bool, jumpId:int, sprintInput:bool, attackStateInput:int): - # Get the input from a client and send it to the matching remote player var senderId:int = get_tree().get_rpc_sender_id() if gamestate.players.has(senderId):