73 lines
1.8 KiB
C#
73 lines
1.8 KiB
C#
using UnityEngine;
|
|
|
|
public enum GameState
|
|
{
|
|
InMenu,
|
|
InGame,
|
|
GameOver,
|
|
}
|
|
|
|
public class GameManager : MonoBehaviour, IBase, IBootLoader, IDataLoader
|
|
{
|
|
private UIManager uiManager;
|
|
private TilesManager tilesManager;
|
|
private GameplayManager gameplayManager;
|
|
|
|
public GameState GameState
|
|
{
|
|
get; private set;
|
|
}
|
|
|
|
private GameState PrevGameState;
|
|
|
|
public void Initialize()
|
|
{
|
|
InterfaceManager.Instance.RegisterInterface<GameManager>(this);
|
|
}
|
|
|
|
public void InitializeData()
|
|
{
|
|
uiManager = InterfaceManager.Instance.GetInterfaceInstance<UIManager>();
|
|
tilesManager = InterfaceManager.Instance.GetInterfaceInstance<TilesManager>();
|
|
gameplayManager = InterfaceManager.Instance.GetInterfaceInstance<GameplayManager>();
|
|
|
|
OnGameStateChanged(GameState.InMenu);
|
|
}
|
|
|
|
public void OnGameStateChanged(GameState gameState)
|
|
{
|
|
PrevGameState = GameState;
|
|
GameState = gameState;
|
|
Debug.Log($"OnGameStateChanged: {gameState}");
|
|
switch (gameState)
|
|
{
|
|
case GameState.InMenu:
|
|
CheckPrevGameState();
|
|
uiManager.OnInMenuScreen();
|
|
break;
|
|
case GameState.InGame:
|
|
uiManager.OnInGameScreen();
|
|
break;
|
|
case GameState.GameOver:
|
|
uiManager.OnGameOver();
|
|
break;
|
|
}
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|