Files
tekton/scripts/managers/player_manager.gd
T

39 lines
1.1 KiB
GDScript

extends Node
# PlayerManager - Handles player and bot lifecycle management
signal player_added(peer_id, player_node)
signal player_removed(peer_id)
signal bot_created(bot_id, bot_node)
signal bot_removed(bot_id)
var player_scene = preload("res://scenes/player.tscn")
var connected_peer_ids = []
func add_player_character(peer_id: int, position: Vector2i = Vector2i.ZERO) -> Node:
var player_character = player_scene.instantiate()
player_character.set_multiplayer_authority(peer_id)
player_character.name = str(peer_id)
connected_peer_ids.append(peer_id)
return player_character
func create_bot(bot_id: int) -> Node:
var bot_character = player_scene.instantiate()
bot_character.set_multiplayer_authority(1) # Server controls bots
bot_character.name = str(bot_id)
bot_character.is_bot = true
return bot_character
func remove_player(peer_id: int):
connected_peer_ids.erase(peer_id)
emit_signal("player_removed", peer_id)
func get_next_available_bot_id(max_players: int, current_players: Array) -> int:
for i in range(2, max_players + 1):
if not i in current_players:
return i
return -1