using GFramework.Core.Abstractions.system;
namespace GFramework.Game.Abstractions.setting;
///
/// 定义设置系统的接口,提供应用各种设置的方法
///
public interface ISettingsSystem : ISystem
{
///
/// 应用所有可应用的设置
///
/// 表示异步操作的任务
Task ApplyAll();
///
/// 应用指定类型的设置(泛型版本)
///
/// 设置类型,必须是class且实现IApplyAbleSettings接口
/// 表示异步操作的任务
Task Apply() where T : class, IApplyAbleSettings;
///
/// 保存所有设置
///
/// 表示异步操作的任务
Task SaveAll();
///
/// 重置指定类型的设置
///
/// 设置类型,必须继承自class并实现IPersistentApplyAbleSettings接口
/// 表示异步操作的任务
Task Reset() where T : class, IResetApplyAbleSettings, new();
///
/// 重置所有设置
///
/// 表示异步操作的任务
Task ResetAll();
}