extends Node # GameStateManager - Central game state management signal game_started() signal game_state_changed() @export var enable_bots: bool = true @export var max_players: int = 4 var players: Array = [] var bots: Array = [] var game_started_flag: bool = false var local_player_character: CharacterBody3D func is_game_started() -> bool: return game_started_flag func start_game(): game_started_flag = true emit_signal("game_started") func add_player(peer_id: int): if not peer_id in players: players.append(peer_id) emit_signal("game_state_changed") func remove_player(peer_id: int): players.erase(peer_id) emit_signal("game_state_changed") func add_bot(bot_id: int): if not bot_id in bots: bots.append(bot_id) players.append(bot_id) emit_signal("game_state_changed") func remove_bot(bot_id: int): bots.erase(bot_id) players.erase(bot_id) emit_signal("game_state_changed") func end_game(): """End the current game and prepare for return to lobby.""" game_started_flag = false emit_signal("game_state_changed") func reset(): players.clear() bots.clear() game_started_flag = false local_player_character = null