Exemple #1
0
 /// <summary>
 ///   <para>Refreshes the text and image (if available) of the currently selected option.
 ///
 /// If you have modified the list of options, you should call this method afterwards to ensure that the visual state of the dropdown corresponds to the updated options.</para>
 /// </summary>
 public void RefreshShownValue()
 {
     DropdownWithColor.OptionData optionData = DropdownWithColor.s_NoOptionData;
     if (this.options.Count > 0)
     {
         optionData = this.options[Mathf.Clamp(this.m_Value, 0, this.options.Count - 1)];
     }
     if (this.m_CaptionText)
     {
         if (optionData != null && optionData.text != null)
         {
             this.m_CaptionText.text = optionData.text;
         }
         else
         {
             this.m_CaptionText.text = string.Empty;
         }
     }
     if (this.m_CaptionImage)
     {
         if (optionData != null)
         {
             this.m_CaptionImage.sprite = optionData.image;
             this.m_CaptionImage.color  = optionData.color;
         }
         else
         {
             this.m_CaptionImage.sprite = null;
         }
         this.m_CaptionImage.enabled = (this.m_CaptionImage.sprite != null);
     }
 }
Exemple #2
0
 private DropdownWithColor.DropdownItem AddItem(DropdownWithColor.OptionData data, bool selected, DropdownWithColor.DropdownItem itemTemplate, List <DropdownWithColor.DropdownItem> items)
 {
     DropdownWithColor.DropdownItem dropdownItem = this.CreateItem(itemTemplate);
     dropdownItem.rectTransform.SetParent(itemTemplate.rectTransform.parent, false);
     dropdownItem.gameObject.SetActive(true);
     dropdownItem.gameObject.name = "Item " + items.Count + ((data.text == null) ? string.Empty : (": " + data.text));
     if (dropdownItem.toggle != null)
     {
         dropdownItem.toggle.isOn = false;
     }
     if (dropdownItem.text)
     {
         dropdownItem.text.text = data.text;
     }
     if (dropdownItem.image)
     {
         dropdownItem.image.sprite  = data.image;
         dropdownItem.image.enabled = (dropdownItem.image.sprite != null);
         dropdownItem.image.color   = data.color;
     }
     items.Add(dropdownItem);
     return(dropdownItem);
 }
Exemple #3
0
        /// <summary>
        ///   <para>Show the dropdown list.</para>
        /// </summary>
        public void Show()
        {
            if (!this.IsActive() || !this.IsInteractable() || this.m_Dropdown != null)
            {
                return;
            }
            if (!this.validTemplate)
            {
                this.SetupTemplate();
                if (!this.validTemplate)
                {
                    return;
                }
            }
            List <Canvas> list = MyListPool <Canvas> .Get();

            base.gameObject.GetComponentsInParent <Canvas>(false, list);
            if (list.Count == 0)
            {
                return;
            }
            Canvas canvas = list[0];

            MyListPool <Canvas> .Release(list);

            this.m_Template.gameObject.SetActive(true);
            this.m_Dropdown      = this.CreateDropdownList(this.m_Template.gameObject);
            this.m_Dropdown.name = "Dropdown List";
            this.m_Dropdown.SetActive(true);
            RectTransform rectTransform = this.m_Dropdown.transform as RectTransform;

            rectTransform.SetParent(this.m_Template.transform.parent, false);
            DropdownWithColor.DropdownItem componentInChildren = this.m_Dropdown.GetComponentInChildren <DropdownWithColor.DropdownItem>();
            GameObject    gameObject     = componentInChildren.rectTransform.parent.gameObject;
            RectTransform rectTransform2 = gameObject.transform as RectTransform;

            componentInChildren.rectTransform.gameObject.SetActive(true);
            Rect    rect    = rectTransform2.rect;
            Rect    rect2   = componentInChildren.rectTransform.rect;
            Vector2 vector  = rect2.min - rect.min + (Vector2)componentInChildren.rectTransform.localPosition;
            Vector2 vector2 = rect2.max - rect.max + (Vector2)componentInChildren.rectTransform.localPosition;
            Vector2 size    = rect2.size;

            this.m_Items.Clear();
            Toggle toggle = null;

            for (int i = 0; i < this.options.Count; i++)
            {
                DropdownWithColor.OptionData   data = this.options[i];
                DropdownWithColor.DropdownItem item = this.AddItem(data, this.value == i, componentInChildren, this.m_Items);
                if (!(item == null))
                {
                    item.toggle.isOn = (this.value == i);
                    item.toggle.onValueChanged.AddListener(delegate(bool x)
                    {
                        this.OnSelectItem(item.toggle);
                    });
                    if (item.toggle.isOn)
                    {
                        item.toggle.Select();
                    }
                    if (toggle != null)
                    {
                        Navigation navigation  = toggle.navigation;
                        Navigation navigation2 = item.toggle.navigation;
                        navigation.mode          = Navigation.Mode.Explicit;
                        navigation2.mode         = Navigation.Mode.Explicit;
                        navigation.selectOnDown  = item.toggle;
                        navigation.selectOnRight = item.toggle;
                        navigation2.selectOnLeft = toggle;
                        navigation2.selectOnUp   = toggle;
                        toggle.navigation        = navigation;
                        item.toggle.navigation   = navigation2;
                    }
                    toggle = item.toggle;
                }
            }
            Vector2 sizeDelta = rectTransform2.sizeDelta;

            sizeDelta.y = size.y * (float)this.m_Items.Count + vector.y - vector2.y;
            rectTransform2.sizeDelta = sizeDelta;
            float num = rectTransform.rect.height - rectTransform2.rect.height;

            if (num > 0f)
            {
                rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, rectTransform.sizeDelta.y - num);
            }
            Vector3[] array = new Vector3[4];
            rectTransform.GetWorldCorners(array);
            RectTransform rectTransform3 = canvas.transform as RectTransform;
            Rect          rect3          = rectTransform3.rect;

            for (int j = 0; j < 2; j++)
            {
                bool flag = false;
                for (int k = 0; k < 4; k++)
                {
                    Vector3 vector3 = rectTransform3.InverseTransformPoint(array[k]);
                    if (vector3[j] < rect3.min[j] || vector3[j] > rect3.max[j])
                    {
                        flag = true;
                        break;
                    }
                }
                if (flag)
                {
                    RectTransformUtility.FlipLayoutOnAxis(rectTransform, j, false, false);
                }
            }
            for (int l = 0; l < this.m_Items.Count; l++)
            {
                RectTransform rectTransform4 = this.m_Items[l].rectTransform;
                rectTransform4.anchorMin        = new Vector2(rectTransform4.anchorMin.x, 0f);
                rectTransform4.anchorMax        = new Vector2(rectTransform4.anchorMax.x, 0f);
                rectTransform4.anchoredPosition = new Vector2(rectTransform4.anchoredPosition.x, vector.y + size.y * (float)(this.m_Items.Count - 1 - l) + size.y * rectTransform4.pivot.y);
                rectTransform4.sizeDelta        = new Vector2(rectTransform4.sizeDelta.x, size.y);
            }
            //this.AlphaFadeList(0.15f, 0f, 1f);
            this.m_Template.gameObject.SetActive(false);
            componentInChildren.gameObject.SetActive(false);
            this.m_Blocker = this.CreateBlocker(canvas);
        }