Ludo-3D/Assets/Scripts/State/GameManager.cs

73 lines
1.8 KiB
C#
Raw Normal View History

using UnityEngine;
public enum GameState
{
InMenu,
InGame,
2026-01-30 21:51:33 +05:30
GameOver,
}
public class GameManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
{
private UIManager uiManager;
private TilesManager tilesManager;
2026-01-30 21:51:33 +05:30
private GameplayManager gameplayManager;
public GameState GameState
{
get; private set;
}
2026-02-02 19:27:17 +05:30
private GameState PrevGameState;
public void Initialize()
{
InterfaceManager.Instance.RegisterInterface<GameManager>(this);
}
public void InitializeData()
{
uiManager = InterfaceManager.Instance.GetInterfaceInstance<UIManager>();
tilesManager = InterfaceManager.Instance.GetInterfaceInstance<TilesManager>();
2026-01-30 21:51:33 +05:30
gameplayManager = InterfaceManager.Instance.GetInterfaceInstance<GameplayManager>();
2026-01-30 21:51:33 +05:30
OnGameStateChanged(GameState.InMenu);
}
public void OnGameStateChanged(GameState gameState)
{
2026-02-02 19:27:17 +05:30
PrevGameState = GameState;
2026-01-30 21:51:33 +05:30
GameState = gameState;
2026-02-02 17:21:38 +05:30
Debug.Log($"OnGameStateChanged: {gameState}");
switch (gameState)
{
case GameState.InMenu:
2026-02-02 19:27:17 +05:30
CheckPrevGameState();
uiManager.OnInMenuScreen();
2026-02-02 19:27:17 +05:30
break;
case GameState.InGame:
uiManager.OnInGameScreen();
break;
2026-01-30 21:51:33 +05:30
case GameState.GameOver:
uiManager.OnGameOver();
break;
}
}
2026-02-02 19:27:17 +05:30
private void CheckPrevGameState()
{
if (PrevGameState == GameState.InGame) // returning to menu from in-game
{
ResetGameDatas();
}
}
public void ResetGameDatas()
{
gameplayManager.ResetTileDatasForPlayers();
gameplayManager.ResetData();
tilesManager.ResetData();
gameplayManager.PlayerBaseHandler.ResetPlayerBaseData();
}
}