using UnityEngine; namespace AibisDream.SaveSystem { /// /// sections["bodyModule"]:插线模块持久物理状态。RestoreOrder=66,在 fix 之后。 /// public class BodyModuleSnapshotProvider : ISyncSnapshotProvider { public string SaveId => SnapshotProviderIds.BodyModule; public int RestoreOrder => 67; public object Capture() { if (!FixSceneSnapshotHelper.IsFixSceneActive()) { return null; } var bodyModule = FixSystem.FixSystemCenter.SystemDic.Get(); if (bodyModule == null) { Debug.LogWarning("[BodyModuleSnapshotProvider] BodyModuleSystem 未初始化,跳过捕获。"); return null; } return bodyModule.CaptureBodyModuleSnapshot(); } public void Restore(object dto, SnapshotRestoreContext context) { if (dto is not BodyModuleSnapshotDto bodyModuleDto) { context.Warn("[BodyModuleSnapshotProvider] DTO 类型不匹配,跳过还原。"); return; } if (!FixSceneSnapshotHelper.IsFixSceneActive()) { context.Log("[BodyModuleSnapshotProvider] 当前非维修场景,跳过还原。"); return; } var bodyModule = FixSystem.FixSystemCenter.SystemDic.Get(); if (bodyModule == null) { context.Warn("[BodyModuleSnapshotProvider] BodyModuleSystem 未初始化,跳过还原。"); return; } bodyModule.ApplyBodyModuleSnapshot(bodyModuleDto); } } }