68 lines
1.7 KiB
C#
68 lines
1.7 KiB
C#
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<GameFlowState, Scene> FlowToSceneMapping = new Dictionary<GameFlowState, Scene>();
|
|
}
|
|
|
|
public class GameFlowManager : Singleton<GameFlowManager>, 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()
|
|
{
|
|
}
|
|
}
|
|
} |