using System; using Core; using Core.Lifecycle; using UnityEngine; namespace PuzzleS { /// /// Tracks bird discovery progress in the bird finding minigame. /// Saves scene-specific progress using the ManagedBehaviour lifecycle system. /// public class BirdGameStats : ManagedBehaviour { public int birdsFoundInLevel; // Save system configuration public override bool AutoRegisterForSave => true; internal override void OnManagedStart() { // Initialize after all managers are ready } public void BirdFound() { birdsFoundInLevel += 1; } #region Save/Load Lifecycle Hooks internal override string OnSceneSaveRequested() { // Save scene-specific progress var state = new BirdGameState { birdsFoundInLevel = this.birdsFoundInLevel }; return JsonUtility.ToJson(state); } internal override void OnSceneRestoreRequested(string serializedData) { if (string.IsNullOrEmpty(serializedData)) { // No saved data, keep default values return; } try { var state = JsonUtility.FromJson(serializedData); if (state != null) { birdsFoundInLevel = state.birdsFoundInLevel; } } catch (Exception ex) { Logging.Warning($"[BirdGameStats] Failed to restore state: {ex.Message}"); } } #endregion } /// /// Serializable state for bird game progress /// [Serializable] public class BirdGameState { public int birdsFoundInLevel; } }