using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; namespace DDD { public enum GameFlowState { None = 0, ReadyForRestaurant = 1, RunRestaurant = 2, SettlementRestaurant = 3, } public class GameFlowData : ScriptableObject { public GameFlowState CurrentGameState; } [CreateAssetMenu(fileName = "GameFlowSceneMapping", menuName = "GameFlow/GameFlowSceneMapping")] public class GameFlowSceneMapping : ScriptableObject { public Dictionary FlowToSceneMapping = new Dictionary(); } public class GameFlowManager : Singleton, IManager { private GameFlowData _gameFlowData = null; public GameFlowSceneMapping GameFlowSceneMapping; public void Init() { _gameFlowData = new GameFlowData(); } public void PostInit() { if (IsGameStarted() == false) { Scene sceneToLoad; bool isSceneFound = GameFlowSceneMapping.FlowToSceneMapping.TryGetValue(_gameFlowData.CurrentGameState, out sceneToLoad); if (isSceneFound == false) { SceneManager.Instance.RequestSceneLoad(sceneToLoad); } else { Debug.Assert(false, "Scene not found!"); } } } public bool IsGameStarted() => _gameFlowData.CurrentGameState != GameFlowState.None; protected override void Awake() { base.Awake(); } private void Start() { } } }