Files
aibis-dream/Assets/Scripts/SaveSystem/ScreenSnapshotHelper.cs
T

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);
}
}
}
}