using System; using System.Collections; using AibisDream.Framework; namespace AibisDream.FixSystem { public class FixSystemCenter : Kit.Singleton { public FixState CurState => StateMachine.CurState; public FixState defaultState = FixState.Clinic; private readonly FixSystemData _data = new(); public override void OnSingletonInit() { SystemDic ??= new IOCContainer(); // 初始化状态机 StateMachine = new FixStateMachine(); StartCoroutine(StateMachine.Init(defaultState)); // 注册 StorageSystem.Instance.RegisterData(_data); } public override void OnSingletonDestroy() { CameraKit.Instance.RemoveAllCam(); GameManager.Instance.StartCoroutine(StateMachine.QuitState()); SystemDic.Clear(); // 注销 StorageSystem.Instance.UnregisterData(); } /// /// 播放诊所到场景的timeline /// /// public static IEnumerator PlayClinicCut() { yield return CameraKit.Instance.SwitchCamera(CameraEnum.CoolingMachine); yield return TimelineManager.Instance.PlayTimeline("ToBodyModule"); } #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 IEnumerator Load() { yield return FixSystemCenter.StateMachine.SwitchState(_curState); } } }