using Core.Lifecycle; using Core.SaveLoad; using UnityEngine; public class BirdEyesBehavior : ManagedBehaviour { // Animator Hashes private static readonly int RightGuess = Animator.StringToHash("RightGuess"); private static readonly int WrongGuess = Animator.StringToHash("WrongGuess"); private static readonly int NoGuess = Animator.StringToHash("NoGuess"); private static readonly int Wolterisout = Animator.StringToHash("wolterisout"); private AppleMachine _statemachine; private Animator _animator; public bool correctItemIsIn; [SerializeField] private Animator bushAnimator; // Assign in Inspector // Save state private bool _wolterisoutTriggered; // Enable save/load participation public override bool AutoRegisterForSave => true; // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { _statemachine = GetComponent(); _animator = GetComponentInChildren(); } public void CorrectItem() { correctItemIsIn = true; _animator.SetTrigger(RightGuess); BirdReveal(); } public void IncorrectItem() { correctItemIsIn = false; _animator.SetTrigger(WrongGuess); } public void NoItem() { _animator.SetTrigger(NoGuess); } public void BirdReveal() { if (bushAnimator != null) { bushAnimator.SetTrigger(Wolterisout); _wolterisoutTriggered = true; } _statemachine.ChangeState("BirdSpawned"); } protected override void OnSceneRestoreRequested(string serializedData) { base.OnSceneRestoreRequested(serializedData); if (!string.IsNullOrEmpty(serializedData)) { if (bool.TryParse(serializedData, out bool wasTriggered)) { _wolterisoutTriggered = wasTriggered; // If it was triggered before, set it again on restore if (_wolterisoutTriggered && bushAnimator != null) { bushAnimator.SetTrigger(Wolterisout); } } } } protected override string OnSceneSaveRequested() { return _wolterisoutTriggered.ToString(); } }