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