using System.Collections.Immutable; using GFramework.Core.Abstractions.enums; namespace GFramework.Core.architecture; /// /// 架构常量类,定义了架构阶段转换规则 /// public static class ArchitectureConstants { /// /// 定义架构阶段之间的有效转换关系 /// /// /// 键为当前架构阶段,值为从该阶段可以转换到的下一阶段数组 /// public static readonly ImmutableDictionary PhaseTransitions = new Dictionary { { ArchitecturePhase.None, [ArchitecturePhase.BeforeUtilityInit] }, { ArchitecturePhase.BeforeUtilityInit, [ArchitecturePhase.AfterUtilityInit, ArchitecturePhase.FailedInitialization] }, { ArchitecturePhase.AfterUtilityInit, [ArchitecturePhase.BeforeModelInit, ArchitecturePhase.FailedInitialization] }, { ArchitecturePhase.BeforeModelInit, [ ArchitecturePhase.AfterModelInit, ArchitecturePhase.FailedInitialization ] }, { ArchitecturePhase.AfterModelInit, [ ArchitecturePhase.BeforeSystemInit, ArchitecturePhase.FailedInitialization ] }, { ArchitecturePhase.BeforeSystemInit, [ ArchitecturePhase.AfterSystemInit, ArchitecturePhase.FailedInitialization ] }, { ArchitecturePhase.AfterSystemInit, [ArchitecturePhase.Ready, ArchitecturePhase.FailedInitialization] }, { ArchitecturePhase.Ready, [ArchitecturePhase.Destroying] }, { ArchitecturePhase.FailedInitialization, [ArchitecturePhase.Destroying] }, { ArchitecturePhase.Destroying, [ArchitecturePhase.Destroyed] } }.ToImmutableDictionary(); }