2026-02-11 17:03:15 +00:00
|
|
|
@icon("res://assets/icons/game.svg")
|
2026-02-11 03:01:44 +00:00
|
|
|
class_name GameManager
|
|
|
|
|
extends Node2D
|
|
|
|
|
|
|
|
|
|
@export var ball: Ball
|
|
|
|
|
@export var court: Court
|
2026-02-13 03:39:13 +00:00
|
|
|
@export_group("Teams")
|
|
|
|
|
@export var home_team: Team
|
|
|
|
|
@export var away_team: Team
|
|
|
|
|
|
|
|
|
|
var players: Array
|
|
|
|
|
var active_player: Player: set = set_active_player
|
|
|
|
|
|
|
|
|
|
func _ready() -> void:
|
|
|
|
|
players = get_tree().get_nodes_in_group("players")
|
|
|
|
|
for player in players:
|
|
|
|
|
player.connect("turn_finished", on_player_turn_finished)
|
2026-02-15 03:17:23 +00:00
|
|
|
player.is_active = false
|
2026-02-13 03:39:13 +00:00
|
|
|
active_player = players[0] as Player
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Signal-handlers
|
|
|
|
|
func on_player_turn_finished() -> void:
|
|
|
|
|
print_debug("Moving to the next player in the turn order")
|
|
|
|
|
if players.find(active_player) < players.size() -1:
|
|
|
|
|
active_player = players.get(players.find(active_player) + 1)
|
|
|
|
|
else:
|
|
|
|
|
active_player = players.get(0)
|
|
|
|
|
|
|
|
|
|
## Setters
|
|
|
|
|
func set_active_player(new_active_player) -> void:
|
|
|
|
|
active_player = new_active_player
|
|
|
|
|
print_debug("The game is setting the active player to %s" % active_player.attributes.player_name)
|
|
|
|
|
active_player.is_active = true
|