using AibisDream.Framework; using AibisDream.Kit; using UnityEngine; namespace AibisDream.FixSystem { public class FixSystemCenter : Singleton { public FixState curState; public override void OnSingletonInit() { SystemDic ??= new IOCContainer(); InitTransitionDic(); // TODO 这个回头要改 curState = FixState.BodyModule; } #region 系统索引 // 容纳System public static IOCContainer SystemDic = new(); #endregion #region 转场管理 private static readonly StateDictionary TransitionDic = new(); private void InitTransitionDic() { TransitionDic.Add(FixState.BodyModule, FixState.Engine, new BodyModuleToEngineCommand()); } /// /// 执行转场 /// /// 需要转换的状态 public void TransToNextState(FixState nextState) { // 没存过的先打个日志报错 if (!TransitionDic.TryGetValue(curState, nextState, out var command)) { Debug.Log($"源为{curState.ToString()}, 目标为{nextState.ToString()}, 转场命令不存在"); return; } // 存过的执行转场命令 StartCoroutine(command.Execute()); curState = nextState; } #endregion } }