Files
tekton/scripts/managers/game_state_manager.gd
T

48 lines
1011 B
GDScript

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 reset():
players.clear()
bots.clear()
game_started_flag = false
local_player_character = null