using Pixelplacement; using UI.Core; using UnityEngine; using UnityEngine.UI; namespace UI.CardSystem { /// /// UI page for viewing the player's card collection in an album. /// public class AlbumViewPage : UIPage { [SerializeField] private CanvasGroup canvasGroup; [SerializeField] private Button exitButton; [SerializeField] private BookCurlPro.BookPro book; private void Awake() { // Make sure we have a CanvasGroup for transitions if (canvasGroup == null) canvasGroup = GetComponent(); if (canvasGroup == null) canvasGroup = gameObject.AddComponent(); // Set up exit button if (exitButton != null) { exitButton.onClick.AddListener(OnExitButtonClicked); } // UI pages should start disabled gameObject.SetActive(false); } private void OnDestroy() { if (exitButton != null) { exitButton.onClick.RemoveListener(OnExitButtonClicked); } } private void OnExitButtonClicked() { if (book != null && book.CurrentPaper != 1) { // Not on page 0, flip to page 0 first BookCurlPro.AutoFlip autoFlip = book.GetComponent(); if (autoFlip == null) { autoFlip = book.gameObject.AddComponent(); } autoFlip.enabled = true; autoFlip.StartFlipping(1); } else { // Already on page 0 or no book reference, exit if (UIPageController.Instance != null) { UIPageController.Instance.PopPage(); } } } protected override void DoTransitionIn(System.Action onComplete) { // Simple fade in animation if (canvasGroup != null) { canvasGroup.alpha = 0f; Tween.Value(0f, 1f, (value) => canvasGroup.alpha = value, transitionDuration, 0f, Tween.EaseInOut, Tween.LoopType.None, null, onComplete, obeyTimescale: false); } else { // Fallback if no CanvasGroup onComplete?.Invoke(); } } protected override void DoTransitionOut(System.Action onComplete) { // Simple fade out animation if (canvasGroup != null) { Tween.Value(canvasGroup.alpha, 0f, (value) => canvasGroup.alpha = value, transitionDuration, 0f, Tween.EaseInOut, Tween.LoopType.None, null, onComplete, obeyTimescale: false); } else { // Fallback if no CanvasGroup onComplete?.Invoke(); } } } }