// ---------------------------------------------------------------------------
// BT.Framework
// InitMode.cs — MonoSingleton 초기화 모드
// ---------------------------------------------------------------------------
namespace BurningTimes.Core.Patterns
{
    /// <summary>
    /// <see cref="MonoSingleton{T}"/>의 초기화 모드.
    /// </summary>
    public enum InitMode
    {
        /// <summary>
        /// <see cref="MonoSingleton{T}.OnInitialized"/> 가 <c>Awake</c>에서 즉시 실행되고
        /// <see cref="MonoSingleton{T}.IsReady"/>는 그 직후 <c>true</c>가 된다(기본값).
        /// </summary>
        Sync = 0,

        /// <summary>
        /// <see cref="MonoSingleton{T}.OnInitializeAsync"/> 가 코루틴으로 실행되며
        /// 완료 시 <see cref="MonoSingleton{T}.IsReady"/>가 <c>true</c>로 전환된다.
        /// </summary>
        Async = 1,

        /// <summary>
        /// 구현체가 <see cref="MonoSingleton{T}.MarkReady"/> 를 직접 호출할 때까지
        /// <see cref="MonoSingleton{T}.IsReady"/>는 <c>false</c>를 유지한다.
        /// </summary>
        ManualReady = 2,
    }
}
