using System.Collections; using UnityEngine; namespace AibisDream.SaveSystem { /// /// sections["fix"]:Fix 场景宏观模式(FixSceneDirector)。 /// RestoreOrder=65,在 timeline(60) 之后、showcase(69) 之前。 /// public class FixSnapshotProvider : IAsyncSnapshotProvider { public string SaveId => SnapshotProviderIds.Fix; public int RestoreOrder => 65; public object Capture() { if (!FixSceneSnapshotHelper.IsFixSceneActive()) { return null; } if (FixSystem.FixSystemCenter.Instance == null) { Debug.LogWarning("[FixSnapshotProvider] FixSystemCenter 未初始化,跳过捕获。"); return null; } return FixSystem.FixSystemCenter.Instance.CaptureSnapshot(); } public IEnumerator RestoreAsync(object dto, SnapshotRestoreContext context) { if (dto is not FixSnapshotDto fix) { context.Warn("[FixSnapshotProvider] DTO 类型不匹配,跳过还原。"); yield break; } if (!FixSceneSnapshotHelper.IsFixSceneActive()) { context.Log("[FixSnapshotProvider] 当前非维修场景,跳过还原。"); yield break; } if (FixSystem.FixSystemCenter.Instance == null) { context.Warn("[FixSnapshotProvider] FixSystemCenter 未初始化,跳过还原。"); yield break; } yield return FixSystem.FixSystemCenter.Instance.RestoreSnapshot(fix); } } }