48 lines
1011 B
GDScript
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
|