refactor(fix-system): BodyModule 持久化从 IData 改为显式快照

This commit is contained in:
2026-06-24 22:43:28 +08:00
parent b7bfa28fd7
commit 57b03aeb08
4 changed files with 91 additions and 135 deletions
@@ -1,28 +1,15 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using AibisDream.Framework;
using AibisDream;
using AibisDream.SaveSystem;
using System;
public class ChipModule : MonoBehaviour
{
private GameObject _chipModule;
private ChipData _chipData=new ();
private bool _isChipRemoved;
private void Awake()
{
// 将数据注册到数据容器内
DeepRepairDataRegistry.RegisterData(_chipData);
// 添加加载逻辑
_chipData.LoadEvent += LoadData;
_chipModule = transform.Find("Chip").gameObject;
}
// Start is called before the first frame update
public void RemoveChipModule()
{
@@ -31,7 +18,7 @@ public class ChipModule : MonoBehaviour
_chipModule.SetActive(false);
}
_chipData.isChipRemoved = true;
_isChipRemoved = true;
}
public void InstallChipModule()
@@ -41,35 +28,29 @@ public class ChipModule : MonoBehaviour
_chipModule.SetActive(true);
}
_chipData.isChipRemoved = false;
_isChipRemoved = false;
}
public void CaptureState(BodyModuleSnapshotDto dto)
{
if (dto == null) return;
dto.isChipRemoved = _isChipRemoved;
}
public void ApplyState(BodyModuleSnapshotDto dto)
{
if (dto == null) return;
_isChipRemoved = dto.isChipRemoved;
Chipinit();
}
public void Chipinit()
{
_chipModule.SetActive(!_chipData.isChipRemoved);
_chipModule.SetActive(!_isChipRemoved);
}
private void LoadData(ChipData ufData)
{
Chipinit(); // 读取存档文件时触发,将当前系统恢复为目标状态
}
void Start()
private void Start()
{
Chipinit();
}
}
public class ChipData : IData
{
public bool isChipRemoved = false;
public event Action<ChipData> LoadEvent;
public IEnumerator Load()
{
LoadEvent?.Invoke(this);
yield break;
}
}