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