23 lines
716 B
GDScript
23 lines
716 B
GDScript
## 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", "")
|