using System; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using Ktyl.Util; using UnityEngine; [CreateAssetMenu(menuName = "KernelPanic/Artefacts/Artefact System")] 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) { _inventory.addA(artefact); // _dialogue.PlayLine(artefact.dialogueKey); } private void OnDisable() { _artefacts.Clear(); } }