diff --git a/Assets/Editor/PresentationSnapshotContractTests.cs b/Assets/Editor/PresentationSnapshotContractTests.cs index 0617ef723..e71f5b52e 100644 --- a/Assets/Editor/PresentationSnapshotContractTests.cs +++ b/Assets/Editor/PresentationSnapshotContractTests.cs @@ -8,20 +8,17 @@ namespace AibisDream.SystemEditor.Tests public sealed class PresentationSnapshotContractTests { [Test] - public void Providers_UseDistinctStableIdsAndRestoreBeforeScreen() + public void PlayToolProvider_UsesStableIdAndRestoreBeforeScreen() { - var showcase = new ShowcaseSnapshotProvider(); var playTool = new PlayToolSnapshotProvider(); var screen = new ScreenSnapshotProvider(); - Assert.That(showcase.SaveId, Is.EqualTo("showcase")); Assert.That(playTool.SaveId, Is.EqualTo("playTool")); - Assert.That(showcase.RestoreOrder, Is.LessThan(playTool.RestoreOrder)); Assert.That(playTool.RestoreOrder, Is.LessThan(screen.RestoreOrder)); } [Test] - public void PresentationSections_RoundTripThroughSnapshotJson() + public void PlayToolSection_RoundTripsThroughSnapshotJson() { var source = new SaveSnapshot(); source.sections[SnapshotProviderIds.PlayTool] = new PlayToolSnapshotDto @@ -31,27 +28,16 @@ namespace AibisDream.SystemEditor.Tests isFullScreenVisible = true, fullScreenPicName = "教室" }; - source.sections[SnapshotProviderIds.Showcase] = new ShowcaseSnapshotDto - { - displayMode = nameof(ShowcaseDisplayMode.Small), - picName = "D2S轱辘", - usesSplitLayers = true - }; var json = JsonConvert.SerializeObject(source); var restored = JsonConvert.DeserializeObject(json); var playTool = ((JObject)restored.sections[SnapshotProviderIds.PlayTool]) .ToObject(); - var showcase = ((JObject)restored.sections[SnapshotProviderIds.Showcase]) - .ToObject(); Assert.That(playTool.isObjVisible, Is.True); Assert.That(playTool.objPicName, Is.EqualTo("证物")); Assert.That(playTool.isFullScreenVisible, Is.True); Assert.That(playTool.fullScreenPicName, Is.EqualTo("教室")); - Assert.That(showcase.displayMode, Is.EqualTo(nameof(ShowcaseDisplayMode.Small))); - Assert.That(showcase.picName, Is.EqualTo("D2S轱辘")); - Assert.That(showcase.usesSplitLayers, Is.True); Assert.That(restored.schemaVersion, Is.EqualTo(1)); } @@ -63,7 +49,6 @@ namespace AibisDream.SystemEditor.Tests Assert.That(restored.schemaVersion, Is.EqualTo(SaveSnapshotSchema.CurrentVersion)); Assert.That(restored.sections.ContainsKey(SnapshotProviderIds.PlayTool), Is.False); - Assert.That(restored.sections.ContainsKey(SnapshotProviderIds.Showcase), Is.False); } } } diff --git a/Assets/Scripts/SaveSystem/Providers/ShowcaseSnapshotProvider.cs b/Assets/Scripts/SaveSystem/Providers/ShowcaseSnapshotProvider.cs deleted file mode 100644 index 07e362010..000000000 --- a/Assets/Scripts/SaveSystem/Providers/ShowcaseSnapshotProvider.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Collections; - -namespace AibisDream.SaveSystem -{ - /// sections["showcase"]:梦境普通小图或大图。RestoreOrder=69。 - public sealed class ShowcaseSnapshotProvider : IAsyncSnapshotProvider - { - public string SaveId => SnapshotProviderIds.Showcase; - public int RestoreOrder => 69; - - public object Capture() - { - return SpriteShowcase.Instance != null - ? SpriteShowcase.Instance.CaptureSnapshot() - : null; - } - - public IEnumerator RestoreAsync(object dto, SnapshotRestoreContext context) - { - if (dto is not ShowcaseSnapshotDto snapshot) - { - context.Warn("[ShowcaseSnapshotProvider] DTO 类型不匹配,跳过还原。"); - yield break; - } - - var showcase = SpriteShowcase.Instance; - if (showcase == null) - { - context.Warn("[ShowcaseSnapshotProvider] SpriteShowcase 未初始化,跳过还原。"); - yield break; - } - - yield return showcase.RestoreSnapshotAsync(snapshot, context.Warn); - } - } -} diff --git a/Assets/Scripts/SaveSystem/Providers/ShowcaseSnapshotProvider.cs.meta b/Assets/Scripts/SaveSystem/Providers/ShowcaseSnapshotProvider.cs.meta deleted file mode 100644 index 57a784070..000000000 --- a/Assets/Scripts/SaveSystem/Providers/ShowcaseSnapshotProvider.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 83cccdfaca2a42a89ed515c16c6adfad diff --git a/Assets/Scripts/SaveSystem/SaveSnapshot.cs b/Assets/Scripts/SaveSystem/SaveSnapshot.cs index 54234138c..bbaef67a7 100644 --- a/Assets/Scripts/SaveSystem/SaveSnapshot.cs +++ b/Assets/Scripts/SaveSystem/SaveSnapshot.cs @@ -190,26 +190,6 @@ namespace AibisDream.SaveSystem public string fullScreenPicName; } - /// Showcase 当前持久化的图片类型;不包含风筝及其他瞬时演出。 - public enum ShowcaseDisplayMode - { - None, - Small, - Large - } - - /// sections["showcase"]:梦境 Showcase 普通小图或大图终态。 - [Serializable] - public class ShowcaseSnapshotDto - { - /// 枚举名。 - public string displayMode; - public string picName; - - /// 小图是否由分层资源组成;只恢复静止画面,不恢复运动。 - public bool usesSplitLayers; - } - /// sections["subway"]:地铁场景宏观状态(SubwayCenter / OutSideState)。 [Serializable] public class SubwaySnapshotDto diff --git a/Assets/Scripts/SaveSystem/SnapshotRegistry.cs b/Assets/Scripts/SaveSystem/SnapshotRegistry.cs index e2c011842..37f52c94a 100644 --- a/Assets/Scripts/SaveSystem/SnapshotRegistry.cs +++ b/Assets/Scripts/SaveSystem/SnapshotRegistry.cs @@ -16,7 +16,6 @@ namespace AibisDream.SaveSystem public const string Timeline = "timeline"; public const string Screen = "screen"; public const string PlayTool = "playTool"; - public const string Showcase = "showcase"; public const string Subway = "subway"; public const string PunchTape = "punchTape"; public const string Fix = "fix"; @@ -31,7 +30,7 @@ namespace AibisDream.SaveSystem /// public static readonly string[] RequiredForCapture = { - Environment, Actor, Audio, Timeline, Subway, Fix, Showcase, PlayTool, Screen + Environment, Actor, Audio, Timeline, Subway, Fix, PlayTool, Screen }; } @@ -61,7 +60,6 @@ namespace AibisDream.SaveSystem Register(new FixPanelSnapshotProvider()); Register(new BodyModuleSnapshotProvider()); Register(new EyeSnapshotProvider()); - Register(new ShowcaseSnapshotProvider()); Register(new PlayToolSnapshotProvider()); Register(new ScreenSnapshotProvider()); } diff --git a/Assets/Scripts/SaveSystem/SnapshotRestore.cs b/Assets/Scripts/SaveSystem/SnapshotRestore.cs index 02beddfa7..ff57b5b33 100644 --- a/Assets/Scripts/SaveSystem/SnapshotRestore.cs +++ b/Assets/Scripts/SaveSystem/SnapshotRestore.cs @@ -257,7 +257,6 @@ namespace AibisDream.SaveSystem SnapshotProviderIds.FixPanel => jobj.ToObject(), SnapshotProviderIds.BodyModule => jobj.ToObject(), SnapshotProviderIds.Eye => jobj.ToObject(), - SnapshotProviderIds.Showcase => jobj.ToObject(), SnapshotProviderIds.PlayTool => jobj.ToObject(), SnapshotProviderIds.Screen => jobj.ToObject(), _ => jobj diff --git a/Assets/Scripts/SceneManagement/SpriteShowcase.cs b/Assets/Scripts/SceneManagement/SpriteShowcase.cs index e103f4e50..4e605fc8c 100644 --- a/Assets/Scripts/SceneManagement/SpriteShowcase.cs +++ b/Assets/Scripts/SceneManagement/SpriteShowcase.cs @@ -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 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 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 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();