using System.Collections; using System.Collections.Generic; using UnityEngine; using Ktyl.Util; public class ArtefactControl : MonoBehaviour { private bool _show; protected bool _canInteract; [SerializeField] private Artefact data; public int artefactID => _artefactID; private int _artefactID; private string _artefactDialogue; [SerializeField] private SerialInt _nearbyArtefactID; protected virtual void Start() { _artefactID = data.artefactID; _artefactDialogue = data.artefactDialogue; _show = data.show; _canInteract = data.canInteract; EventHandler.current.onArtefactTriggerEnter += NearArtefact; EventHandler.current.onArtefactTriggerExit += AwayArtefact; EventHandler.current.onArtefactPickUp += PickUp; } private void NearArtefact(int id) { if (id == this._artefactID) { _show = true; this._canInteract = true; } } private void AwayArtefact(int id) { if (id == this._artefactID) { _show = false; _canInteract = false; } } protected virtual void PickUp(int id) { if (id == this._artefactID) { if (_canInteract == true) { ArtefactInventory.addA(data); foreach (var x in ArtefactInventory.artefactList) { Debug.Log(x.ToString()); } } //here put 'show artifact dialogue' if (this.gameObject != null) { data.PowerUnlock(); _nearbyArtefactID.Value = -1; _canInteract = false; EventHandler.current.ArtefactUI(); Destroy(this.gameObject); } } } void OnGUI() { if (_show) { GUI.Label(new Rect(Screen.width / 2 - 50, 5, 100, 100), "Press E to pickup"); } } }