feat(save-system): 新增维修与场景子模块快照 DTO 与 Provider
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.SaveSystem
|
||||
{
|
||||
/// <summary>
|
||||
/// sections["bodyModule"]:插线模块持久物理状态。RestoreOrder=66,在 fix 之后。
|
||||
/// </summary>
|
||||
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<FixSystem.BodyModuleSystem>();
|
||||
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<FixSystem.BodyModuleSystem>();
|
||||
if (bodyModule == null)
|
||||
{
|
||||
context.Warn("[BodyModuleSnapshotProvider] BodyModuleSystem 未初始化,跳过还原。");
|
||||
return;
|
||||
}
|
||||
|
||||
bodyModule.ApplyBodyModuleSnapshot(bodyModuleDto);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user