using System; using UnityEngine; using Zenject; namespace FlappyBird.Core { public class GameManager : IGameManager, IInitializable { public GameState CurrentState { get; private set; } = GameState.Menu; public event Action OnGameStateChanged; public void Initialize() { CurrentState = GameState.Menu; Debug.Log($"Gameplay state: {CurrentState}"); } public void StartGame() { if (CurrentState != GameState.Menu) { return; } TransitionTo(GameState.Playing); } public void GameOver() { if (CurrentState != GameState.Playing) { return; } TransitionTo(GameState.GameOver); } public void ReturnToMenu() { if (CurrentState == GameState.Menu) { return; } TransitionTo(GameState.Menu); } private void TransitionTo(GameState state) { if (CurrentState == state) { return; } CurrentState = state; Debug.Log($"Gameplay state: {CurrentState}"); OnGameStateChanged?.Invoke(CurrentState); } } }