4
0
Fork 0
WolfBox/scripts/players.gd

48 lines
1.3 KiB
GDScript

extends Node
@export var player_scene: PackedScene = preload("res://objects/player.tscn")
signal player_joined(player: Player)
signal player_left(player: Player)
func _ready() -> void:
connect("child_entered_tree", on_child_added)
@rpc("any_peer", "call_remote", "reliable")
func create_player_for_session_id(session_id: int) -> void:
for child in get_children():
var player: Player = child as Player
if player == null:
continue
if player.session_id == session_id:
return
var player: Player = player_scene.instantiate() as Player
player.name = "Player %d" % session_id
player.session_id = session_id
print("Created player object for session ID %d" % session_id)
add_child(player)
func find_player_by_session_id(session_id: int) -> Player:
for child in get_children():
var player: Player = child as Player
if player == null:
continue
if player.session_id == session_id:
return player
create_player_for_session_id.rpc_id(1, session_id)
for child in get_children():
var player: Player = child as Player
if player == null:
continue
if player.session_id == session_id:
return player
return null
func on_child_added(node: Node) -> void:
if node is Player:
print("Player joined: %d" % node.session_id)
player_joined.emit(node as Player)