class_name PlayManager extends Resource
## Abstract base type for strategies to manage the flow of gameplay

## List of game player instances
@export var players: Array[WorldPlayer] = []


func initialize() -> void:
	for player: WorldPlayer in players:
		player.shot_setup.finished.connect(_on_turn_finished)
	on_initialization()


func on_initialization() -> void:
	pass  # Implemented in derived type


func on_turn_finished(_shot_setup: ShotSetup) -> void:
	pass  # Implemented in derived type


func _on_turn_finished(shot_setup: ShotSetup) -> void:
	on_turn_finished(shot_setup)
