From c3ce3b96b0dcfdaf3e997e402b2bcb219fab4ab9 Mon Sep 17 00:00:00 2001 From: Squinty Date: Mon, 22 Apr 2024 22:07:58 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Assign=20kills=20and=20points=20on?= =?UTF-8?q?=20kill,=20not=20on=20respawn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entities/player/player.gd | 23 ++++++++--------------- modes/multiplayer.tscn | 9 +++++++-- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/entities/player/player.gd b/entities/player/player.gd index 2ab13fe..727182f 100644 --- a/entities/player/player.gd +++ b/entities/player/player.gd @@ -62,6 +62,10 @@ var g : float = ProjectSettings.get_setting("physics/3d/default_gravity") # in m var gravity : Vector3 = g * ProjectSettings.get_setting("physics/3d/default_gravity_vector") var _jumping : bool = false +@rpc("call_local") +func set_nickname(value : String) -> void: + nickname = value + func _ready() -> void: energy_changed.connect(hud._on_energy_changed) health_component.health_changed.connect(hud._on_health_changed) @@ -228,28 +232,17 @@ func _update_third_person_animations() -> void: tp_player.set_locomotion(Vector2(local_velocity.x, local_velocity.z), bias) func _is_player_dead() -> bool: - return player_state == PlayerState.PLAYER_DEAD + return player_state != PlayerState.PLAYER_ALIVE func die(killer_id : int) -> void: + flag_carry_component.drop() player_state = PlayerState.PLAYER_DEAD if _is_pawn(): - animation_player.stop() animation_player.play("death") - var tween : Tween = create_tween() - tween.tween_interval(4) - tween.tween_callback(func() -> void: - died.emit(self, killer_id) - if _is_pawn(): - animation_player.stop() - ) - flag_carry_component.drop() - -@rpc("call_local") -func set_nickname(value : String) -> void: - nickname = value + died.emit(self, killer_id) func respawn(location : Vector3) -> void: + player_state = PlayerState.PLAYER_ALIVE linear_velocity = Vector3() health_component.heal_full() position = location - player_state = PlayerState.PLAYER_ALIVE diff --git a/modes/multiplayer.tscn b/modes/multiplayer.tscn index 92b1dd2..df1397c 100644 --- a/modes/multiplayer.tscn +++ b/modes/multiplayer.tscn @@ -13,6 +13,7 @@ script/source = "class_name Multiplayer extends Node @export var PLAYER : PackedScene @export var FLAG : PackedScene @export var MAX_CLIENTS : int = 24 +@export var RESPAWN_TIME : float = 3.0 @onready var players : Node = $Players @onready var objectives : Node = $Objectives @@ -50,7 +51,7 @@ func _on_connected_to_server(nickname : String) -> void: func _on_connection_failed() -> void: connection_failed.emit() -func respawn_player(player : Player, killer_id : int) -> void: +func _on_player_died(player : Player, killer_id : int) -> void: if player.player_id != killer_id: var node_name : String = str(killer_id) if players.has_node(node_name): @@ -58,6 +59,10 @@ func respawn_player(player : Player, killer_id : int) -> void: scoreboard.increment_kill_count(killer) scoreboard.add_score_to_player(killer, 10) scoreboard.broadcast_player_score_update(killer) + await get_tree().create_timer(RESPAWN_TIME).timeout + respawn_player(player) + +func respawn_player(player : Player) -> void: var spawn_location : Vector3 = _map_manager.get_player_spawn().position player.respawn(spawn_location) @@ -68,7 +73,7 @@ func add_player(peer_id : int, nickname : String) -> void: player.nickname = nickname player.global_position = _map_manager.get_player_spawn().position players.add_child(player) - player.died.connect(respawn_player) + player.died.connect(_on_player_died) scoreboard.add_entry(player) print(\"Peer `%s` connected\" % player.name)