diff --git a/Assets/Scripts/UI/CardSystem/AlbumViewPage.cs b/Assets/Scripts/UI/CardSystem/AlbumViewPage.cs index aaef8852..30dc88b2 100644 --- a/Assets/Scripts/UI/CardSystem/AlbumViewPage.cs +++ b/Assets/Scripts/UI/CardSystem/AlbumViewPage.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.Linq; using AppleHills.Data.CardSystem; -using Bootstrap; using Data.CardSystem; using Pixelplacement; using UI.Core; @@ -41,8 +40,10 @@ namespace UI.CardSystem private List _activeCards = new List(); private const int MAX_VISIBLE_CARDS = 3; - private void Awake() + protected override void OnManagedAwake() { + base.OnManagedAwake(); + // Make sure we have a CanvasGroup for transitions if (canvasGroup == null) canvasGroup = GetComponent(); @@ -64,16 +65,7 @@ namespace UI.CardSystem // Set up booster pack button listeners SetupBoosterButtonListeners(); - // Register for post-boot initialization - BootCompletionService.RegisterInitAction(InitializePostBoot); - - // UI pages should start disabled - gameObject.SetActive(false); - } - - private void InitializePostBoot() - { - // Subscribe to CardSystemManager events + // Subscribe to CardSystemManager events (managers are guaranteed to be initialized) if (CardSystemManager.Instance != null) { CardSystemManager.Instance.OnBoosterCountChanged += OnBoosterCountChanged; @@ -84,6 +76,9 @@ namespace UI.CardSystem int initialCount = CardSystemManager.Instance.GetBoosterPackCount(); UpdateBoosterButtons(initialCount); } + + // UI pages should start disabled + gameObject.SetActive(false); } private void SetupBoosterButtonListeners() @@ -102,7 +97,7 @@ namespace UI.CardSystem } } - private void OnDestroy() + protected override void OnDestroy() { // Unsubscribe from CardSystemManager if (CardSystemManager.Instance != null) @@ -134,6 +129,9 @@ namespace UI.CardSystem // Clean up active cards CleanupActiveCards(); + + // Call base implementation + base.OnDestroy(); } private void OnExitButtonClicked() diff --git a/Assets/Scripts/UI/CardSystem/BoosterNotificationDot.cs b/Assets/Scripts/UI/CardSystem/BoosterNotificationDot.cs index fede88dc..0a32e122 100644 --- a/Assets/Scripts/UI/CardSystem/BoosterNotificationDot.cs +++ b/Assets/Scripts/UI/CardSystem/BoosterNotificationDot.cs @@ -1,4 +1,4 @@ -using Bootstrap; +using Core.Lifecycle; using Data.CardSystem; using Pixelplacement; using Pixelplacement.TweenSystem; @@ -12,7 +12,7 @@ namespace UI.CardSystem /// Can be reused across different UI elements that need to show numeric notifications /// Automatically syncs with CardSystemManager to display booster pack count /// - public class BoosterNotificationDot : MonoBehaviour + public class BoosterNotificationDot : ManagedBehaviour { [Header("UI References")] [SerializeField] private GameObject dotBackground; @@ -40,8 +40,10 @@ namespace UI.CardSystem private TweenBase _activeTween; - private void Awake() + protected override void OnManagedAwake() { + base.OnManagedAwake(); + // Store original scale for pulse animation if (dotBackground != null) { @@ -54,13 +56,7 @@ namespace UI.CardSystem countText.color = textColor; } - // Register for post-boot initialization - BootCompletionService.RegisterInitAction(InitializePostBoot); - } - - private void InitializePostBoot() - { - // Subscribe to CardSystemManager events + // Subscribe to CardSystemManager events (managers are guaranteed to be initialized) if (CardSystemManager.Instance != null) { CardSystemManager.Instance.OnBoosterCountChanged += OnBoosterCountChanged; @@ -76,13 +72,16 @@ namespace UI.CardSystem } } - private void OnDestroy() + protected override void OnDestroy() { // Unsubscribe from CardSystemManager events to prevent memory leaks if (CardSystemManager.Instance != null) { CardSystemManager.Instance.OnBoosterCountChanged -= OnBoosterCountChanged; } + + // Call base implementation + base.OnDestroy(); } ///