using System.Linq; using System.Text; using EFT.InventoryLogic; using EFT.UI; using UnityEngine; namespace UIFixes; public class MultiSelectDebug : MonoBehaviour { private GUIStyle guiStyle; private Rect guiRect = new(20, 70, 0, 0); GUIContent guiContent; public void OnGUI() { if (!MultiSelect.Enabled || !Settings.ShowMultiSelectDebug.Value) { return; } guiStyle ??= new GUIStyle(GUI.skin.box) { alignment = TextAnchor.MiddleLeft, fontSize = 14, margin = new RectOffset(3, 3, 3, 3), richText = true }; guiContent ??= new GUIContent(); StringBuilder builder = new(); builder.Append("MultiSelect\n"); builder.AppendFormat("Active: {1}\n", MultiSelect.Active ? "green" : "red", MultiSelect.Active); builder.AppendFormat("Hovered: {0}\n", FormatItemContext(ItemUiContext.Instance.R().ItemContext)); builder.AppendFormat("Items: {0}\n", MultiSelect.Count); foreach (MultiSelectItemContext itemContext in MultiSelect.SortedItemContexts()) { builder.AppendFormat("{0}\n", FormatItemContext(itemContext)); } if (MultiSelect.SecondaryContexts.Any()) { builder.AppendFormat("Secondary Items: {0}\n", MultiSelect.SecondaryCount); foreach (MultiSelectItemContext itemContext in MultiSelect.SecondaryContexts) { builder.AppendFormat("x{0} {1}\n", itemContext.Item.StackObjectsCount, itemContext.Item.ToString()); } } guiContent.text = builder.ToString(); guiRect.size = guiStyle.CalcSize(guiContent); GUI.Box(guiRect, guiContent, guiStyle); } private string FormatItemContext(ItemContextAbstractClass itemContext) { if (itemContext == null) { return "null"; } ItemAddress address = itemContext is DragItemContext dragItemContext ? dragItemContext.ItemAddress : itemContext.Item.CurrentAddress; LocationInGrid location = address is GridItemAddress gridAddress ? gridAddress.LocationInGrid : null; string locationString = location != null ? $"({location.x}, {location.y})" : "(slot)"; return $"x{itemContext.Item.StackObjectsCount} {(address != null ? address.Container.ID : "")} {locationString} {itemContext.Item.Name.Localized()}"; } }