ProjectDDD/Assets/_DDD/_Scripts/GameFlow/GameFlowManager.cs
2025-07-08 19:46:31 +09:00

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()
{
}
}
}