using Core.SaveLoad; using UnityEngine; namespace StateMachines.Quarry.AnneLise { /// /// Hidden state for Anne Lise that saves/restores the DialogueCanvas active state /// public class HiddenState : AppleState { private GameObject _dialogueCanvas; /// /// Serializable data for the hidden state /// [System.Serializable] private class HiddenStateData { public bool wasDialogueCanvasActive; } private void Awake() { // Find the immediate child called "DialogueCanvas" Transform childTransform = transform.Find("DialogueCanvas"); if (childTransform != null) { _dialogueCanvas = childTransform.gameObject; } else { Debug.LogWarning($"[HiddenState] DialogueCanvas child not found on {gameObject.name}"); } } public override string SerializeState() { if (_dialogueCanvas == null) { Debug.LogWarning("[HiddenState] Cannot serialize state - DialogueCanvas is null"); return ""; } HiddenStateData data = new HiddenStateData { wasDialogueCanvasActive = _dialogueCanvas.activeSelf }; return JsonUtility.ToJson(data); } public override void OnRestoreState(string data) { if (string.IsNullOrEmpty(data)) { Debug.LogWarning("[HiddenState] No data to restore"); return; } if (_dialogueCanvas == null) { Debug.LogWarning("[HiddenState] Cannot restore state - DialogueCanvas is null"); return; } try { HiddenStateData stateData = JsonUtility.FromJson(data); _dialogueCanvas.SetActive(stateData.wasDialogueCanvasActive); Debug.Log($"[HiddenState] Restored DialogueCanvas active state to: {stateData.wasDialogueCanvasActive}"); } catch (System.Exception ex) { Debug.LogError($"[HiddenState] Failed to restore state: {ex.Message}"); } } } }