mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 10:34:30 +08:00
- 将音频和图形设置从 IResettable, IVersioned 迁移到 ISettingsData 接口 - 添加数据位置接口 IDataLocation 和数据位置提供者接口 IDataLocationProvider - 修改数据仓库实现,使用数据位置替代类型进行数据操作 - 更新数据仓库的加载、保存、删除和存在检查方法以使用数据位置参数 - 重命名 IPersistentApplyAbleSettings 为 IResetApplyAbleSettings 并更新其实现 - 创建 ISettingsData 接口整合设置数据的基础功能 - 更新设置模型实现,统一管理设置数据的生命周期和应用器 - 添加版本化数据接口 IVersionedData 和可从源加载接口 ILoadableFrom - 实现数据位置到存储键的扩展方法 - 更新数据事件类型以使用数据位置信息 - 重构设置模型的数据加载、保存和应用逻辑 - [skip ci]
88 lines
2.4 KiB
C#
88 lines
2.4 KiB
C#
using GFramework.Core.Abstractions.model;
|
||
|
||
namespace GFramework.Game.Abstractions.setting;
|
||
|
||
/// <summary>
|
||
/// 设置模型接口:
|
||
/// - 管理 Settings Data 的生命周期
|
||
/// - 管理并编排 Settings Applicator
|
||
/// - 管理 Settings Migration
|
||
/// </summary>
|
||
public interface ISettingsModel : IModel
|
||
{
|
||
// =========================
|
||
// Data
|
||
// =========================
|
||
|
||
/// <summary>
|
||
/// 获取指定类型的设置数据(唯一实例)
|
||
/// </summary>
|
||
/// <typeparam name="T">设置数据类型,必须继承自ISettingsData并具有无参构造函数</typeparam>
|
||
/// <returns>指定类型的设置数据实例</returns>
|
||
T GetData<T>() where T : class, ISettingsData, new();
|
||
|
||
/// <summary>
|
||
/// 获取所有已创建的设置数据
|
||
/// </summary>
|
||
/// <returns>所有已创建的设置数据集合</returns>
|
||
IEnumerable<ISettingsData> AllData();
|
||
|
||
|
||
// =========================
|
||
// Applicator
|
||
// =========================
|
||
|
||
/// <summary>
|
||
/// 注册设置应用器
|
||
/// </summary>
|
||
/// <param name="applicator">要注册的设置应用器</param>
|
||
/// <returns>当前设置模型实例,支持链式调用</returns>
|
||
ISettingsModel RegisterApplicator(IResetApplyAbleSettings applicator);
|
||
|
||
/// <summary>
|
||
/// 获取所有设置应用器
|
||
/// </summary>
|
||
/// <returns>所有设置应用器的集合</returns>
|
||
IEnumerable<IResetApplyAbleSettings> AllApplicators();
|
||
|
||
|
||
// =========================
|
||
// Migration
|
||
// =========================
|
||
|
||
/// <summary>
|
||
/// 注册设置迁移器
|
||
/// </summary>
|
||
/// <param name="migration">要注册的设置迁移器</param>
|
||
/// <returns>当前设置模型实例,支持链式调用</returns>
|
||
ISettingsModel RegisterMigration(ISettingsMigration migration);
|
||
|
||
|
||
// =========================
|
||
// Lifecycle
|
||
// =========================
|
||
|
||
/// <summary>
|
||
/// 初始化所有设置数据(加载 + 迁移)
|
||
/// </summary>
|
||
/// <returns>异步操作任务</returns>
|
||
Task InitializeAsync();
|
||
|
||
/// <summary>
|
||
/// 保存所有设置数据
|
||
/// </summary>
|
||
/// <returns>异步操作任务</returns>
|
||
Task SaveAllAsync();
|
||
|
||
/// <summary>
|
||
/// 应用所有设置
|
||
/// </summary>
|
||
/// <returns>异步操作任务</returns>
|
||
Task ApplyAllAsync();
|
||
|
||
/// <summary>
|
||
/// 重置所有设置数据与应用器
|
||
/// </summary>
|
||
void ResetAll();
|
||
}
|