Extract MatchParticipantComponent from Player entity and fix HealthComponent tests

This commit is contained in:
Squinty 2024-04-27 13:32:03 +00:00
parent 3ce62a6548
commit cfd0dd73fd
23 changed files with 149 additions and 124 deletions

View file

@ -15,6 +15,7 @@ script/source = "extends Node
func _ready() -> void:
player_node.died.connect(respawn_player)
player_node.match_participant_component.player_id = 1
func respawn_player(player : Player, _killer_id : int) -> void:
player.respawn(player_respawn_location)

View file

@ -40,8 +40,8 @@ func start_server(config : Dictionary) -> void:
# server setup
var peer : ENetMultiplayerPeer = ENetMultiplayerPeer.new()
peer.create_server(config["port"], MAX_CLIENTS)
multiplayer.multiplayer_peer = peer
multiplayer.peer_disconnected.connect(remove_player)
multiplayer.multiplayer_peer = peer
_load_map.call_deferred(config["map"], config["nickname"])
@ -69,23 +69,24 @@ func respawn_player(player : Player) -> void:
player.respawn.rpc(spawn_location)
func add_player(peer_id : int, nickname : String) -> void:
var match_participant_component : MatchParticipantComponent = MatchParticipantComponent.new()
var player : Player = PLAYER.instantiate()
player.died.connect(_on_player_died)
player.name = str(peer_id)
player.player_id = peer_id
player.team_id = ($RabbitScoringComponent as RabbitScoringComponent)._team_chasers.team_id
player.nickname = nickname
players.add_child(player)
player.global_position = _map_manager.get_player_spawn().position
player.died.connect(_on_player_died)
player.match_participant_component.player_id = peer_id
player.match_participant_component.team_id = ($RabbitScoringComponent as RabbitScoringComponent)._team_chasers.team_id
player.match_participant_component.nickname = nickname
$DeathmatchScoringComponent.subscribe_player(player)
scoreboard.add_player(player)
scoreboard.add_participant(player.match_participant_component)
print("Peer `%s` connected" % player.name)
func remove_player(peer_id : int) -> void:
var node_name : String = str(peer_id)
if players.has_node(node_name):
var player : Player = players.get_node(node_name)
scoreboard.remove_player(player)
scoreboard.remove_participant(player.match_participant_component)
player.died.disconnect(_on_player_died)
$DeathmatchScoringComponent.unsubscribe_player(player)
player.queue_free()