Files
AppleHillsProduction/Assets/Scripts/StateMachines/Quarry/AnneLise/HiddenState.cs

78 lines
2.3 KiB
C#

using Core.SaveLoad;
using UnityEngine;
namespace StateMachines.Quarry.AnneLise
{
/// <summary>
/// Hidden state for Anne Lise that saves/restores the DialogueCanvas active state
/// </summary>
public class HiddenState : AppleState
{
private GameObject _dialogueCanvas;
/// <summary>
/// Serializable data for the hidden state
/// </summary>
[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<HiddenStateData>(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}");
}
}
}
}