- 将 BaseYarnCommand、FixSystemNew 各状态、GameManager、 SaveSystem、PlayToolPanel 中的 PlayToolPanel 遮罩调用 统一迁移到 ScreenTransitionPanel - 从 PlayToolPanel 移除 _fadeImage 及相关 fade 方法 - 从 Play Tool Panel Prefab 移除 Fade Image 子对象
74 lines
2.5 KiB
C#
74 lines
2.5 KiB
C#
using AibisDream.UI;
|
|
using UnityEngine;
|
|
|
|
namespace AibisDream.SaveSystem
|
|
{
|
|
/// <summary>
|
|
/// screen section 的捕获/还原实现:屏幕后处理饱和度 + ScreenTransitionPanel 遮罩终态。
|
|
/// screen section:饱和度 + 全局遮罩终态(<see cref="ScreenTransitionPanel.CaptureScreenCovered"/>)。
|
|
/// 供 <see cref="ScreenSnapshotProvider"/> 委托,避免 Provider 直接依赖 UI 细节。
|
|
/// </summary>
|
|
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<ScreenTransitionPanel>();
|
|
if (panel != null)
|
|
{
|
|
dto.isFadeScreenCovered = panel.CaptureScreenCovered();
|
|
}
|
|
}
|
|
|
|
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<ScreenTransitionPanel>();
|
|
panel?.ApplyScreenCovered(dto.isFadeScreenCovered);
|
|
}
|
|
}
|
|
|
|
/// <summary>读档 FadeOut 完成后应用延迟的遮罩终态。</summary>
|
|
public static void ApplyDeferredFadeScreenIfNeeded()
|
|
{
|
|
if (!_hasDeferredFadeScreenCovered)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_hasDeferredFadeScreenCovered = false;
|
|
var panel = UIManager.Instance?.GetPanel<ScreenTransitionPanel>();
|
|
panel?.ApplyScreenCovered(_deferredFadeScreenCovered);
|
|
}
|
|
}
|
|
}
|