using UnityEngine; using UnityEngine.UI; namespace SpellBoundAR.Items.Inventories.UI { [DisallowMultipleComponent] [RequireComponent(typeof(Text))] public class InventoryEntryDisplayNameText : MonoBehaviour { [SerializeField] private Text text; [SerializeField] private InventoryEntryDisplay display; private IInventoryEntry _entry; private IInventoryEntry Entry { get => _entry; set { if (_entry == value) return; _entry = value; RefreshText(); } } private void Awake() => OnValidate(); private void OnValidate() { if (!text) text = GetComponent(); if (!display) display = GetComponentInParent(); } private void OnEnable() { if (display) display.OnEntryChanged += RefreshEntry; RefreshEntry(); RefreshText(); } private void OnDisable() { if (display) display.OnEntryChanged -= RefreshEntry; Entry = null; } private void RefreshEntry() { Entry = display ? display.Entry : null; } private void RefreshText() { if (!text) return; text.text = Entry is {ItemTypeData: { }} ? Entry?.ItemTypeData.LocalizedName : string.Empty; } } }