From 57b03aeb08c2629bb40578afb9ed26f78625f411 Mon Sep 17 00:00:00 2001
From: Ding Yuntian <1491671119@qq.com>
Date: Wed, 24 Jun 2026 22:43:28 +0800
Subject: [PATCH] =?UTF-8?q?refactor(fix-system):=20BodyModule=20=E6=8C=81?=
=?UTF-8?q?=E4=B9=85=E5=8C=96=E4=BB=8E=20IData=20=E6=94=B9=E4=B8=BA?=
=?UTF-8?q?=E6=98=BE=E5=BC=8F=E5=BF=AB=E7=85=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../BodyModule/BodyModuleSystem.cs | 58 ++++++++------
.../BodyModule/Modules/ChipModule.cs | 55 +++++--------
.../BodyModule/Modules/UFModule.cs | 78 ++++++++-----------
.../Scripts/FixSystemNew/FixSystemCenter.cs | 35 +--------
4 files changed, 91 insertions(+), 135 deletions(-)
diff --git a/Assets/Scripts/FixSystemNew/BodyModule/BodyModuleSystem.cs b/Assets/Scripts/FixSystemNew/BodyModule/BodyModuleSystem.cs
index 21aa22189..1513bd7da 100644
--- a/Assets/Scripts/FixSystemNew/BodyModule/BodyModuleSystem.cs
+++ b/Assets/Scripts/FixSystemNew/BodyModule/BodyModuleSystem.cs
@@ -4,7 +4,7 @@ using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
using UnityEngine;
-using AibisDream.Framework;
+using AibisDream.FixSystem;
using AibisDream.Kit;
using AibisDream.SaveSystem;
@@ -25,12 +25,12 @@ namespace AibisDream.FixSystem
#region 系统状态
- private readonly ModuleSystemData _data = new();
+ private ModuleState _moduleState = ModuleState.Body;
public bool inHotErr;
private int _heatValue;
/// 获取当前 BodyModule 分组(Body/Head)。
- public ModuleState GetCurrentModuleState() => _data.moduleState;
+ public ModuleState GetCurrentModuleState() => _moduleState;
private int HeatValue
{
@@ -58,9 +58,6 @@ namespace AibisDream.FixSystem
private void InitComponentRefs()
{
- // 注册数据
- DeepRepairDataRegistry.RegisterData(_data);
-
// 处理内部索引
_bodyModuleGroup = transform.Find("Scalehandler")?.transform.Find("Body Module Group")?.gameObject;
_headModuleGroup = transform.Find("Scalehandler")?.transform.Find("Head Module Group")?.gameObject;
@@ -75,9 +72,39 @@ namespace AibisDream.FixSystem
RepairSystemManager.Register(this);
}
- private void OnDestroy()
+ /// 捕获插线模块持久状态(分组 + UF + Chip)。
+ public BodyModuleSnapshotDto CaptureBodyModuleSnapshot()
{
- DeepRepairDataRegistry.UnregisterData();
+ var dto = new BodyModuleSnapshotDto
+ {
+ moduleState = _moduleState.ToString()
+ };
+
+ var ufModule = FindBodyModuleByName("UF")?.GetComponent();
+ ufModule?.CaptureState(dto);
+
+ var chipModule = FindBodyModuleByName("Color")?.GetComponent();
+ chipModule?.CaptureState(dto);
+
+ return dto;
+ }
+
+ /// 写回插线模块持久状态;须在 fix cue 还原之后调用。
+ public void ApplyBodyModuleSnapshot(BodyModuleSnapshotDto dto)
+ {
+ if (dto == null) return;
+
+ if (!string.IsNullOrEmpty(dto.moduleState)
+ && Enum.TryParse(dto.moduleState, out var moduleState))
+ {
+ SwitchModuleGroup(moduleState);
+ }
+
+ var ufModule = FindBodyModuleByName("UF")?.GetComponent();
+ ufModule?.ApplyState(dto);
+
+ var chipModule = FindBodyModuleByName("Color")?.GetComponent();
+ chipModule?.ApplyState(dto);
}
///
@@ -240,8 +267,7 @@ namespace AibisDream.FixSystem
// 重新获取ModuleGroup
var root = moduleState == ModuleState.Body ? _bodyModuleGroup : _headModuleGroup;
BodyModules = root?.GetComponentsInChildren().ToList();
- // 更改data
- _data.moduleState = moduleState;
+ _moduleState = moduleState;
}
///
@@ -381,18 +407,6 @@ namespace AibisDream.FixSystem
}
}
- [LoadIndex(2)]
- public class ModuleSystemData : IData
- {
- public ModuleState moduleState;
-
- public IEnumerator Load()
- {
- FixSystemCenter.SystemDic.Get().SwitchModuleGroup(moduleState);
- yield break;
- }
- }
-
public enum ModuleState
{
Body,
diff --git a/Assets/Scripts/FixSystemNew/BodyModule/Modules/ChipModule.cs b/Assets/Scripts/FixSystemNew/BodyModule/Modules/ChipModule.cs
index 8707d70d9..205238964 100644
--- a/Assets/Scripts/FixSystemNew/BodyModule/Modules/ChipModule.cs
+++ b/Assets/Scripts/FixSystemNew/BodyModule/Modules/ChipModule.cs
@@ -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 LoadEvent;
-
- public IEnumerator Load()
- {
- LoadEvent?.Invoke(this);
- yield break;
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/FixSystemNew/BodyModule/Modules/UFModule.cs b/Assets/Scripts/FixSystemNew/BodyModule/Modules/UFModule.cs
index a0889b118..044af6757 100644
--- a/Assets/Scripts/FixSystemNew/BodyModule/Modules/UFModule.cs
+++ b/Assets/Scripts/FixSystemNew/BodyModule/Modules/UFModule.cs
@@ -1,26 +1,19 @@
using UnityEngine;
-using AibisDream.Framework;
-using AibisDream;
using AibisDream.SaveSystem;
-using System;
-using System.Collections;
public class UFModule : MonoBehaviour
{
private GameObject _ufCover;
private GameObject _ufModule;
-
private GameObject _ufSocket;
-
private GameObject _ufColor;
- private UFData _ufData = new();
+
+ private bool _isUFCoverRemoved;
+ private bool _isUFRemoved;
+ private bool _isColorRemoved;
private void Awake()
{
- // 将数据注册到数据容器内
- DeepRepairDataRegistry.RegisterData(_ufData);
- // 添加加载逻辑
- _ufData.LoadEvent += LoadData;
_ufModule = transform.Find("Module Pic").gameObject;
_ufSocket = transform.Find("Socket").gameObject;
_ufCover = _ufModule.transform.Find("Cover").gameObject;
@@ -34,7 +27,7 @@ public class UFModule : MonoBehaviour
_ufCover.SetActive(false);
}
- _ufData.isUFCoverRemoved = true;
+ _isUFCoverRemoved = true;
}
public void RemoveUFModule()
@@ -43,10 +36,9 @@ public class UFModule : MonoBehaviour
{
_ufModule.SetActive(false);
_ufSocket.SetActive(false);
-
}
- _ufData.isUFRemoved = true;
+ _isUFRemoved = true;
}
public void InstallUFCover()
@@ -56,7 +48,7 @@ public class UFModule : MonoBehaviour
_ufCover.SetActive(true);
}
- _ufData.isUFCoverRemoved = false;
+ _isUFCoverRemoved = false;
}
public void InstallUFModule()
@@ -67,8 +59,9 @@ public class UFModule : MonoBehaviour
_ufSocket.SetActive(true);
}
- _ufData.isUFRemoved = false;
+ _isUFRemoved = false;
}
+
public void InstallUFColor()
{
if (!_ufColor.activeInHierarchy)
@@ -76,8 +69,9 @@ public class UFModule : MonoBehaviour
_ufColor.SetActive(true);
}
- _ufData.isColorRemoved = false;
+ _isColorRemoved = false;
}
+
public void RemoveUFColor()
{
if (_ufColor.activeInHierarchy)
@@ -85,42 +79,36 @@ public class UFModule : MonoBehaviour
_ufColor.SetActive(false);
}
- _ufData.isColorRemoved = true;
+ _isColorRemoved = true;
}
+ public void CaptureState(BodyModuleSnapshotDto dto)
+ {
+ if (dto == null) return;
+ dto.isUFCoverRemoved = _isUFCoverRemoved;
+ dto.isUFRemoved = _isUFRemoved;
+ dto.isColorRemoved = _isColorRemoved;
+ }
+
+ public void ApplyState(BodyModuleSnapshotDto dto)
+ {
+ if (dto == null) return;
+ _isUFCoverRemoved = dto.isUFCoverRemoved;
+ _isUFRemoved = dto.isUFRemoved;
+ _isColorRemoved = dto.isColorRemoved;
+ UFinit();
+ }
public void UFinit()
{
- _ufModule.SetActive(!_ufData.isUFRemoved);
- _ufSocket.SetActive(!_ufData.isUFRemoved);
- _ufCover.SetActive(!_ufData.isUFCoverRemoved);
- _ufColor.SetActive(!_ufData.isColorRemoved);
+ _ufModule.SetActive(!_isUFRemoved);
+ _ufSocket.SetActive(!_isUFRemoved);
+ _ufCover.SetActive(!_isUFCoverRemoved);
+ _ufColor.SetActive(!_isColorRemoved);
}
-
- private void LoadData(UFData ufData)
- {
- UFinit(); // 读取存档文件时触发,将当前系统恢复为目标状态
- }
-
- void Start()
+ private void Start()
{
UFinit();
}
}
-
-public class UFData : IData
-{
- public bool isUFCoverRemoved = false;
- public bool isUFRemoved = false;
-
- public bool isColorRemoved = false;
-
- public event Action LoadEvent;
-
- public IEnumerator Load()
- {
- LoadEvent?.Invoke(this);
- yield break;
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/FixSystemNew/FixSystemCenter.cs b/Assets/Scripts/FixSystemNew/FixSystemCenter.cs
index 44b95f983..55e963fcc 100644
--- a/Assets/Scripts/FixSystemNew/FixSystemCenter.cs
+++ b/Assets/Scripts/FixSystemNew/FixSystemCenter.cs
@@ -1,10 +1,9 @@
-using System;
+using System;
using System.Collections;
using AibisDream.Framework;
using AibisDream.Kit;
using AibisDream.SaveSystem;
using UnityEngine;
-using UnityEngine.Serialization;
namespace AibisDream.FixSystem
{
@@ -14,8 +13,6 @@ namespace AibisDream.FixSystem
public FixSceneMode defaultMode = FixSceneMode.Default;
- private readonly FixSystemData _data = new();
-
public static IOCContainer SystemDic = new();
public static FixSceneContext Context;
public static FixSceneDirector Director;
@@ -24,14 +21,12 @@ namespace AibisDream.FixSystem
{
SystemDic ??= new IOCContainer();
Context = new FixSceneContext(SystemDic);
- Director = new FixSceneDirector(_data);
+ Director = new FixSceneDirector();
StartCoroutine(Director.Init(defaultMode));
- DeepRepairDataRegistry.RegisterData(_data);
}
public override void OnSingletonDestroy()
{
- DeepRepairDataRegistry.UnregisterData();
CameraKit.Instance.RemoveAllCam();
BubbleSlotKit.Instance.RemoveAll();
GameManager.Instance.StartCoroutine(Director.QuitCurrentMode());
@@ -48,21 +43,13 @@ namespace AibisDream.FixSystem
yield return Director.TransitionToImmediate(nextMode, args);
}
- /// Captures the macro Fix scene snapshot.
+ /// Captures the macro Fix scene cue snapshot.
public FixSnapshotDto CaptureSnapshot()
{
- var bodyModule = SystemDic.Get();
- var eyeSystem = SystemDic.Get();
- var repairManager = RepairSystemManager.Instance;
-
return new FixSnapshotDto
{
state = Director.CurrentMode.ToString(),
- args = _data.args,
- moduleState = bodyModule?.GetCurrentModuleState().ToString(),
- eyeColorState = eyeSystem?.GetCurrentColorState().ToString(),
- isSystemOn = FixPanelSystem.Instance?.IsSystemOn ?? false,
- currentRepairSystemType = repairManager?.GetCurrentSystemType()?.Name
+ args = Director.CurrentArgs
};
}
@@ -83,18 +70,4 @@ namespace AibisDream.FixSystem
yield return Director.TransitionToImmediate(mode, dto.args ?? "");
}
}
-
- [Serializable]
- [LoadIndex(2)]
- public class FixSystemData : IData
- {
- [FormerlySerializedAs("curState")]
- public FixSceneMode curMode;
- public string args;
-
- public IEnumerator Load()
- {
- yield return FixSystemCenter.Director.TransitionTo(curMode, args);
- }
- }
}