using AibisDream.UI; using UnityEngine; namespace AibisDream.SaveSystem { /// /// screen section 的捕获/还原实现:屏幕后处理饱和度 + PlayToolPanel 遮罩终态(黑屏盖住 / 画面可见)。 /// screen section:饱和度 + PlayToolPanel 遮罩终态()。 /// 供 委托,避免 Provider 直接依赖 UI 细节。 /// public static class ScreenSnapshotHelper { private static bool _hasDeferredFadeScreenCovered; private static bool _deferredFadeScreenCovered; public static ScreenSnapshotDto Capture() { var dto = new ScreenSnapshotDto(); if (ScreenEffectManager.Instance != null && ScreenEffectManager.Instance.saturation != null) { dto.saturationWeight = ScreenEffectManager.Instance.saturation.weight; } if (UIManager.Instance != null) { var panel = UIManager.Instance.GetPanel(); if (panel != null) { dto.isFadeScreenCovered = panel.CaptureFadeScreenCovered(); } } return dto; } public static void Restore(ScreenSnapshotDto dto) { if (dto == null) return; if (ScreenEffectManager.Instance != null && ScreenEffectManager.Instance.saturation != null) { ScreenEffectManager.Instance.saturation.weight = dto.saturationWeight; } if (UIManager.Instance != null) { if (SaveRestoreOrchestrator.IsRestoring) { _hasDeferredFadeScreenCovered = true; _deferredFadeScreenCovered = dto.isFadeScreenCovered; return; } var panel = UIManager.Instance.GetPanel(); panel?.ApplyFadeScreenCovered(dto.isFadeScreenCovered); } } /// 读档 FadeOut 完成后应用延迟的遮罩终态。 public static void ApplyDeferredFadeScreenIfNeeded() { if (!_hasDeferredFadeScreenCovered) { return; } _hasDeferredFadeScreenCovered = false; var panel = UIManager.Instance?.GetPanel(); panel?.ApplyFadeScreenCovered(_deferredFadeScreenCovered); } } }