Files
aibis-dream/Assets/Scripts/SaveSystem/SnapshotService.cs
T

42 lines
1.6 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 System.Collections;
namespace AibisDream.SaveSystem
{
/// <summary>
/// 快照层对外 APICapture / Restore,不涉及文件与 UI。
/// 游戏逻辑应优先使用 <see cref="SaveRestoreOrchestrator"/> 完成存读档流程。
/// </summary>
public static class SnapshotService
{
/// <summary>捕获当前运行时快照。</summary>
/// <param name="triggerNodeName">见 <see cref="SnapshotCapture.Capture"/>。</param>
/// <param name="omitAnchor">见 <see cref="SnapshotCapture.Capture"/>。</param>
public static SaveSnapshot Capture(string triggerNodeName = null, bool omitAnchor = false)
{
SnapshotRegistry.EnsureInitialized();
return SnapshotCapture.Capture(YarnVariableStorage.Instance, triggerNodeName, omitAnchor);
}
/// <summary>
/// 还原快照状态;默认继续执行 <see cref="SnapshotRestore.RestoreAnchor"/>。
/// 业务读档流程应优先使用 <see cref="SaveRestoreOrchestrator"/>,以获得黑屏与自动存档抑制。
/// </summary>
public static IEnumerator Restore(SaveSnapshot snapshot, bool restoreAnchor = true)
{
if (snapshot == null)
{
yield break;
}
SnapshotRegistry.EnsureInitialized();
var context = new SnapshotRestoreContext(snapshot);
yield return SnapshotRestore.RestoreState(YarnVariableStorage.Instance, snapshot, context);
if (restoreAnchor)
{
yield return SnapshotRestore.RestoreAnchor(snapshot, context);
}
}
}
}