using GFramework.Core.Abstractions.model; namespace GFramework.Game.Abstractions.setting; /// /// 设置模型接口: /// - 管理 Settings Data 的生命周期 /// - 管理并编排 Settings Applicator /// - 管理 Settings Migration /// public interface ISettingsModel : IModel { /// /// 获取一个布尔值,指示当前对象是否已初始化。 /// /// /// 如果对象已初始化,则返回 true;否则返回 false。 /// public bool IsInitialized { get; } // ========================= // Data // ========================= /// /// 获取指定类型的设置数据(唯一实例) /// /// 设置数据类型,必须继承自ISettingsData并具有无参构造函数 /// 指定类型的设置数据实例 T GetData() where T : class, ISettingsData, new(); /// /// 获取所有已创建的设置数据 /// /// 所有已创建的设置数据集合 IEnumerable AllData(); // ========================= // Applicator // ========================= /// /// 注册设置应用器 /// /// 设置数据类型,必须实现IResetApplyAbleSettings接口且具有无参构造函数 /// 要注册的设置应用器 /// 当前设置模型实例,支持链式调用 ISettingsModel RegisterApplicator(T applicator) where T : class, IResetApplyAbleSettings; /// /// 获取指定类型的设置应用器 /// /// 要获取的设置应用器类型,必须继承自IResetApplyAbleSettings /// 设置应用器实例,如果不存在则返回null T? GetApplicator() where T : class, IResetApplyAbleSettings; /// /// 获取所有设置应用器 /// /// 所有设置应用器的集合 IEnumerable AllApplicators(); // ========================= // Migration // ========================= /// /// 注册设置迁移器 /// /// 要注册的设置迁移器 /// 当前设置模型实例,支持链式调用 ISettingsModel RegisterMigration(ISettingsMigration migration); // ========================= // Lifecycle // ========================= /// /// 初始化所有设置数据(加载 + 迁移) /// /// 异步操作任务 Task InitializeAsync(); /// /// 保存所有设置数据 /// /// 异步操作任务 Task SaveAllAsync(); /// /// 应用所有设置 /// /// 异步操作任务 Task ApplyAllAsync(); /// /// 重置指定类型的设置 /// /// 要重置的设置类型,必须实现IResettable接口并具有无参构造函数 void Reset() where T : class, ISettingsData, new(); /// /// 重置所有设置数据与应用器 /// void ResetAll(); }