private int GetDragIdx(Vector2 pos)
        {
            int result = -1;

            for (int i = 0; i < mods.Count; i++)
            {
                DisplayedMod displayedMod = mods[i];
                if (RectTransformUtility.RectangleContainsScreenPoint(displayedMod.rect_transform, pos))
                {
                    result = i;
                    break;
                }
            }
            return(result);
        }
 public void OnEndDrag(Vector2 pos)
 {
     if (startDragIdx >= 0)
     {
         int dragIdx = GetDragIdx(pos);
         int num;
         if (dragIdx >= 0 && dragIdx != startDragIdx)
         {
             DisplayedMod displayedMod = mods[dragIdx];
             num = displayedMod.mod_index;
         }
         else
         {
             num = Global.Instance.modManager.mods.Count;
         }
         int          target_index  = num;
         Manager      modManager    = Global.Instance.modManager;
         DisplayedMod displayedMod2 = mods[startDragIdx];
         modManager.Reinsert(displayedMod2.mod_index, target_index, this);
         screen.BuildDisplay();
     }
 }
    private void BuildDisplay()
    {
        foreach (DisplayedMod displayedMod in displayedMods)
        {
            DisplayedMod current = displayedMod;
            if ((UnityEngine.Object)current.rect_transform != (UnityEngine.Object)null)
            {
                UnityEngine.Object.Destroy(current.rect_transform.gameObject);
            }
        }
        displayedMods.Clear();
        ModOrderingDragListener listener = new ModOrderingDragListener(this, displayedMods);

        for (int i = 0; i != Global.Instance.modManager.mods.Count; i++)
        {
            Mod mod = Global.Instance.modManager.mods[i];
            if (mod.status != 0 && mod.status != Mod.Status.UninstallPending && mod.HasAnyContent(Content.LayerableFiles | Content.Strings | Content.DLL | Content.Animation))
            {
                HierarchyReferences hierarchyReferences = Util.KInstantiateUI <HierarchyReferences>(entryPrefab, entryParent.gameObject, false);
                displayedMods.Add(new DisplayedMod
                {
                    rect_transform = hierarchyReferences.gameObject.GetComponent <RectTransform>(),
                    mod_index      = i
                });
                DragMe component = hierarchyReferences.GetComponent <DragMe>();
                component.listener = listener;
                LocText reference = hierarchyReferences.GetReference <LocText>("Title");
                reference.text = mod.title;
                ToolTip reference2 = hierarchyReferences.GetReference <ToolTip>("Description");
                reference2.toolTip = mod.description;
                if (mod.crash_count != 0)
                {
                    reference.color = Color.Lerp(Color.white, Color.red, (float)mod.crash_count / 3f);
                }
                KButton reference3 = hierarchyReferences.GetReference <KButton>("ManageButton");
                reference3.isInteractable = mod.is_managed;
                if (reference3.isInteractable)
                {
                    reference3.GetComponent <ToolTip>().toolTip = mod.manage_tooltip;
                    reference3.onClick += mod.on_managed;
                }
                MultiToggle toggle = hierarchyReferences.GetReference <MultiToggle>("EnabledToggle");
                toggle.ChangeState(mod.enabled ? 1 : 0);
                MultiToggle multiToggle = toggle;
                multiToggle.onClick = (System.Action)Delegate.Combine(multiToggle.onClick, (System.Action) delegate
                {
                    OnToggleClicked(toggle, mod.label);
                });
                toggle.GetComponent <ToolTip>().OnToolTip = (() => (!mod.enabled) ? UI.FRONTEND.MODS.TOOLTIPS.DISABLED : UI.FRONTEND.MODS.TOOLTIPS.ENABLED);
                hierarchyReferences.gameObject.SetActive(true);
            }
        }
        foreach (DisplayedMod displayedMod2 in displayedMods)
        {
            DisplayedMod current2 = displayedMod2;
            current2.rect_transform.gameObject.SetActive(true);
        }
        if (displayedMods.Count != 0)
        {
            return;
        }
    }