Save bird states
This commit is contained in:
@@ -1,19 +1,73 @@
|
|||||||
|
using System;
|
||||||
|
using Core.Lifecycle;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class BirdGameStats : MonoBehaviour
|
namespace PuzzleS
|
||||||
{
|
{
|
||||||
public int birdsFoundInLevel;
|
/// <summary>
|
||||||
|
/// Tracks bird discovery progress in the bird finding minigame.
|
||||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
/// Saves scene-specific progress using the ManagedBehaviour lifecycle system.
|
||||||
void Start()
|
/// </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
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BirdFound()
|
/// <summary>
|
||||||
|
/// Serializable state for bird game progress
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class BirdGameState
|
||||||
{
|
{
|
||||||
birdsFoundInLevel += 1;
|
public int birdsFoundInLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using UnityEngine;
|
|||||||
using UnityEngine.Audio;
|
using UnityEngine.Audio;
|
||||||
using Core;
|
using Core;
|
||||||
using Core.Lifecycle;
|
using Core.Lifecycle;
|
||||||
|
using PuzzleS;
|
||||||
|
|
||||||
public class BushAudioController : ManagedBehaviour
|
public class BushAudioController : ManagedBehaviour
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user