using Newtonsoft.Json.Linq;
namespace AibisDream.SaveSystem
{
///
/// 读盘后 中的值常为 ;
/// 本类按 SaveId 转回各 Provider 所需的强类型 DTO。
///
public static class SnapshotSectionDeserializer
{
/// 若 dto 已是强类型则原样返回;若为 JObject 则 ToObject 到对应 DTO。
public static object Coerce(string saveId, object dto)
{
if (dto is not JObject jobj)
{
return dto;
}
return saveId switch
{
SnapshotProviderIds.Scene => jobj.ToObject(),
SnapshotProviderIds.Macro => jobj.ToObject(),
SnapshotProviderIds.Environment => jobj.ToObject(),
SnapshotProviderIds.Actor => jobj.ToObject(),
SnapshotProviderIds.Audio => jobj.ToObject(),
SnapshotProviderIds.Timeline => jobj.ToObject(),
SnapshotProviderIds.Screen => jobj.ToObject(),
_ => jobj
};
}
}
}