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