refactor(save): 移除 Showcase 快照持久化
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -2,9 +2,7 @@
|
||||
using System.Collections;
|
||||
using AibisDream.Framework;
|
||||
using AibisDream.Kit;
|
||||
using AibisDream.SaveSystem;
|
||||
using AibisDream.Utility;
|
||||
using DG.Tweening;
|
||||
using AibisDream.Utility;using DG.Tweening;
|
||||
using UnityEngine;
|
||||
using UnityEngine.ResourceManagement.AsyncOperations;
|
||||
|
||||
@@ -1013,171 +1011,6 @@ namespace AibisDream
|
||||
yield return HideLargeObj(duration);
|
||||
}
|
||||
|
||||
public ShowcaseSnapshotDto CaptureSnapshot()
|
||||
{
|
||||
if (IsKiteShowing)
|
||||
{
|
||||
return HiddenShowcaseSnapshot();
|
||||
}
|
||||
|
||||
if (IsSmallShowing && !string.IsNullOrEmpty(_currentSmallPicName))
|
||||
{
|
||||
return new ShowcaseSnapshotDto
|
||||
{
|
||||
displayMode = nameof(ShowcaseDisplayMode.Small),
|
||||
picName = _currentSmallPicName,
|
||||
usesSplitLayers = _currentSmallUsesSplitLayers
|
||||
};
|
||||
}
|
||||
|
||||
if (IsLargeShowing && !string.IsNullOrEmpty(_currentLargePicName))
|
||||
{
|
||||
return new ShowcaseSnapshotDto
|
||||
{
|
||||
displayMode = nameof(ShowcaseDisplayMode.Large),
|
||||
picName = _currentLargePicName
|
||||
};
|
||||
}
|
||||
|
||||
return HiddenShowcaseSnapshot();
|
||||
}
|
||||
|
||||
private static ShowcaseSnapshotDto HiddenShowcaseSnapshot()
|
||||
{
|
||||
return new ShowcaseSnapshotDto
|
||||
{
|
||||
displayMode = nameof(ShowcaseDisplayMode.None)
|
||||
};
|
||||
}
|
||||
|
||||
public IEnumerator RestoreSnapshotAsync(ShowcaseSnapshotDto snapshot, Action<string> warning = null)
|
||||
{
|
||||
ClearPresentationEffects();
|
||||
if (snapshot == null) yield break;
|
||||
|
||||
if (!Enum.TryParse(snapshot.displayMode, true, out ShowcaseDisplayMode mode))
|
||||
{
|
||||
warning?.Invoke($"[SpriteShowcase] Unknown display mode: {snapshot.displayMode}");
|
||||
yield break;
|
||||
}
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case ShowcaseDisplayMode.None:
|
||||
yield break;
|
||||
|
||||
case ShowcaseDisplayMode.Small:
|
||||
if (string.IsNullOrWhiteSpace(snapshot.picName))
|
||||
{
|
||||
warning?.Invoke("[SpriteShowcase] Small snapshot is missing picName.");
|
||||
yield break;
|
||||
}
|
||||
|
||||
yield return RestoreSmallImmediate(snapshot.picName, snapshot.usesSplitLayers, warning);
|
||||
yield break;
|
||||
|
||||
case ShowcaseDisplayMode.Large:
|
||||
if (string.IsNullOrWhiteSpace(snapshot.picName))
|
||||
{
|
||||
warning?.Invoke("[SpriteShowcase] Large snapshot is missing picName.");
|
||||
yield break;
|
||||
}
|
||||
|
||||
yield return RestoreLargeImmediate(snapshot.picName, warning);
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator RestoreSmallImmediate(string picName, bool usesSplitLayers, Action<string> warning)
|
||||
{
|
||||
if (_spriteRenderer == null) yield break;
|
||||
|
||||
var normalizedName = NormalizeDreamPicName(picName);
|
||||
_smallMotionBaseOffset = IsReelPic(normalizedName) ? new Vector3(0f, -0.32f, 0f) : Vector3.zero;
|
||||
_spriteRenderer.gameObject.SetActive(true);
|
||||
|
||||
if (usesSplitLayers)
|
||||
{
|
||||
if (!TryGetSplitMotionPicNames(picName, out var basePicName, out var motionPicName))
|
||||
{
|
||||
warning?.Invoke($"[SpriteShowcase] Split-layer snapshot is unsupported: {picName}");
|
||||
ClearSmallImmediate();
|
||||
yield break;
|
||||
}
|
||||
|
||||
var baseLoaded = false;
|
||||
yield return LoadDreamSpriteInto(
|
||||
_spriteRenderer,
|
||||
basePicName,
|
||||
value => baseLoaded = value,
|
||||
warning);
|
||||
if (!baseLoaded)
|
||||
{
|
||||
ClearSmallImmediate();
|
||||
yield break;
|
||||
}
|
||||
|
||||
EnsureSmallMotionRenderer();
|
||||
_smallMotionRenderer.gameObject.SetActive(true);
|
||||
CopySmallRendererSettings(_smallMotionRenderer, 1, SpriteMaskInteraction.VisibleInsideMask);
|
||||
ConfigureSmallMotionMask();
|
||||
ResetSmallTransform();
|
||||
|
||||
var motionLoaded = false;
|
||||
yield return LoadDreamSpriteInto(
|
||||
_smallMotionRenderer,
|
||||
motionPicName,
|
||||
value => motionLoaded = value,
|
||||
warning);
|
||||
if (!motionLoaded)
|
||||
{
|
||||
ClearSmallImmediate();
|
||||
yield break;
|
||||
}
|
||||
|
||||
_smallMotionRenderer.SetAlpha(1f);
|
||||
}
|
||||
else
|
||||
{
|
||||
var loaded = false;
|
||||
yield return LoadDreamSpriteInto(
|
||||
_spriteRenderer,
|
||||
picName,
|
||||
value => loaded = value,
|
||||
warning);
|
||||
if (!loaded)
|
||||
{
|
||||
ClearSmallImmediate();
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
_spriteRenderer.SetAlpha(1f);
|
||||
_currentSmallPicName = normalizedName;
|
||||
_currentSmallUsesSplitLayers = usesSplitLayers;
|
||||
}
|
||||
|
||||
private IEnumerator RestoreLargeImmediate(string picName, Action<string> warning)
|
||||
{
|
||||
if (_largeSpriteRenderer == null) yield break;
|
||||
|
||||
_largeSpriteRenderer.gameObject.SetActive(true);
|
||||
var loaded = false;
|
||||
yield return LoadDreamSpriteInto(
|
||||
_largeSpriteRenderer,
|
||||
picName,
|
||||
value => loaded = value,
|
||||
warning);
|
||||
if (!loaded)
|
||||
{
|
||||
ClearLargeImmediate();
|
||||
yield break;
|
||||
}
|
||||
|
||||
_largeSpriteRenderer.SetAlpha(1f);
|
||||
_currentLargePicName = NormalizeDreamPicName(picName);
|
||||
}
|
||||
|
||||
public void ClearPresentationEffects()
|
||||
{
|
||||
ClearSmallImmediate();
|
||||
|
||||
Reference in New Issue
Block a user