diff --git a/game/Assets/Data/Artefacts/Artefact System.asset b/game/Assets/Data/Artefacts/Artefact System.asset index 2db9f80..1ca3357 100644 --- a/game/Assets/Data/Artefacts/Artefact System.asset +++ b/game/Assets/Data/Artefacts/Artefact System.asset @@ -14,3 +14,4 @@ MonoBehaviour: m_EditorClassIdentifier: _dialogue: {fileID: 11400000, guid: 56369c4e83cc59e44bf55cd16fafc4e8, type: 2} _inventory: {fileID: 11400000, guid: 1a9441435aa1fc649a84169f689c7f53, type: 2} + _nearbyArtefactId: {fileID: 11400000, guid: caba70196fbb1c549a934f7566f7a247, type: 2} diff --git a/game/Assets/Data/Artefacts/nearbyArtefactID.asset b/game/Assets/Data/Artefacts/Nearby Artefact ID.asset similarity index 93% rename from game/Assets/Data/Artefacts/nearbyArtefactID.asset rename to game/Assets/Data/Artefacts/Nearby Artefact ID.asset index 2138e16..7cbd4b0 100644 --- a/game/Assets/Data/Artefacts/nearbyArtefactID.asset +++ b/game/Assets/Data/Artefacts/Nearby Artefact ID.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: cc38ab5b9e594a344a8eb1635487d5eb, type: 3} - m_Name: nearbyArtefactID + m_Name: Nearby Artefact ID m_EditorClassIdentifier: _initialValue: -1 _readOnly: 0 diff --git a/game/Assets/Data/Artefacts/nearbyArtefactID.asset.meta b/game/Assets/Data/Artefacts/Nearby Artefact ID.asset.meta similarity index 100% rename from game/Assets/Data/Artefacts/nearbyArtefactID.asset.meta rename to game/Assets/Data/Artefacts/Nearby Artefact ID.asset.meta diff --git a/game/Assets/Scenes/Main.unity b/game/Assets/Scenes/Main.unity index 17d673f..24301b6 100644 --- a/game/Assets/Scenes/Main.unity +++ b/game/Assets/Scenes/Main.unity @@ -2476,15 +2476,15 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4676633831318799747, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalRotation.x - value: 0.14211853 + value: 0.14211854 objectReference: {fileID: 0} - target: {fileID: 4676633831318799747, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalRotation.y - value: -2.2566488e-22 + value: 1.1133053e-25 objectReference: {fileID: 0} - target: {fileID: 4676633831318799747, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalRotation.z - value: 2.3205715e-23 + value: -4.9127595e-24 objectReference: {fileID: 0} - target: {fileID: 4676633831388223341, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalPosition.x @@ -2504,15 +2504,15 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4676633831388223341, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalRotation.x - value: 0.1419703 + value: 0.14197029 objectReference: {fileID: 0} - target: {fileID: 4676633831388223341, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalRotation.y - value: 0.04519987 + value: 0.045199864 objectReference: {fileID: 0} - target: {fileID: 4676633831388223341, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalRotation.z - value: -0.0064896117 + value: -0.0064896103 objectReference: {fileID: 0} - target: {fileID: 4676633831414007564, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_Name @@ -2600,15 +2600,15 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4676633832789495666, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalRotation.x - value: 0.14211851 + value: 0.14211854 objectReference: {fileID: 0} - target: {fileID: 4676633832789495666, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalRotation.y - value: -7.529077e-16 + value: -0.0000000034819871 objectReference: {fileID: 0} - target: {fileID: 4676633832789495666, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalRotation.z - value: 4.582889e-18 + value: 4.999292e-10 objectReference: {fileID: 0} - target: {fileID: 4676633832858914730, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_XAxis.m_InvertInput @@ -2636,11 +2636,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4676633832928372887, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalRotation.y - value: 0.04519986 + value: 0.045199856 objectReference: {fileID: 0} - target: {fileID: 4676633832928372887, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} propertyPath: m_LocalRotation.z - value: -0.006489608 + value: -0.006489607 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 8a918f60d084fbe468bf3b2c0a14fb52, type: 3} @@ -7128,12 +7128,11 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: artefactUI: {fileID: 483749937} - nearbyArtefactID: {fileID: 11400000, guid: caba70196fbb1c549a934f7566f7a247, type: 2} Player: {fileID: 1239556274} artefactText: {fileID: 59318657} - Artefacts: {fileID: 1112305613} inputSettings: {fileID: 11400000, guid: 87faf39b6f22e524984c1680a88045ac, type: 2} dialogue: {fileID: 11400000, guid: 56369c4e83cc59e44bf55cd16fafc4e8, type: 2} + artefacts: {fileID: 11400000, guid: f523ac0d77530064b8b41c627b13fae0, type: 2} --- !u!114 &2070784759 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/game/Assets/Scripts/Artefacts/ArtefactControl.cs b/game/Assets/Scripts/Artefacts/ArtefactControl.cs index 3a1ec10..5d4e716 100644 --- a/game/Assets/Scripts/Artefacts/ArtefactControl.cs +++ b/game/Assets/Scripts/Artefacts/ArtefactControl.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -6,8 +7,6 @@ using UnityEngine.Events; public class ArtefactControl : MonoBehaviour { - - private bool _show; protected bool _canInteract; @@ -20,7 +19,12 @@ public class ArtefactControl : MonoBehaviour [SerializeField] private SerialInt _nearbyArtefactID; [SerializeField] private ArtefactSystem _artefacts; - + + private void OnEnable() + { + _artefacts.RegisterArtefact(_data); + } + protected virtual void Start() { _artefactID = data.artefactID; diff --git a/game/Assets/Scripts/Artefacts/ArtefactSystem.cs b/game/Assets/Scripts/Artefacts/ArtefactSystem.cs index 860534e..c30cae2 100644 --- a/game/Assets/Scripts/Artefacts/ArtefactSystem.cs +++ b/game/Assets/Scripts/Artefacts/ArtefactSystem.cs @@ -1,5 +1,8 @@ +using System; using System.Collections; using System.Collections.Generic; +using System.Runtime.InteropServices; +using Ktyl.Util; using UnityEngine; [CreateAssetMenu(menuName = "KernelPanic/Artefacts/Artefact System")] @@ -7,6 +10,36 @@ public class ArtefactSystem : ScriptableObject { [SerializeField] private DialogueSystem _dialogue; [SerializeField] private ArtefactInventory _inventory; + [SerializeField] private SerialInt _nearbyArtefactId; + + private readonly List _artefacts = new List(); + + public Artefact GetNearbyArtefact() + { + return _nearbyArtefactId == -1 ? null : GetArtefact(_nearbyArtefactId); + } + + private Artefact GetArtefact(int id) + { + for (int i = 0; i < _artefacts.Count; i++) + { + if (_artefacts[i].artefactID == id) return _artefacts[i]; + } + + Debug.LogError($"no registered artefact with id {id}"); + return null; + } + + public void RegisterArtefact(Artefact artefact) + { + if (_artefacts.Contains(artefact)) + { + Debug.LogError($"{artefact} already registered", this); + return; + } + + _artefacts.Add(artefact); + } public void FindArtefact(Artefact artefact) { @@ -14,4 +47,9 @@ public class ArtefactSystem : ScriptableObject // _dialogue.PlayLine(artefact.dialogueKey); } + + private void OnDisable() + { + _artefacts.Clear(); + } } diff --git a/game/Assets/Scripts/Artefacts/EventHandler.cs b/game/Assets/Scripts/Artefacts/EventHandler.cs index dba71a1..2800cd4 100644 --- a/game/Assets/Scripts/Artefacts/EventHandler.cs +++ b/game/Assets/Scripts/Artefacts/EventHandler.cs @@ -6,7 +6,6 @@ using UnityEngine; public class EventHandler : MonoBehaviour { - //[SerializeField] private SerialInt nearbyArtefactID; public static EventHandler current; private void Awake() @@ -39,10 +38,7 @@ public class EventHandler : MonoBehaviour { if (onArtefactPickUp != null) { - //if(nearbyArtefactID != -1) - // { - onArtefactPickUp(id); - //} + onArtefactPickUp(id); } } diff --git a/game/Assets/Scripts/Artefacts/PickUpDisplay.cs b/game/Assets/Scripts/Artefacts/PickUpDisplay.cs index c52610b..34781be 100644 --- a/game/Assets/Scripts/Artefacts/PickUpDisplay.cs +++ b/game/Assets/Scripts/Artefacts/PickUpDisplay.cs @@ -11,40 +11,29 @@ public class PickUpDisplay : MonoBehaviour [SerializeField] private static bool _paused; [SerializeField] private GameObject artefactUI; - [SerializeField] private SerialInt nearbyArtefactID; [SerializeField] private GameObject Player; [SerializeField] private Text artefactText; - [SerializeField] private GameObject Artefacts; [SerializeField] private InputSettings inputSettings; [SerializeField] private DialogueSystem dialogue; + [SerializeField] private ArtefactSystem artefacts; private Artefact chosenArtefact; - private static List completeList = new List(); - private void Awake() + private void Start() { EventHandler.current.onArtefactUI += PopUpOn; - int i; - - for(i=0; i().data); - - } } - private void FixedUpdate() + private void Update() { - foreach(Artefact arte in completeList) - { - if (nearbyArtefactID != -1 && arte.artefactID == nearbyArtefactID) - chosenArtefact = arte; - } + var artefact = artefacts.GetNearbyArtefact(); + if (!artefact) return; + + chosenArtefact = artefact; } public void PopUpOn() { - ; _paused = true; artefactUI.SetActive(true); Player.GetComponent().enabled = false;