1
Fork 0
mirror of https://github.com/Steffo99/nanogolf.git synced 2025-02-16 14:43:58 +00:00
algodist-steffo-nanogolf/scenes/multiple_players_tracker.gd

39 lines
1.2 KiB
GDScript3
Raw Normal View History

2024-02-27 03:54:47 +01:00
extends MultiplayerSpawner
class_name MultiplePlayersTracker
# Requires the peer_id as data for the spawn function.
2024-02-28 06:30:45 +01:00
signal trackers_changed(trackers: Dictionary)
2024-02-27 03:54:47 +01:00
2024-02-28 06:30:45 +01:00
func emit_trackers_changed():
trackers_changed.emit(trackers_by_peer_id)
var trackers_by_peer_id: Dictionary = {}
2024-02-27 03:54:47 +01:00
2024-02-28 06:30:45 +01:00
func find(peer_id: int) -> SinglePlayerTracker:
return trackers_by_peer_id.get(peer_id)
@rpc("authority", "call_local", "reliable")
func mark_disconnected(peer_id: int):
var single_tracker_instance = find(peer_id)
single_tracker_instance.set_multiplayer_authority(1)
single_tracker_instance.peer_connected = false
emit_trackers_changed()
2024-02-27 03:54:47 +01:00
func _ready():
spawn_function = _spawn_tracker
2024-02-28 06:30:45 +01:00
func _spawn_tracker(peer_id: int) -> Node:
2024-02-27 03:54:47 +01:00
var single_tracker_scene: PackedScene = load(get_spawnable_scene(0))
var single_tracker_instance: SinglePlayerTracker = single_tracker_scene.instantiate()
2024-02-28 06:30:45 +01:00
single_tracker_instance.set_multiplayer_authority(peer_id)
single_tracker_instance.identity_updated.connect(_on_tracker_identity_updated)
trackers_by_peer_id[peer_id] = single_tracker_instance
emit_trackers_changed()
2024-02-27 03:54:47 +01:00
return single_tracker_instance
2024-02-28 06:30:45 +01:00
func _on_tracker_identity_updated(_player_name: String, _player_color: Color):
emit_trackers_changed()