GeWuYou 970b8d3b96 refactor(settings): 重构设置系统和数据仓库实现
- 将音频和图形设置从 IResettable, IVersioned 迁移到 ISettingsData 接口
- 添加数据位置接口 IDataLocation 和数据位置提供者接口 IDataLocationProvider
- 修改数据仓库实现,使用数据位置替代类型进行数据操作
- 更新数据仓库的加载、保存、删除和存在检查方法以使用数据位置参数
- 重命名 IPersistentApplyAbleSettings 为 IResetApplyAbleSettings 并更新其实现
- 创建 ISettingsData 接口整合设置数据的基础功能
- 更新设置模型实现,统一管理设置数据的生命周期和应用器
- 添加版本化数据接口 IVersionedData 和可从源加载接口 ILoadableFrom
- 实现数据位置到存储键的扩展方法
- 更新数据事件类型以使用数据位置信息
- 重构设置模型的数据加载、保存和应用逻辑
- [skip ci]
2026-01-30 16:48:09 +08:00

88 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}