Files
aibis-dream/Assets/Scripts/Game Loop/ApplicationBootstrapper.cs

36 lines
1.1 KiB
C#

using System.Collections;
using AibisDream.Framework;
using AibisDream.SaveSystem;
using AibisDream.UI;
using UnityEngine;
namespace AibisDream
{
/// <summary>负责 Persistence 场景中的应用级初始化,不参与游戏会话流程。</summary>
[DefaultExecutionOrder(-100)]
public sealed class ApplicationBootstrapper : MonoBehaviour
{
private const float MainMenuFadeDuration = 0.5f;
private IEnumerator Start()
{
SettingLoader.Init();
SnapshotRegistry.EnsureInitialized();
var transitionPanel = UIManager.Instance.GetPanel<ScreenTransitionPanel>();
UIManager.Instance.ShowPanel<ScreenTransitionPanel>();
transitionPanel?.ApplyScreenCovered(true);
yield return LocalizationKit.WaitUntilReady();
EnumEventSystem.Global.Send(GameLifecycleEvent.ApplicationReady);
yield return LocalizationKit.WaitForUIRefresh();
if (transitionPanel != null)
{
yield return transitionPanel.FadeOutAsync(MainMenuFadeDuration);
}
}
}
}