매니저 초기화 순서 보장
This commit is contained in:
parent
f07d3f196b
commit
7d82436c0c
@ -47,14 +47,25 @@ protected override void OnApplicationQuit()
|
|||||||
ReleaseAllCached();
|
ReleaseAllCached();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PreInit() { }
|
public void PreInit()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public async Task Init()
|
public async Task PreInitAsync()
|
||||||
{
|
{
|
||||||
await Addressables.InitializeAsync().Task;
|
await Addressables.InitializeAsync().Task;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit() { }
|
public Task InitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task PostInitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
private string GetSafeAssetName(AssetReference assetReference)
|
private string GetSafeAssetName(AssetReference assetReference)
|
||||||
{
|
{
|
||||||
|
@ -36,14 +36,19 @@ public void PreInit()
|
|||||||
_cinemachineBrain = GetComponent<CinemachineBrain>();
|
_cinemachineBrain = GetComponent<CinemachineBrain>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task Init()
|
public Task PreInitAsync()
|
||||||
{
|
{
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit()
|
public Task InitAsync()
|
||||||
{
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task PostInitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RegisterCamera(CameraGameObject cameraGameObject)
|
public void RegisterCamera(CameraGameObject cameraGameObject)
|
||||||
|
@ -22,15 +22,21 @@ public void PreInit()
|
|||||||
RegisterFlowHandler();
|
RegisterFlowHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Init()
|
public Task PreInitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task InitAsync()
|
||||||
{
|
{
|
||||||
await LoadData();
|
await LoadData();
|
||||||
await GetGameData().LoadData();
|
await GetGameData().LoadData();
|
||||||
await InitializeAllFlowControllers();
|
await InitializeAllFlowControllers();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit()
|
public Task PostInitAsync()
|
||||||
{
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreateGameState()
|
private void CreateGameState()
|
||||||
|
@ -17,20 +17,24 @@ public class DataManager : Singleton<DataManager>, IManager
|
|||||||
|
|
||||||
public void PreInit()
|
public void PreInit()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Init()
|
public async Task PreInitAsync()
|
||||||
{
|
{
|
||||||
await LoadAllGameDataAssets();
|
await LoadAllGameDataAssets();
|
||||||
await LoadSpriteAtlas();
|
await LoadSpriteAtlas();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit()
|
public Task InitAsync()
|
||||||
{
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task PostInitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
private async Task LoadAllGameDataAssets()
|
private async Task LoadAllGameDataAssets()
|
||||||
{
|
{
|
||||||
var assets = await AssetManager.Instance.LoadAssetsByLabel<ScriptableObject>(AssetLabel);
|
var assets = await AssetManager.Instance.LoadAssetsByLabel<ScriptableObject>(AssetLabel);
|
||||||
|
@ -26,12 +26,17 @@ public void PreInit()
|
|||||||
GameFlowDataSo.CurrentGameState = GameFlowState.None;
|
GameFlowDataSo.CurrentGameState = GameFlowState.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task Init()
|
public Task PreInitAsync()
|
||||||
{
|
{
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void PostInit()
|
public Task InitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task PostInitAsync()
|
||||||
{
|
{
|
||||||
if (IsGameStarted() == false)
|
if (IsGameStarted() == false)
|
||||||
{
|
{
|
||||||
@ -39,7 +44,7 @@ public async void PostInit()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsGameStarted() => GameFlowDataSo.CurrentGameState != GameFlowState.None;
|
public bool IsGameStarted() => GameFlowDataSo.CurrentGameState != GameFlowState.None;
|
||||||
|
|
||||||
public async Task ChangeFlow(GameFlowState newFlowState)
|
public async Task ChangeFlow(GameFlowState newFlowState)
|
||||||
{
|
{
|
||||||
|
@ -57,7 +57,7 @@ private async Task Initialize()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// PreInit 단계 실행
|
// Start 이전 초기화 보장
|
||||||
foreach (var managerInstance in _managerInstances)
|
foreach (var managerInstance in _managerInstances)
|
||||||
{
|
{
|
||||||
if (managerInstance is IManager manager)
|
if (managerInstance is IManager manager)
|
||||||
@ -65,22 +65,31 @@ private async Task Initialize()
|
|||||||
manager.PreInit();
|
manager.PreInit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PreInit 단계 실행 ( 데이터 준비 등 )
|
||||||
|
foreach (var managerInstance in _managerInstances)
|
||||||
|
{
|
||||||
|
if (managerInstance is IManager manager)
|
||||||
|
{
|
||||||
|
await manager.PreInitAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Init 단계 실행 (비동기)
|
// Init 단계 실행 (비동기)
|
||||||
foreach (var managerInstance in _managerInstances)
|
foreach (var managerInstance in _managerInstances)
|
||||||
{
|
{
|
||||||
if (managerInstance is IManager manager)
|
if (managerInstance is IManager manager)
|
||||||
{
|
{
|
||||||
await manager.Init();
|
await manager.InitAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// PostInit 단계 실행
|
// PostInit 단계 실행 ( 사실상 게임 시작된 상태 )
|
||||||
foreach (var managerInstance in _managerInstances)
|
foreach (var managerInstance in _managerInstances)
|
||||||
{
|
{
|
||||||
if (managerInstance is IManager manager)
|
if (managerInstance is IManager manager)
|
||||||
{
|
{
|
||||||
manager.PostInit();
|
await manager.PostInitAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,8 @@ namespace DDD
|
|||||||
public interface IManager
|
public interface IManager
|
||||||
{
|
{
|
||||||
void PreInit();
|
void PreInit();
|
||||||
Task Init();
|
Task PreInitAsync();
|
||||||
void PostInit();
|
Task InitAsync();
|
||||||
|
Task PostInitAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -18,8 +18,12 @@ public class LocalizationManager : Singleton<LocalizationManager>, IManager
|
|||||||
private const string Description = "_description";
|
private const string Description = "_description";
|
||||||
|
|
||||||
private readonly List<object> _singleArgBuffer = new(1);
|
private readonly List<object> _singleArgBuffer = new(1);
|
||||||
|
|
||||||
public async void PreInit()
|
public void PreInit()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task PreInitAsync()
|
||||||
{
|
{
|
||||||
_localizedCache.Clear();
|
_localizedCache.Clear();
|
||||||
_currentLocaleCode = GetCurrentLocaleCode();
|
_currentLocaleCode = GetCurrentLocaleCode();
|
||||||
@ -55,14 +59,14 @@ public async void PreInit()
|
|||||||
_isInitialized = true;
|
_isInitialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task Init()
|
public Task InitAsync()
|
||||||
{
|
{
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit()
|
public Task PostInitAsync()
|
||||||
{
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -51,9 +51,16 @@ private void OnDestroy()
|
|||||||
EventBus.Unregister<SmartVariablesDirtyEvent>(this);
|
EventBus.Unregister<SmartVariablesDirtyEvent>(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PreInit() { }
|
public void PreInit()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public async Task Init()
|
public Task PreInitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task InitAsync()
|
||||||
{
|
{
|
||||||
Set(_smartStringKeys[SmartStringKey.Day], GetGameLevelState().Level);
|
Set(_smartStringKeys[SmartStringKey.Day], GetGameLevelState().Level);
|
||||||
Set(_smartStringKeys[SmartStringKey.ChecklistFoodCount], GetRestaurantManagementData().ChecklistFoodCount);
|
Set(_smartStringKeys[SmartStringKey.ChecklistFoodCount], GetRestaurantManagementData().ChecklistFoodCount);
|
||||||
@ -66,10 +73,11 @@ public async Task Init()
|
|||||||
await Task.CompletedTask;
|
await Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit()
|
public Task PostInitAsync()
|
||||||
{
|
{
|
||||||
// 도메인 단위 더티 이벤트를 구독하여 필요한 key만 갱신
|
// 도메인 단위 더티 이벤트를 구독하여 필요한 key만 갱신
|
||||||
EventBus.Register<SmartVariablesDirtyEvent>(this);
|
EventBus.Register<SmartVariablesDirtyEvent>(this);
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void HandleEvent(SmartVariablesDirtyEvent evt)
|
public void HandleEvent(SmartVariablesDirtyEvent evt)
|
||||||
|
@ -30,14 +30,19 @@ public class SceneManager : Singleton<SceneManager>, IManager
|
|||||||
|
|
||||||
private readonly Dictionary<GameFlowState, SceneData> _loadedSceneDatas = new();
|
private readonly Dictionary<GameFlowState, SceneData> _loadedSceneDatas = new();
|
||||||
private readonly Dictionary<string, SceneData> _assetKeyToSceneData = new();
|
private readonly Dictionary<string, SceneData> _assetKeyToSceneData = new();
|
||||||
|
|
||||||
public void PreInit()
|
public void PreInit()
|
||||||
{
|
{
|
||||||
_loadedSceneDatas.Clear();
|
_loadedSceneDatas.Clear();
|
||||||
_assetKeyToSceneData.Clear();
|
_assetKeyToSceneData.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Init()
|
public Task PreInitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task InitAsync()
|
||||||
{
|
{
|
||||||
var activeScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene();
|
var activeScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene();
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
@ -64,9 +69,9 @@ public async Task Init()
|
|||||||
await PreloadAll();
|
await PreloadAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit()
|
public Task PostInitAsync()
|
||||||
{
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task PreloadAll()
|
public async Task PreloadAll()
|
||||||
|
@ -11,21 +11,26 @@ public class TimeManager : Singleton<TimeManager>, IManager, IEventHandler<TimeS
|
|||||||
public float CurrentTimeScale { get; private set; } = 1f;
|
public float CurrentTimeScale { get; private set; } = 1f;
|
||||||
|
|
||||||
private float _baseFixedDeltaTime;
|
private float _baseFixedDeltaTime;
|
||||||
|
|
||||||
public void PreInit()
|
public void PreInit()
|
||||||
{
|
{
|
||||||
_baseFixedDeltaTime = Time.fixedDeltaTime;
|
_baseFixedDeltaTime = Time.fixedDeltaTime;
|
||||||
EventBus.Register(this);
|
EventBus.Register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task Init()
|
public Task PreInitAsync()
|
||||||
{
|
{
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit()
|
public Task InitAsync()
|
||||||
{
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task PostInitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDestroy()
|
private void OnDestroy()
|
||||||
|
@ -30,20 +30,25 @@ public class InventoryManager : Singleton<InventoryManager>, IManager
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
private InventoryTestDataSo _inventoryTestDataSo;
|
private InventoryTestDataSo _inventoryTestDataSo;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public void PreInit()
|
public void PreInit()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task Init()
|
public Task PreInitAsync()
|
||||||
{
|
{
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit()
|
public Task InitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task PostInitAsync()
|
||||||
{
|
{
|
||||||
InitializeItemData();
|
InitializeItemData();
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeItemData()
|
private void InitializeItemData()
|
||||||
|
@ -29,7 +29,12 @@ public void PreInit()
|
|||||||
GameFlowManager.Instance.FlowHandlers.Add(this);
|
GameFlowManager.Instance.FlowHandlers.Add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task Init()
|
public Task PreInitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task InitAsync()
|
||||||
{
|
{
|
||||||
var flowToUiMapping = UiData.FlowToUiMapping;
|
var flowToUiMapping = UiData.FlowToUiMapping;
|
||||||
foreach (var flowToUis in flowToUiMapping)
|
foreach (var flowToUis in flowToUiMapping)
|
||||||
@ -48,9 +53,9 @@ public Task Init()
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit()
|
public Task PostInitAsync()
|
||||||
{
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task OnReadyNewFlow(GameFlowState newFlowState)
|
public Task OnReadyNewFlow(GameFlowState newFlowState)
|
||||||
|
@ -51,11 +51,10 @@ public class InputManager : Singleton<InputManager>, IManager
|
|||||||
public InputActionMaps CurrentInputActionMap { get; private set; }
|
public InputActionMaps CurrentInputActionMap { get; private set; }
|
||||||
|
|
||||||
private readonly Dictionary<(InputActionMaps, string), InputAction> _cachedActions = new();
|
private readonly Dictionary<(InputActionMaps, string), InputAction> _cachedActions = new();
|
||||||
|
|
||||||
public void PreInit()
|
public void PreInit()
|
||||||
{
|
{
|
||||||
_currentPlayerInput = GetComponent<PlayerInput>();
|
_currentPlayerInput = GetComponent<PlayerInput>();
|
||||||
|
|
||||||
_cachedActions.Clear();
|
_cachedActions.Clear();
|
||||||
foreach (var actionMap in _currentPlayerInput.actions.actionMaps)
|
foreach (var actionMap in _currentPlayerInput.actions.actionMaps)
|
||||||
{
|
{
|
||||||
@ -68,14 +67,19 @@ public void PreInit()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task Init()
|
public Task PreInitAsync()
|
||||||
{
|
{
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit()
|
public Task InitAsync()
|
||||||
{
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task PostInitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsNullCurrentPlayerInput()
|
private bool IsNullCurrentPlayerInput()
|
||||||
|
@ -31,20 +31,27 @@ public void PreInit()
|
|||||||
RegisterFlowHandler();
|
RegisterFlowHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Init()
|
public Task PreInitAsync()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task InitAsync()
|
||||||
{
|
{
|
||||||
await LoadData();
|
await LoadData();
|
||||||
await GetRestaurantData().LoadData();
|
await GetRestaurantData().LoadData();
|
||||||
await InitializeAllFlowControllers();
|
await InitializeAllFlowControllers();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInit()
|
public Task PostInitAsync()
|
||||||
{
|
{
|
||||||
var allInteractables = GetRestaurantState().EnvironmentState.GetAllInteractables();
|
var allInteractables = GetRestaurantState().EnvironmentState.GetAllInteractables();
|
||||||
foreach (var interactable in allInteractables)
|
foreach (var interactable in allInteractables)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreateRestaurantState()
|
private void CreateRestaurantState()
|
||||||
|
Loading…
Reference in New Issue
Block a user