diff --git a/Assets/Prefabs/Puzzles/AnneLise/AnneLiseBaseBush.prefab b/Assets/Prefabs/Puzzles/AnneLise/AnneLiseBaseBush.prefab index b2b09792..67496df5 100644 --- a/Assets/Prefabs/Puzzles/AnneLise/AnneLiseBaseBush.prefab +++ b/Assets/Prefabs/Puzzles/AnneLise/AnneLiseBaseBush.prefab @@ -226,7 +226,7 @@ GameObject: - component: {fileID: 2741639361616064442} - component: {fileID: 4903273501345439385} - component: {fileID: 1054459649399154791} - - component: {fileID: 7319925080429004531} + - component: {fileID: 61210891595976786} m_Layer: 10 m_Name: Hidden m_TagString: Untagged @@ -451,7 +451,7 @@ MonoBehaviour: audioSource: {fileID: 0} clipPriority: 0 sourcePriority: 1 ---- !u!114 &7319925080429004531 +--- !u!114 &61210891595976786 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -460,9 +460,9 @@ MonoBehaviour: m_GameObject: {fileID: 1011363502278351410} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 95e46aacea5b42888ee7881894193c11, type: 3} + m_Script: {fileID: 11500000, guid: 1fa347bfb45f473f8639842928f8cfa1, type: 3} m_Name: - m_EditorClassIdentifier: AppleHillsScripts::Core.SaveLoad.AppleState + m_EditorClassIdentifier: AppleHillsScripts::StateMachines.Quarry.AnneLise.HiddenState --- !u!1 &1674229500073894281 GameObject: m_ObjectHideFlags: 0 @@ -830,6 +830,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 603ecc4a6ab6bb84c8cb9773fa310b69, type: 3} m_Name: m_EditorClassIdentifier: '::' + dialogueCanvas: {fileID: 7042752134100908030} --- !u!114 &1193493154550576580 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1740,3 +1741,8 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 3484825090253933040, guid: a8b0a1c6cf21352439dc24d3b03182db, type: 3} m_PrefabInstance: {fileID: 4289827099693551234} m_PrefabAsset: {fileID: 0} +--- !u!1 &7042752134100908030 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 6499933157207406972, guid: a8b0a1c6cf21352439dc24d3b03182db, type: 3} + m_PrefabInstance: {fileID: 4289827099693551234} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Scripts/DamianExperiments/SoundBirdPuzzleSection/cameraSwitcherNests.cs b/Assets/Scripts/DamianExperiments/SoundBirdPuzzleSection/cameraSwitcherNests.cs index 59c5d709..c55b6c22 100644 --- a/Assets/Scripts/DamianExperiments/SoundBirdPuzzleSection/cameraSwitcherNests.cs +++ b/Assets/Scripts/DamianExperiments/SoundBirdPuzzleSection/cameraSwitcherNests.cs @@ -30,7 +30,7 @@ public class cameraSwitcherNailBird : MonoBehaviour private void OnTriggerExit2D(Collider2D other) { - if (other.CompareTag("Player")) + if (other.CompareTag("Player") && gameObject.activeInHierarchy) { playerInsideCount--; if (playerInsideCount == 0 && virtualCamera != null) diff --git a/Assets/Scripts/StateMachines/Quarry/AnneLise/AnneLiseBushBehaviour.cs b/Assets/Scripts/StateMachines/Quarry/AnneLise/AnneLiseBushBehaviour.cs index 2553c719..c9905088 100644 --- a/Assets/Scripts/StateMachines/Quarry/AnneLise/AnneLiseBushBehaviour.cs +++ b/Assets/Scripts/StateMachines/Quarry/AnneLise/AnneLiseBushBehaviour.cs @@ -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"); } } diff --git a/Assets/Scripts/StateMachines/Quarry/AnneLise/HiddenState.cs b/Assets/Scripts/StateMachines/Quarry/AnneLise/HiddenState.cs new file mode 100644 index 00000000..4ecf39c8 --- /dev/null +++ b/Assets/Scripts/StateMachines/Quarry/AnneLise/HiddenState.cs @@ -0,0 +1,78 @@ +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}"); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/StateMachines/Quarry/AnneLise/HiddenState.cs.meta b/Assets/Scripts/StateMachines/Quarry/AnneLise/HiddenState.cs.meta new file mode 100644 index 00000000..f7cd9b78 --- /dev/null +++ b/Assets/Scripts/StateMachines/Quarry/AnneLise/HiddenState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1fa347bfb45f473f8639842928f8cfa1 +timeCreated: 1763978213 \ No newline at end of file