39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
using System.Collections;
|
||
|
||
namespace AibisDream.SaveSystem
|
||
{
|
||
/// <summary>
|
||
/// 快照层对外 API:Capture / Restore,不涉及文件与 UI。
|
||
/// 游戏逻辑应优先使用 <see cref="SaveRestoreOrchestrator"/> 完成存读档流程。
|
||
/// </summary>
|
||
public static class SnapshotService
|
||
{
|
||
/// <summary>捕获当前运行时快照。</summary>
|
||
public static SaveSnapshot Capture()
|
||
{
|
||
SnapshotBootstrap.EnsureInitialized();
|
||
return SnapshotCapture.Capture(YarnVariableStorage.Instance);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 还原快照。默认在 provider 还原后继续执行 <see cref="SnapshotRestore.RestoreAnchor"/>。
|
||
/// </summary>
|
||
/// <param name="restoreAnchor">为 false 时仅还原状态,不重进 Yarn 节点(供 P4 编排使用)。</param>
|
||
public static IEnumerator Restore(SaveSnapshot snapshot, bool restoreAnchor = true)
|
||
{
|
||
if (snapshot == null)
|
||
{
|
||
yield break;
|
||
}
|
||
|
||
SnapshotBootstrap.EnsureInitialized();
|
||
yield return SnapshotRestore.Restore(YarnVariableStorage.Instance, snapshot);
|
||
|
||
if (restoreAnchor)
|
||
{
|
||
yield return SnapshotRestore.RestoreAnchor(snapshot);
|
||
}
|
||
}
|
||
}
|
||
}
|