private DropdownItem AddItem(OptionData data, bool selected, DropdownItem itemTemplate, List <DropdownItem> items)
        {
            DropdownItem dropdownItem = CreateItem(itemTemplate);

            dropdownItem.rectTransform.SetParent(itemTemplate.rectTransform.get_parent(), false);
            dropdownItem.get_gameObject().SetActive(true);
            dropdownItem.get_gameObject().set_name("Item " + items.Count + ((data.get_text() != null) ? (": " + data.get_text()) : ""));
            if (dropdownItem.toggle != null)
            {
                dropdownItem.toggle.set_isOn(false);
            }
            if (Object.op_Implicit(dropdownItem.text))
            {
                dropdownItem.text.SetText(data.get_text());
            }
            if (Object.op_Implicit(dropdownItem.image))
            {
                dropdownItem.image.set_sprite(data.get_image());
                dropdownItem.image.set_enabled(dropdownItem.image.get_sprite() != null);
            }
            items.Add(dropdownItem);
            return(dropdownItem);
        }
        public unsafe void Show()
        {
            //IL_00f1: Unknown result type (might be due to invalid IL or missing references)
            //IL_00f6: Unknown result type (might be due to invalid IL or missing references)
            //IL_00fe: Unknown result type (might be due to invalid IL or missing references)
            //IL_0103: Unknown result type (might be due to invalid IL or missing references)
            //IL_0107: Unknown result type (might be due to invalid IL or missing references)
            //IL_010e: Unknown result type (might be due to invalid IL or missing references)
            //IL_0113: Unknown result type (might be due to invalid IL or missing references)
            //IL_011e: Unknown result type (might be due to invalid IL or missing references)
            //IL_0123: Unknown result type (might be due to invalid IL or missing references)
            //IL_0128: Unknown result type (might be due to invalid IL or missing references)
            //IL_012d: Unknown result type (might be due to invalid IL or missing references)
            //IL_0131: Unknown result type (might be due to invalid IL or missing references)
            //IL_0138: Unknown result type (might be due to invalid IL or missing references)
            //IL_013d: Unknown result type (might be due to invalid IL or missing references)
            //IL_0148: Unknown result type (might be due to invalid IL or missing references)
            //IL_014d: Unknown result type (might be due to invalid IL or missing references)
            //IL_0152: Unknown result type (might be due to invalid IL or missing references)
            //IL_0157: Unknown result type (might be due to invalid IL or missing references)
            //IL_015b: Unknown result type (might be due to invalid IL or missing references)
            //IL_0160: Unknown result type (might be due to invalid IL or missing references)
            //IL_0239: Unknown result type (might be due to invalid IL or missing references)
            //IL_023e: Unknown result type (might be due to invalid IL or missing references)
            //IL_024c: Unknown result type (might be due to invalid IL or missing references)
            //IL_0251: Unknown result type (might be due to invalid IL or missing references)
            //IL_029d: Unknown result type (might be due to invalid IL or missing references)
            //IL_02b0: Unknown result type (might be due to invalid IL or missing references)
            //IL_02de: Unknown result type (might be due to invalid IL or missing references)
            //IL_02e3: Unknown result type (might be due to invalid IL or missing references)
            //IL_02e7: Unknown result type (might be due to invalid IL or missing references)
            //IL_02fb: Unknown result type (might be due to invalid IL or missing references)
            //IL_0303: Unknown result type (might be due to invalid IL or missing references)
            //IL_0311: Unknown result type (might be due to invalid IL or missing references)
            //IL_0319: Unknown result type (might be due to invalid IL or missing references)
            //IL_031e: Unknown result type (might be due to invalid IL or missing references)
            //IL_0328: Unknown result type (might be due to invalid IL or missing references)
            //IL_032d: Unknown result type (might be due to invalid IL or missing references)
            //IL_0344: Unknown result type (might be due to invalid IL or missing references)
            //IL_034f: Unknown result type (might be due to invalid IL or missing references)
            //IL_035c: Unknown result type (might be due to invalid IL or missing references)
            //IL_0385: Unknown result type (might be due to invalid IL or missing references)
            //IL_038a: Unknown result type (might be due to invalid IL or missing references)
            //IL_039f: Unknown result type (might be due to invalid IL or missing references)
            //IL_03a4: Unknown result type (might be due to invalid IL or missing references)
            //IL_03a9: Unknown result type (might be due to invalid IL or missing references)
            //IL_03b6: Unknown result type (might be due to invalid IL or missing references)
            //IL_03bb: Unknown result type (might be due to invalid IL or missing references)
            //IL_03d3: Unknown result type (might be due to invalid IL or missing references)
            //IL_03d8: Unknown result type (might be due to invalid IL or missing references)
            //IL_042e: Unknown result type (might be due to invalid IL or missing references)
            //IL_043d: Unknown result type (might be due to invalid IL or missing references)
            //IL_044b: Unknown result type (might be due to invalid IL or missing references)
            //IL_045a: Unknown result type (might be due to invalid IL or missing references)
            //IL_0468: Unknown result type (might be due to invalid IL or missing references)
            //IL_0472: Unknown result type (might be due to invalid IL or missing references)
            //IL_0479: Unknown result type (might be due to invalid IL or missing references)
            //IL_0493: Unknown result type (might be due to invalid IL or missing references)
            //IL_049c: Unknown result type (might be due to invalid IL or missing references)
            //IL_04a8: Unknown result type (might be due to invalid IL or missing references)
            //IL_04b6: Unknown result type (might be due to invalid IL or missing references)
            //IL_04c0: Unknown result type (might be due to invalid IL or missing references)
            //IL_04c7: Unknown result type (might be due to invalid IL or missing references)
            if (!this.IsActive() || !this.IsInteractable() || m_Dropdown != null)
            {
                return;
            }
            if (!validTemplate)
            {
                SetupTemplate();
                if (!validTemplate)
                {
                    return;
                }
            }
            Canvas rootCanvas = this.get_gameObject().GetRootCanvas();

            if (rootCanvas == null)
            {
                return;
            }
            m_Template.get_gameObject().SetActive(true);
            m_Dropdown = CreateDropdownList(m_Template.get_gameObject());
            m_Dropdown.set_name("Dropdown List");
            m_Dropdown.SetActive(true);
            RectTransform val = m_Dropdown.get_transform() as RectTransform;

            val.SetParent(m_Template.get_transform().get_parent(), false);
            DropdownItem  componentInChildren = m_Dropdown.GetComponentInChildren <DropdownItem>();
            RectTransform val2 = componentInChildren.rectTransform.get_parent().get_gameObject().get_transform() as RectTransform;

            componentInChildren.rectTransform.get_gameObject().SetActive(true);
            Rect    rect  = val2.get_rect();
            Rect    rect2 = componentInChildren.rectTransform.get_rect();
            Vector2 val3  = rect2.get_min() - rect.get_min() + Vector2.op_Implicit(componentInChildren.rectTransform.get_localPosition());
            Vector2 val4  = rect2.get_max() - rect.get_max() + Vector2.op_Implicit(componentInChildren.rectTransform.get_localPosition());
            Vector2 size  = rect2.get_size();

            m_Items.Clear();
            Toggle val5 = null;

            for (int i = 0; i < options.Count; i++)
            {
                OptionData   data = options[i];
                DropdownItem item = AddItem(data, value == i, componentInChildren, m_Items);
                if (!(item == null))
                {
                    item.toggle.set_isOn(value == i);
                    _003C_003Ec__DisplayClass49_0 _003C_003Ec__DisplayClass49_;
                    item.toggle.onValueChanged.AddListener(new UnityAction <bool>((object)_003C_003Ec__DisplayClass49_, (IntPtr)(void *) /*OpCode not supported: LdFtn*/));
                    if (item.toggle.get_isOn())
                    {
                        item.toggle.Select();
                    }
                    if (val5 != null)
                    {
                        Navigation navigation  = val5.get_navigation();
                        Navigation navigation2 = item.toggle.get_navigation();
                        navigation.set_mode(4);
                        navigation2.set_mode(4);
                        navigation.set_selectOnDown(item.toggle);
                        navigation.set_selectOnRight(item.toggle);
                        navigation2.set_selectOnLeft(val5);
                        navigation2.set_selectOnUp(val5);
                        val5.set_navigation(navigation);
                        item.toggle.set_navigation(navigation2);
                    }
                    val5 = item.toggle;
                }
            }
            Vector2 sizeDelta = val2.get_sizeDelta();

            sizeDelta.y = ((IntPtr)(void *)size).y * (float)m_Items.Count + ((IntPtr)(void *)val3).y - ((IntPtr)(void *)val4).y;
            val2.set_sizeDelta(sizeDelta);
            Rect  rect3  = val.get_rect();
            float height = rect3.get_height();

            rect3 = val2.get_rect();
            float num = height - rect3.get_height();

            if (num > 0f)
            {
                val.set_sizeDelta(new Vector2(((IntPtr)(void *)val.get_sizeDelta()).x, ((IntPtr)(void *)val.get_sizeDelta()).y - num));
            }
            Vector3[] array = (Vector3[])new Vector3[4];
            val.GetWorldCorners(array);
            RectTransform val6  = rootCanvas.get_transform() as RectTransform;
            Rect          rect4 = val6.get_rect();

            for (int j = 0; j < 2; j++)
            {
                bool flag = false;
                int  num2 = 0;
                while (num2 < 4)
                {
                    Vector3 val7 = val6.InverseTransformPoint(array[num2]);
                    float   num3 = val7.get_Item(j);
                    Vector2 val8 = rect4.get_min();
                    if (!(num3 < val8.get_Item(j)))
                    {
                        float num4 = val7.get_Item(j);
                        val8 = rect4.get_max();
                        if (!(num4 > val8.get_Item(j)))
                        {
                            num2++;
                            continue;
                        }
                    }
                    flag = true;
                    break;
                }
                if (flag)
                {
                    RectTransformUtility.FlipLayoutOnAxis(val, j, false, false);
                }
            }
            for (int k = 0; k < m_Items.Count; k++)
            {
                RectTransform rectTransform = m_Items[k].rectTransform;
                rectTransform.set_anchorMin(new Vector2(((IntPtr)(void *)rectTransform.get_anchorMin()).x, 0f));
                rectTransform.set_anchorMax(new Vector2(((IntPtr)(void *)rectTransform.get_anchorMax()).x, 0f));
                rectTransform.set_anchoredPosition(new Vector2(((IntPtr)(void *)rectTransform.get_anchoredPosition()).x, ((IntPtr)(void *)val3).y + ((IntPtr)(void *)size).y * (float)(m_Items.Count - 1 - k) + ((IntPtr)(void *)size).y * ((IntPtr)(void *)rectTransform.get_pivot()).y));
                rectTransform.set_sizeDelta(new Vector2(((IntPtr)(void *)rectTransform.get_sizeDelta()).x, ((IntPtr)(void *)size).y));
            }
            m_Template.get_gameObject().SetActive(false);
            componentInChildren.get_gameObject().SetActive(false);
            m_Blocker = CreateBlocker(rootCanvas);
        }