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);
}
}
}