using System; using System.Collections; using AibisDream.Framework; namespace AibisDream.FixSystem { public class FixSystemCenter : Kit.Singleton { public FixState CurState => StateMachine.CurState; private readonly FixSystemData _data = new(); public override void OnSingletonInit() { SystemDic ??= new IOCContainer(); // 初始化状态机 StateMachine = new FixStateMachine(); StartCoroutine(StateMachine.SwitchState(FixState.Clinic)); // 注册 StorageSystem.Instance.RegisterData(_data); } public override void OnSingletonDestroy() { CameraKit.Instance.RemoveAllCam(); GameManager.Instance.StartCoroutine(StateMachine.QuitState()); SystemDic.Clear(); // 注销 StorageSystem.Instance.UnregisterData(); } #region 系统索引 // 容纳System public static IOCContainer SystemDic = new(); #endregion #region 状态机相关 public static FixStateMachine StateMachine; #endregion } [Serializable] [LoadIndex(2)] public class FixSystemData : IData { private FixState _curState; public FixState CurState { get => FixSystemCenter.Instance.CurState; set => _curState = value; } public IEnumerator Load() { yield return FixSystemCenter.StateMachine.SwitchState(_curState); } } }