refactor(fix-system): BodyModule 持久化从 IData 改为显式快照
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user