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(_data); StartCoroutine(StateMachine.Init(defaultState)); // 注册 StorageSystem.Instance.RegisterData(_data); } public override void OnSingletonDestroy() { // 注销 StorageSystem.Instance.UnregisterData(); CameraKit.Instance.RemoveAllCam(); GameManager.Instance.StartCoroutine(StateMachine.QuitState()); SystemDic.Clear(); } /// /// 播放诊所到场景的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 { public FixState curState; public string args; public IEnumerator Load() { yield return FixSystemCenter.StateMachine.SwitchState(curState, args); } } }