## GameState.gd ## Tracks global game state: current phase, wave number, player registrations. extends Node enum Phase { LOBBY, BUILD, COMBAT, INCOME, GAME_OVER } var current_phase: Phase = Phase.LOBBY var wave_number: int = 0 var players: Dictionary = {} # player_id -> { race, lane_node } var game_over: bool = false func register_player(player_id: int, race: String, lane_node: Node) -> void: players[player_id] = { "race": race, "lane": lane_node } func set_phase(new_phase: Phase) -> void: current_phase = new_phase EventBus.phase_changed.emit(new_phase) func advance_wave() -> void: wave_number += 1 func get_player_race(player_id: int) -> String: return players.get(player_id, {}).get("race", "")