Hide Ana-Lyse's dialogue component when taking photo, also correctly restore a hidden state with the dialogu turned off
This commit is contained in:
@@ -6,7 +6,9 @@ namespace StateMachines.Quarry.AnneLise
|
||||
{
|
||||
public class AnneLiseBushBehaviour : MonoBehaviour
|
||||
{
|
||||
|
||||
[SerializeField] private GameObject dialogueCanvas;
|
||||
|
||||
|
||||
private AppleMachine _anneLiseBushStateMachine;
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
@@ -16,6 +18,7 @@ namespace StateMachines.Quarry.AnneLise
|
||||
|
||||
public void TakePhoto()
|
||||
{
|
||||
dialogueCanvas?.SetActive(false);
|
||||
_anneLiseBushStateMachine.ChangeState("TakePhoto");
|
||||
}
|
||||
}
|
||||
|
||||
78
Assets/Scripts/StateMachines/Quarry/AnneLise/HiddenState.cs
Normal file
78
Assets/Scripts/StateMachines/Quarry/AnneLise/HiddenState.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
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}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1fa347bfb45f473f8639842928f8cfa1
|
||||
timeCreated: 1763978213
|
||||
Reference in New Issue
Block a user