Ejemplo n.º 1
0
        public void AddItem(string label, object data)
        {
            if (!_initialized)
            {
                Initialize();
            }

            if (Items.Any((item => item.Data == data)))
            {
                Debug.LogError("Items list already contains " + data);
                return;
            }

            var newItemData = new SelectableItemData(label, data);
            var newObj      = Instantiate(_itemTemplate, transform, true).gameObject;

            newObj.gameObject.SetActive(true);
            newObj.gameObject.name = label;
            var button = newObj.GetComponent <Button>();

            if (button == null)
            {
                button = newObj.GetComponentInChildren <Button>();
            }
            button.transform.GetChild(0).GetComponent <Text>().text = label;
            Items.Add(new SelectableItem(newItemData, button));
            var index = Items.Count - 1;

            button.onClick.AddListener(() => HandleSelected(index));
        }
Ejemplo n.º 2
0
        public void DeselectAll()
        {
            if (!_initialized)
            {
                Initialize();
            }

            foreach (var item in Items)
            {
                item.Button.interactable = true;
            }

            CurrentSelection = null;
        }
Ejemplo n.º 3
0
        private void HandleSelected(int index)
        {
            if (!_initialized)
            {
                Initialize();
            }

            if (index < 0 || index >= Items.Count)
            {
                Debug.LogError($"Index of {index} doesn't fit in buttons list with count {Items.Count}!");
                return;
            }

            DeselectAll();
            Items[index].Button.interactable = false;
            CurrentSelection = Items[index].Data;
            OnItemSelected?.Invoke(Items[index].Button, Items[index].Data);
        }
Ejemplo n.º 4
0
 public SelectableItem(SelectableItemData data, Button button)
 {
     Data   = data;
     Button = button;
 }