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; } }