Files
aibis-dream/Assets/Scripts/SaveSystem/Providers/EnvironmentSnapshotProvider.cs
T

43 lines
1.3 KiB
C#

using UnityEngine;
namespace AibisDream.SaveSystem
{
/// <summary>
/// sections["env"]:场景内时间/天气(EnvironmentManager)。
/// RestoreOrder=20,在 scene 加载完成后、macro 之前还原环境。
/// </summary>
public class EnvironmentSnapshotProvider : ISyncSnapshotProvider
{
public string SaveId => SnapshotProviderIds.Environment;
public int RestoreOrder => 20;
public object Capture()
{
if (EnvironmentManager.Instance == null)
{
Debug.LogWarning("[EnvironmentSnapshotProvider] EnvironmentManager 未初始化,跳过捕获。");
return null;
}
return EnvironmentManager.Instance.CaptureSnapshot();
}
public void Restore(object dto, SnapshotRestoreContext context)
{
if (dto is not EnvironmentSnapshotDto env)
{
context.Warn("[EnvironmentSnapshotProvider] DTO 类型不匹配,跳过还原。");
return;
}
if (EnvironmentManager.Instance == null)
{
context.Warn("[EnvironmentSnapshotProvider] EnvironmentManager 未初始化,跳过还原。");
return;
}
EnvironmentManager.Instance.RestoreSnapshot(env);
}
}
}