From 93242b27024546c109c47afabd0fd72bbc1218e0 Mon Sep 17 00:00:00 2001 From: Michal Pikulski Date: Wed, 3 Sep 2025 15:43:47 +0200 Subject: [PATCH] [Puzzles] Add basic framework for ScriptableObject puzzle steps and puzzle solving. --- ...lePickupItem.asset => AssPickupItem.asset} | 4 +- ...em.asset.meta => AssPickupItem.asset.meta} | 0 Assets/Data/Items/HeadPickupItem.asset | 17 + Assets/Data/Items/HeadPickupItem.asset.meta | 8 + Assets/Data/Puzzles.meta | 8 + Assets/Data/Puzzles/Ass1.asset | 20 + Assets/Data/Puzzles/Ass1.asset.meta | 8 + Assets/Data/Puzzles/Ass2.asset | 20 + Assets/Data/Puzzles/Ass2.asset.meta | 8 + Assets/Data/Puzzles/Ass3.asset | 20 + Assets/Data/Puzzles/Ass3.asset.meta | 8 + Assets/Data/Puzzles/Head.asset | 23 + Assets/Data/Puzzles/Head.asset.meta | 8 + Assets/Prefabs/Puzzles.meta | 8 + Assets/Prefabs/Puzzles/AssPuzzlePickup.prefab | 135 +++++ .../Puzzles/AssPuzzlePickup.prefab.meta | 7 + .../Prefabs/Puzzles/BasePuzzlePickup.prefab | 80 +++ .../Puzzles/BasePuzzlePickup.prefab.meta | 7 + Assets/Scenes/AppleHillsOverworld.unity | 525 ++++++++++++------ Assets/Scripts/DebugUIMessage.cs | 62 +++ Assets/Scripts/DebugUIMessage.cs.meta | 3 + Assets/Scripts/InputManager.cs | 2 +- Assets/Scripts/Interactable.cs | 16 +- Assets/Scripts/ObjectiveStepBehaviour.cs | 55 ++ Assets/Scripts/ObjectiveStepBehaviour.cs.meta | 3 + Assets/Scripts/Pickup.cs | 2 +- Assets/Scripts/PuzzleManager.cs | 131 +++++ Assets/Scripts/PuzzleManager.cs.meta | 3 + Assets/Scripts/PuzzleStepSO.cs | 14 + Assets/Scripts/PuzzleStepSO.cs.meta | 3 + 30 files changed, 1039 insertions(+), 169 deletions(-) rename Assets/Data/Items/{ExamplePickupItem.asset => AssPickupItem.asset} (91%) rename Assets/Data/Items/{ExamplePickupItem.asset.meta => AssPickupItem.asset.meta} (100%) create mode 100644 Assets/Data/Items/HeadPickupItem.asset create mode 100644 Assets/Data/Items/HeadPickupItem.asset.meta create mode 100644 Assets/Data/Puzzles.meta create mode 100644 Assets/Data/Puzzles/Ass1.asset create mode 100644 Assets/Data/Puzzles/Ass1.asset.meta create mode 100644 Assets/Data/Puzzles/Ass2.asset create mode 100644 Assets/Data/Puzzles/Ass2.asset.meta create mode 100644 Assets/Data/Puzzles/Ass3.asset create mode 100644 Assets/Data/Puzzles/Ass3.asset.meta create mode 100644 Assets/Data/Puzzles/Head.asset create mode 100644 Assets/Data/Puzzles/Head.asset.meta create mode 100644 Assets/Prefabs/Puzzles.meta create mode 100644 Assets/Prefabs/Puzzles/AssPuzzlePickup.prefab create mode 100644 Assets/Prefabs/Puzzles/AssPuzzlePickup.prefab.meta create mode 100644 Assets/Prefabs/Puzzles/BasePuzzlePickup.prefab create mode 100644 Assets/Prefabs/Puzzles/BasePuzzlePickup.prefab.meta create mode 100644 Assets/Scripts/DebugUIMessage.cs create mode 100644 Assets/Scripts/DebugUIMessage.cs.meta create mode 100644 Assets/Scripts/ObjectiveStepBehaviour.cs create mode 100644 Assets/Scripts/ObjectiveStepBehaviour.cs.meta create mode 100644 Assets/Scripts/PuzzleManager.cs create mode 100644 Assets/Scripts/PuzzleManager.cs.meta create mode 100644 Assets/Scripts/PuzzleStepSO.cs create mode 100644 Assets/Scripts/PuzzleStepSO.cs.meta diff --git a/Assets/Data/Items/ExamplePickupItem.asset b/Assets/Data/Items/AssPickupItem.asset similarity index 91% rename from Assets/Data/Items/ExamplePickupItem.asset rename to Assets/Data/Items/AssPickupItem.asset index 12707547..7c192b61 100644 --- a/Assets/Data/Items/ExamplePickupItem.asset +++ b/Assets/Data/Items/AssPickupItem.asset @@ -10,8 +10,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 951b5c8af5114086a865d4bb7eae4548, type: 3} - m_Name: ExamplePickupItem + m_Name: AssPickupItem m_EditorClassIdentifier: - itemName: TestApple + itemName: TestAss description: Well... how do you like 'em? mapSprite: {fileID: -5471482676633547895, guid: 77ab3d770c92d5344b36eee3293a0f94, type: 3} diff --git a/Assets/Data/Items/ExamplePickupItem.asset.meta b/Assets/Data/Items/AssPickupItem.asset.meta similarity index 100% rename from Assets/Data/Items/ExamplePickupItem.asset.meta rename to Assets/Data/Items/AssPickupItem.asset.meta diff --git a/Assets/Data/Items/HeadPickupItem.asset b/Assets/Data/Items/HeadPickupItem.asset new file mode 100644 index 00000000..61164f37 --- /dev/null +++ b/Assets/Data/Items/HeadPickupItem.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 951b5c8af5114086a865d4bb7eae4548, type: 3} + m_Name: HeadPickupItem + m_EditorClassIdentifier: + itemName: TestHead + description: Well... how do you like 'em? + mapSprite: {fileID: -1693247529382600072, guid: 77ab3d770c92d5344b36eee3293a0f94, type: 3} diff --git a/Assets/Data/Items/HeadPickupItem.asset.meta b/Assets/Data/Items/HeadPickupItem.asset.meta new file mode 100644 index 00000000..769215bf --- /dev/null +++ b/Assets/Data/Items/HeadPickupItem.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8b2616beb14825a46b9b1ed85ad3cb25 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/Puzzles.meta b/Assets/Data/Puzzles.meta new file mode 100644 index 00000000..d2c89425 --- /dev/null +++ b/Assets/Data/Puzzles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: adbd68ed84c26f140b56418af3650fc1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/Puzzles/Ass1.asset b/Assets/Data/Puzzles/Ass1.asset new file mode 100644 index 00000000..b595f4f2 --- /dev/null +++ b/Assets/Data/Puzzles/Ass1.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 84e39aac66cf4a10a89abc01b04b13af, type: 3} + m_Name: Ass1 + m_EditorClassIdentifier: + stepId: ass1 + displayName: Pickup Ass 1 + description: + icon: {fileID: 0} + unlocks: + - {fileID: 11400000, guid: 9de0c57af6191384e96e2ba7c04a3d0d, type: 2} diff --git a/Assets/Data/Puzzles/Ass1.asset.meta b/Assets/Data/Puzzles/Ass1.asset.meta new file mode 100644 index 00000000..d5a6b95c --- /dev/null +++ b/Assets/Data/Puzzles/Ass1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b13ff4f31443b74281b13e0eef865c2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/Puzzles/Ass2.asset b/Assets/Data/Puzzles/Ass2.asset new file mode 100644 index 00000000..ffe8b867 --- /dev/null +++ b/Assets/Data/Puzzles/Ass2.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 84e39aac66cf4a10a89abc01b04b13af, type: 3} + m_Name: Ass2 + m_EditorClassIdentifier: + stepId: ass2 + displayName: Pickup Ass 2 + description: + icon: {fileID: 0} + unlocks: + - {fileID: 11400000, guid: 13b0c411066f85a41ba40c3bbbc281ed, type: 2} diff --git a/Assets/Data/Puzzles/Ass2.asset.meta b/Assets/Data/Puzzles/Ass2.asset.meta new file mode 100644 index 00000000..e1bda351 --- /dev/null +++ b/Assets/Data/Puzzles/Ass2.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a84cbe9804e13f74e857c55d90cc10d1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/Puzzles/Ass3.asset b/Assets/Data/Puzzles/Ass3.asset new file mode 100644 index 00000000..c44e349f --- /dev/null +++ b/Assets/Data/Puzzles/Ass3.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 84e39aac66cf4a10a89abc01b04b13af, type: 3} + m_Name: Ass3 + m_EditorClassIdentifier: + stepId: ass3 + displayName: Pickup Ass 3 + description: + icon: {fileID: 0} + unlocks: + - {fileID: 11400000, guid: 9de0c57af6191384e96e2ba7c04a3d0d, type: 2} diff --git a/Assets/Data/Puzzles/Ass3.asset.meta b/Assets/Data/Puzzles/Ass3.asset.meta new file mode 100644 index 00000000..eb1106a2 --- /dev/null +++ b/Assets/Data/Puzzles/Ass3.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 13b0c411066f85a41ba40c3bbbc281ed +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/Puzzles/Head.asset b/Assets/Data/Puzzles/Head.asset new file mode 100644 index 00000000..1351bcde --- /dev/null +++ b/Assets/Data/Puzzles/Head.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 84e39aac66cf4a10a89abc01b04b13af, type: 3} + m_Name: Head + m_EditorClassIdentifier: + stepId: head + displayName: Pickup Head + description: + icon: {fileID: 0} + dependencies: + - {fileID: 11400000, guid: 0b13ff4f31443b74281b13e0eef865c2, type: 2} + - {fileID: 11400000, guid: a84cbe9804e13f74e857c55d90cc10d1, type: 2} + - {fileID: 11400000, guid: 13b0c411066f85a41ba40c3bbbc281ed, type: 2} + unlocks: [] diff --git a/Assets/Data/Puzzles/Head.asset.meta b/Assets/Data/Puzzles/Head.asset.meta new file mode 100644 index 00000000..847c521b --- /dev/null +++ b/Assets/Data/Puzzles/Head.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9de0c57af6191384e96e2ba7c04a3d0d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Puzzles.meta b/Assets/Prefabs/Puzzles.meta new file mode 100644 index 00000000..5fcb8106 --- /dev/null +++ b/Assets/Prefabs/Puzzles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e9fc3f9c0d2b4e49bae3767152cef10 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Puzzles/AssPuzzlePickup.prefab b/Assets/Prefabs/Puzzles/AssPuzzlePickup.prefab new file mode 100644 index 00000000..1a5e2169 --- /dev/null +++ b/Assets/Prefabs/Puzzles/AssPuzzlePickup.prefab @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &2315714521250031805 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalScale.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalScale.y + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalScale.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 530025588511586483, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1688506115392420945, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: itemData + value: + objectReference: {fileID: 11400000, guid: 33e7ca06b22108d4e802486e08bcdfd1, type: 2} + - target: {fileID: 3873876058501900908, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_Size.x + value: 0.6203164 + objectReference: {fileID: 0} + - target: {fileID: 3873876058501900908, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_Size.y + value: 0.58297074 + objectReference: {fileID: 0} + - target: {fileID: 3873876058501900908, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_Offset.x + value: -0.009336546 + objectReference: {fileID: 0} + - target: {fileID: 3873876058501900908, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_Offset.y + value: 0.003112197 + objectReference: {fileID: 0} + - target: {fileID: 3873876058501900908, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_SpriteTilingProperty.pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3873876058501900908, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_SpriteTilingProperty.pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3873876058501900908, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_SpriteTilingProperty.newSize.x + value: 0.53125 + objectReference: {fileID: 0} + - target: {fileID: 3873876058501900908, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_SpriteTilingProperty.newSize.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3873876058501900908, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_SpriteTilingProperty.oldSize.x + value: 0.53125 + objectReference: {fileID: 0} + - target: {fileID: 3873876058501900908, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_SpriteTilingProperty.oldSize.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3873876058501900908, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_SpriteTilingProperty.adaptiveTilingThreshold + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8600723754240441458, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_Size.x + value: 0.53125 + objectReference: {fileID: 0} + - target: {fileID: 8600723754240441458, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_Size.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 8600723754240441458, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: -5471482676633547895, guid: 77ab3d770c92d5344b36eee3293a0f94, type: 3} + - target: {fileID: 8600723754240441458, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_WasSpriteAssigned + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8647987978133738235, guid: 68fe09242bd73f34bad304c509872d90, type: 3} + propertyPath: m_Name + value: TestAss + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 68fe09242bd73f34bad304c509872d90, type: 3} diff --git a/Assets/Prefabs/Puzzles/AssPuzzlePickup.prefab.meta b/Assets/Prefabs/Puzzles/AssPuzzlePickup.prefab.meta new file mode 100644 index 00000000..609abb36 --- /dev/null +++ b/Assets/Prefabs/Puzzles/AssPuzzlePickup.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b5fc01af35233eb4cbeede05e50a7c34 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Puzzles/BasePuzzlePickup.prefab b/Assets/Prefabs/Puzzles/BasePuzzlePickup.prefab new file mode 100644 index 00000000..22400ac2 --- /dev/null +++ b/Assets/Prefabs/Puzzles/BasePuzzlePickup.prefab @@ -0,0 +1,80 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &2259004978614309710 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1730119453103664125, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1730119453103664125, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1730119453103664125, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1730119453103664125, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1730119453103664125, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1730119453103664125, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1730119453103664125, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1730119453103664125, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1730119453103664125, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1730119453103664125, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7447346505753002421, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + propertyPath: m_Name + value: BasePuzzlePickup + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 7447346505753002421, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + insertIndex: -1 + addedObject: {fileID: 7092109305969191084} + m_SourcePrefab: {fileID: 100100000, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} +--- !u!1 &8647987978133738235 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7447346505753002421, guid: bf4b9d7045397f946b2125b1ad4a3fbd, type: 3} + m_PrefabInstance: {fileID: 2259004978614309710} + m_PrefabAsset: {fileID: 0} +--- !u!114 &7092109305969191084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8647987978133738235} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1101f6c4eb04423b89dc78dc7c9f1aae, type: 3} + m_Name: + m_EditorClassIdentifier: + stepData: {fileID: 0} diff --git a/Assets/Prefabs/Puzzles/BasePuzzlePickup.prefab.meta b/Assets/Prefabs/Puzzles/BasePuzzlePickup.prefab.meta new file mode 100644 index 00000000..987eaef1 --- /dev/null +++ b/Assets/Prefabs/Puzzles/BasePuzzlePickup.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 68fe09242bd73f34bad304c509872d90 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/AppleHillsOverworld.unity b/Assets/Scenes/AppleHillsOverworld.unity index 2f8be9f5..647f57bc 100644 --- a/Assets/Scenes/AppleHillsOverworld.unity +++ b/Assets/Scenes/AppleHillsOverworld.unity @@ -214,6 +214,146 @@ MonoBehaviour: RotationDamping: {x: 1, y: 1, z: 1} QuaternionDamping: 1 FollowOffset: {x: 0, y: 0, z: -10} +--- !u!1001 &109902894 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 218805561} + m_Modifications: + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalPosition.x + value: 11.828135 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalPosition.y + value: 4.2350407 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4778083634590203921, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: stepData + value: + objectReference: {fileID: 11400000, guid: 13b0c411066f85a41ba40c3bbbc281ed, type: 2} + - target: {fileID: 6350287859698694726, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_Name + value: TestAss + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} +--- !u!1 &189988799 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 189988800} + - component: {fileID: 189988801} + m_Layer: 0 + m_Name: PuzzleManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &189988800 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 189988799} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 638340961} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &189988801 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 189988799} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bdc7ceebe82348dba3ad1ca1153e0dba, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &218805560 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 218805561} + m_Layer: 0 + m_Name: Objectives + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &218805561 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218805560} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.65768, y: 4.06878, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 754397347} + - {fileID: 1553825406} + - {fileID: 2102167558} + - {fileID: 1627665103} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &249343019 PrefabInstance: m_ObjectHideFlags: 0 @@ -283,6 +423,140 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 539b408cd1191614abdcd99506f1157d, type: 3} +--- !u!1001 &368640488 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 218805561} + m_Modifications: + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalPosition.x + value: -20.60536 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalPosition.y + value: -4.3414383 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3985075764085675244, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4778083634590203921, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: stepData + value: + objectReference: {fileID: 11400000, guid: 0b13ff4f31443b74281b13e0eef865c2, type: 2} + - target: {fileID: 6350287859698694726, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_Name + value: TestAss + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} +--- !u!1001 &448642088 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 218805561} + m_Modifications: + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalPosition.x + value: 17.217047 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalPosition.y + value: -12.421608 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3985075764085675244, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: itemData + value: + objectReference: {fileID: 11400000, guid: 8b2616beb14825a46b9b1ed85ad3cb25, type: 2} + - target: {fileID: 4778083634590203921, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: stepData + value: + objectReference: {fileID: 11400000, guid: 9de0c57af6191384e96e2ba7c04a3d0d, type: 2} + - target: {fileID: 6303063351359542479, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: -1693247529382600072, guid: 77ab3d770c92d5344b36eee3293a0f94, type: 3} + - target: {fileID: 6350287859698694726, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_Name + value: TestHead + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} --- !u!1 &535638823 GameObject: m_ObjectHideFlags: 0 @@ -308,12 +582,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 535638823} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 1.25458, y: 2.22049, z: 0} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.4031, y: -1.84829, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 638340961} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &535638825 MonoBehaviour: @@ -327,6 +601,45 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 360f320f4d7a48e38f5fd7cdfa28144a, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &638340960 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 638340961} + m_Layer: 0 + m_Name: Managers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &638340961 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638340960} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.65768, y: 4.06878, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 954512636} + - {fileID: 535638824} + - {fileID: 189988800} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &754397347 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + m_PrefabInstance: {fileID: 368640488} + m_PrefabAsset: {fileID: 0} --- !u!1 &954512633 GameObject: m_ObjectHideFlags: 0 @@ -395,205 +708,89 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 954512633} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -12.32, y: 0, z: 0} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -16.97768, y: -4.06878, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 638340961} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &1067158016 +--- !u!1001 &1088965592 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: serializedVersion: 3 - m_TransformParent: {fileID: 0} + m_TransformParent: {fileID: 218805561} m_Modifications: - - target: {fileID: 2202795855638212749, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_Name - value: TestApple - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalScale.x - value: 5 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalScale.y - value: 5 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} propertyPath: m_LocalPosition.x - value: -8.54 + value: -6.6248198 objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} propertyPath: m_LocalPosition.y - value: -1.01 + value: 7.2833157 objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} propertyPath: m_LocalPosition.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} propertyPath: m_LocalRotation.y - value: 0 + value: -0 objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} + - target: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 4778083634590203921, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: stepData + value: + objectReference: {fileID: 11400000, guid: a84cbe9804e13f74e857c55d90cc10d1, type: 2} + - target: {fileID: 6350287859698694726, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + propertyPath: m_Name + value: TestAss + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} ---- !u!1001 &1244279152 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 2202795855638212749, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_Name - value: TestApple - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalPosition.x - value: 5.6 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalPosition.y - value: 4.5 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} --- !u!4 &1309036670 stripped Transform: m_CorrespondingSourceObject: {fileID: 3823830588451517910, guid: 301b4e0735896334f8f6fb9a68a7e419, type: 3} m_PrefabInstance: {fileID: 8865498003578620591} m_PrefabAsset: {fileID: 0} ---- !u!1001 &1335103842 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 2202795855638212749, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_Name - value: TestApple - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalScale.x - value: 5 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalScale.y - value: 5 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalPosition.x - value: -4.43 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalPosition.y - value: 6.43 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7046219584904338117, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 5e0579453a4cbae438cf2422f6786a48, type: 3} +--- !u!4 &1553825406 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + m_PrefabInstance: {fileID: 1088965592} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1627665103 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + m_PrefabInstance: {fileID: 448642088} + m_PrefabAsset: {fileID: 0} --- !u!1 &1728894744 GameObject: m_ObjectHideFlags: 0 @@ -22666,6 +22863,11 @@ Tilemap: e31: 0 e32: 0 e33: 1 +--- !u!4 &2102167558 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2844046668579196942, guid: b5fc01af35233eb4cbeede05e50a7c34, type: 3} + m_PrefabInstance: {fileID: 109902894} + m_PrefabAsset: {fileID: 0} --- !u!1001 &1950557796102186365 PrefabInstance: m_ObjectHideFlags: 0 @@ -22787,12 +22989,9 @@ SceneRoots: - {fileID: 1741016590} - {fileID: 1728894746} - {fileID: 8865498003578620591} - - {fileID: 954512636} - - {fileID: 1244279152} - - {fileID: 1335103842} - - {fileID: 1067158016} - {fileID: 100481744} - {fileID: 249343019} - - {fileID: 535638824} - {fileID: 1880929595} - {fileID: 1950557796102186365} + - {fileID: 638340961} + - {fileID: 218805561} diff --git a/Assets/Scripts/DebugUIMessage.cs b/Assets/Scripts/DebugUIMessage.cs new file mode 100644 index 00000000..e9169168 --- /dev/null +++ b/Assets/Scripts/DebugUIMessage.cs @@ -0,0 +1,62 @@ +using UnityEngine; +using UnityEngine.UI; +using System.Collections; + +public class DebugUIMessage : MonoBehaviour +{ + private static DebugUIMessage instance; + private Text messageText; + private Canvas canvas; + private Coroutine hideCoroutine; + + public static void Show(string message, float duration = 2f) + { + if (instance == null) + { + var go = new GameObject("DebugUIMessage"); + instance = go.AddComponent(); + instance.SetupUI(); + DontDestroyOnLoad(go); + } + instance.ShowMessage(message, duration); + } + + private void SetupUI() + { + canvas = new GameObject("DebugUICanvas").AddComponent(); + canvas.renderMode = RenderMode.ScreenSpaceOverlay; + canvas.sortingOrder = 9999; + canvas.gameObject.transform.SetParent(transform); + var textGO = new GameObject("DebugUIText"); + textGO.transform.SetParent(canvas.transform); + messageText = textGO.AddComponent(); + messageText.alignment = TextAnchor.MiddleCenter; + messageText.font = Resources.GetBuiltinResource("Arial.ttf"); + messageText.fontSize = 32; + messageText.color = Color.yellow; + var rect = messageText.GetComponent(); + rect.anchorMin = new Vector2(0.5f, 0.1f); + rect.anchorMax = new Vector2(0.5f, 0.1f); + rect.pivot = new Vector2(0.5f, 0.5f); + rect.anchoredPosition = Vector2.zero; + rect.sizeDelta = new Vector2(800, 100); + messageText.text = ""; + } + + private void ShowMessage(string message, float duration) + { + messageText.text = message; + messageText.enabled = true; + if (hideCoroutine != null) + StopCoroutine(hideCoroutine); + hideCoroutine = StartCoroutine(HideAfterSeconds(duration)); + } + + private IEnumerator HideAfterSeconds(float seconds) + { + yield return new WaitForSeconds(seconds); + messageText.text = ""; + messageText.enabled = false; + } +} + diff --git a/Assets/Scripts/DebugUIMessage.cs.meta b/Assets/Scripts/DebugUIMessage.cs.meta new file mode 100644 index 00000000..58b310c4 --- /dev/null +++ b/Assets/Scripts/DebugUIMessage.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5878ce6b61524c18b7cbdf0f55f143ea +timeCreated: 1756903750 \ No newline at end of file diff --git a/Assets/Scripts/InputManager.cs b/Assets/Scripts/InputManager.cs index 8020dba4..497a4f3a 100644 --- a/Assets/Scripts/InputManager.cs +++ b/Assets/Scripts/InputManager.cs @@ -24,7 +24,7 @@ public class InputManager : MonoBehaviour playerInput = GetComponent(); if (playerInput == null) { - Debug.LogError("InputManager requires a PlayerInput component attached to the same GameObject."); + Debug.LogError("[InputManager] InputManager requires a PlayerInput component attached to the same GameObject."); return; } // Find actions by name in the assigned action map diff --git a/Assets/Scripts/Interactable.cs b/Assets/Scripts/Interactable.cs index ae9b2dc1..c2ba547c 100644 --- a/Assets/Scripts/Interactable.cs +++ b/Assets/Scripts/Interactable.cs @@ -5,10 +5,23 @@ public class Interactable : MonoBehaviour, ITouchInputConsumer { public event Action Interacted; + private ObjectiveStepBehaviour stepBehaviour; + + void Awake() + { + stepBehaviour = GetComponent(); + } + // Called by InputManager when this interactable is clicked/touched public void OnTouchPress(Vector2 worldPosition) { - Debug.Log($"Interactable.OnTouchPress at {worldPosition} on {gameObject.name}"); + if (stepBehaviour != null && !stepBehaviour.IsStepUnlocked()) + { + DebugUIMessage.Show("Item is not unlocked yet"); + Debug.Log("[Puzzles] Tried to interact with locked step: " + gameObject.name); + return; + } + Debug.Log($"[Interactable] OnTouchPress at {worldPosition} on {gameObject.name}"); Interacted?.Invoke(); } @@ -17,4 +30,3 @@ public class Interactable : MonoBehaviour, ITouchInputConsumer // Optionally handle drag/move here } } - diff --git a/Assets/Scripts/ObjectiveStepBehaviour.cs b/Assets/Scripts/ObjectiveStepBehaviour.cs new file mode 100644 index 00000000..434609ff --- /dev/null +++ b/Assets/Scripts/ObjectiveStepBehaviour.cs @@ -0,0 +1,55 @@ +using UnityEngine; + +[RequireComponent(typeof(Interactable))] +public class ObjectiveStepBehaviour : MonoBehaviour +{ + public PuzzleStepSO stepData; + private Interactable interactable; + private bool isUnlocked = false; + + void Awake() + { + interactable = GetComponent(); + if (interactable != null) + { + interactable.Interacted += OnInteracted; + } + // Register with PuzzleManager + PuzzleManager.Instance?.RegisterStepBehaviour(this); + } + + void OnDestroy() + { + if (interactable != null) + { + interactable.Interacted -= OnInteracted; + } + PuzzleManager.Instance?.UnregisterStepBehaviour(this); + } + + public void UnlockStep() + { + isUnlocked = true; + Debug.Log($"[Puzzles] Step unlocked: {stepData?.stepId} on {gameObject.name}"); + // Optionally, show visual feedback for unlocked state + } + + public void LockStep() + { + isUnlocked = false; + Debug.Log($"[Puzzles] Step locked: {stepData?.stepId} on {gameObject.name}"); + // Optionally, show visual feedback for locked state + } + + public bool IsStepUnlocked() + { + return isUnlocked; + } + + private void OnInteracted() + { + if (!isUnlocked) return; + Debug.Log($"[Puzzles] Step interacted: {stepData?.stepId} on {gameObject.name}"); + PuzzleManager.Instance?.OnStepCompleted(stepData); + } +} diff --git a/Assets/Scripts/ObjectiveStepBehaviour.cs.meta b/Assets/Scripts/ObjectiveStepBehaviour.cs.meta new file mode 100644 index 00000000..23d4713d --- /dev/null +++ b/Assets/Scripts/ObjectiveStepBehaviour.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1101f6c4eb04423b89dc78dc7c9f1aae +timeCreated: 1756901353 \ No newline at end of file diff --git a/Assets/Scripts/Pickup.cs b/Assets/Scripts/Pickup.cs index 84a57e38..9390e05d 100644 --- a/Assets/Scripts/Pickup.cs +++ b/Assets/Scripts/Pickup.cs @@ -48,7 +48,7 @@ public class Pickup : MonoBehaviour private void OnInteracted() { - Debug.Log($"Pickup.OnInteracted: Picked up {itemData?.itemName}"); + Debug.Log($"[Pickup] OnInteracted: Picked up {itemData?.itemName}"); // TODO: Add item to inventory manager here Destroy(gameObject); } diff --git a/Assets/Scripts/PuzzleManager.cs b/Assets/Scripts/PuzzleManager.cs new file mode 100644 index 00000000..5bbfcfd1 --- /dev/null +++ b/Assets/Scripts/PuzzleManager.cs @@ -0,0 +1,131 @@ +using UnityEngine; +using System.Collections.Generic; + +public class PuzzleManager : MonoBehaviour +{ + public static PuzzleManager Instance { get; private set; } + private HashSet completedSteps = new HashSet(); + private HashSet unlockedSteps = new HashSet(); + + // Registration for ObjectiveStepBehaviour + private Dictionary stepBehaviours = new Dictionary(); + + // Runtime dependency graph + private Dictionary> runtimeDependencies = new Dictionary>(); + + void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + Instance = this; + DontDestroyOnLoad(gameObject); + } + + public void RegisterStepBehaviour(ObjectiveStepBehaviour behaviour) + { + if (behaviour?.stepData == null) return; + if (!stepBehaviours.ContainsKey(behaviour.stepData)) + { + stepBehaviours.Add(behaviour.stepData, behaviour); + Debug.Log($"[Puzzles] Registered step: {behaviour.stepData.stepId} on {behaviour.gameObject.name}"); + } + } + + public void UnregisterStepBehaviour(ObjectiveStepBehaviour behaviour) + { + if (behaviour?.stepData == null) return; + stepBehaviours.Remove(behaviour.stepData); + Debug.Log($"[Puzzles] Unregistered step: {behaviour.stepData.stepId} on {behaviour.gameObject.name}"); + } + + void Start() + { + BuildRuntimeDependencies(); + UnlockInitialSteps(); + } + + private void BuildRuntimeDependencies() + { + runtimeDependencies.Clear(); + foreach (var step in stepBehaviours.Keys) + { + runtimeDependencies[step] = new List(); + } + foreach (var step in stepBehaviours.Keys) + { + foreach (var unlocked in step.unlocks) + { + if (!runtimeDependencies.ContainsKey(unlocked)) + runtimeDependencies[unlocked] = new List(); + runtimeDependencies[unlocked].Add(step); + Debug.Log($"[Puzzles] Step {unlocked.stepId} depends on {step.stepId}"); + } + } + Debug.Log($"[Puzzles] Runtime dependencies built. Total steps: {stepBehaviours.Count}"); + } + + private void UnlockInitialSteps() + { + foreach (var step in stepBehaviours.Keys) + { + if (runtimeDependencies[step].Count == 0) + { + Debug.Log($"[Puzzles] Initial step unlocked: {step.stepId}"); + UnlockStep(step); + } + } + } + + public void OnStepCompleted(PuzzleStepSO step) + { + if (completedSteps.Contains(step)) return; + completedSteps.Add(step); + Debug.Log($"[Puzzles] Step completed: {step.stepId}"); + foreach (var unlock in step.unlocks) + { + if (AreRuntimeDependenciesMet(unlock)) + { + Debug.Log($"[Puzzles] Unlocking step {unlock.stepId} after completing {step.stepId}"); + UnlockStep(unlock); + } + else + { + Debug.Log($"[Puzzles] Step {unlock.stepId} not unlocked yet, waiting for other dependencies"); + } + } + CheckPuzzleCompletion(); + } + + private bool AreRuntimeDependenciesMet(PuzzleStepSO step) + { + if (!runtimeDependencies.ContainsKey(step) || runtimeDependencies[step].Count == 0) return true; + foreach (var dep in runtimeDependencies[step]) + { + if (!completedSteps.Contains(dep)) return false; + } + return true; + } + + private void UnlockStep(PuzzleStepSO step) + { + if (unlockedSteps.Contains(step)) return; + unlockedSteps.Add(step); + if (stepBehaviours.TryGetValue(step, out var behaviour)) + { + behaviour.UnlockStep(); + } + Debug.Log($"[Puzzles] Step unlocked: {step.stepId}"); + } + + private void CheckPuzzleCompletion() + { + if (completedSteps.Count == stepBehaviours.Count) + { + Debug.Log("[Puzzles] Puzzle complete! All steps finished."); + // TODO: Fire puzzle complete event or trigger outcome logic + } + } +} diff --git a/Assets/Scripts/PuzzleManager.cs.meta b/Assets/Scripts/PuzzleManager.cs.meta new file mode 100644 index 00000000..4905d52d --- /dev/null +++ b/Assets/Scripts/PuzzleManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: bdc7ceebe82348dba3ad1ca1153e0dba +timeCreated: 1756901363 \ No newline at end of file diff --git a/Assets/Scripts/PuzzleStepSO.cs b/Assets/Scripts/PuzzleStepSO.cs new file mode 100644 index 00000000..dee39c5b --- /dev/null +++ b/Assets/Scripts/PuzzleStepSO.cs @@ -0,0 +1,14 @@ +using UnityEngine; +using System.Collections.Generic; + +[CreateAssetMenu(fileName = "PuzzleStepSO", menuName = "Puzzle/Step")] +public class PuzzleStepSO : ScriptableObject +{ + public string stepId; + public string displayName; + [TextArea] + public string description; + public Sprite icon; + [Header("Unlocks")] + public List unlocks = new List(); +} diff --git a/Assets/Scripts/PuzzleStepSO.cs.meta b/Assets/Scripts/PuzzleStepSO.cs.meta new file mode 100644 index 00000000..b52545e4 --- /dev/null +++ b/Assets/Scripts/PuzzleStepSO.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 84e39aac66cf4a10a89abc01b04b13af +timeCreated: 1756901344 \ No newline at end of file