51 lines
1.7 KiB
C#
51 lines
1.7 KiB
C#
using AibisDream.UI;
|
|
using UnityEngine;
|
|
|
|
namespace AibisDream.SaveSystem
|
|
{
|
|
/// <summary>
|
|
/// screen section 的捕获/还原实现:屏幕后处理饱和度 + PlayToolPanel 遮罩终态(黑屏盖住 / 画面可见)。
|
|
/// screen section:饱和度 + PlayToolPanel 遮罩终态(<see cref="PlayToolPanel.CaptureFadeScreenCovered"/>)。
|
|
/// 供 <see cref="ScreenSnapshotProvider"/> 委托,避免 Provider 直接依赖 UI 细节。
|
|
/// </summary>
|
|
public static class ScreenSnapshotHelper
|
|
{
|
|
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<PlayToolPanel>();
|
|
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)
|
|
{
|
|
var panel = UIManager.Instance.GetPanel<PlayToolPanel>();
|
|
panel?.ApplyFadeScreenCovered(dto.isFadeScreenCovered);
|
|
}
|
|
}
|
|
}
|
|
}
|