// Decompiled with JetBrains decompiler // Type: Terraria.GameContent.UI.Elements.UICreativeInfiniteItemsDisplay // Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null // MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83 // Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using ReLogic.Content; using System; using System.Collections.Generic; using System.Linq; using Terraria.Audio; using Terraria.DataStructures; using Terraria.GameContent.Creative; using Terraria.GameContent.UI.States; using Terraria.Graphics.Renderers; using Terraria.ID; using Terraria.Localization; using Terraria.UI; namespace Terraria.GameContent.UI.Elements { public class UICreativeInfiniteItemsDisplay : UIElement { private List _itemIdsAvailableTotal; private List _itemIdsAvailableToShow; private CreativeUnlocksTracker _lastTrackerCheckedForEdits; private int _lastCheckedVersionForEdits = -1; private UISearchBar _searchBar; private UIPanel _searchBoxPanel; private UIState _parentUIState; private string _searchString; private UIDynamicItemCollection _itemGrid; private EntryFilterer _filterer; private EntrySorter _sorter; private UIElement _containerInfinites; private UIElement _containerSacrifice; private bool _showSacrificesInsteadOfInfinites; public const string SnapPointName_SacrificeSlot = "CreativeSacrificeSlot"; public const string SnapPointName_SacrificeConfirmButton = "CreativeSacrificeConfirm"; public const string SnapPointName_InfinitesFilter = "CreativeInfinitesFilter"; public const string SnapPointName_InfinitesSearch = "CreativeInfinitesSearch"; public const string SnapPointName_InfinitesItemSlot = "CreativeInfinitesSlot"; private List _sacrificeCogsSmall = new List(); private List _sacrificeCogsMedium = new List(); private List _sacrificeCogsBig = new List(); private UIImageFramed _sacrificePistons; private UIParticleLayer _pistonParticleSystem; private Asset _pistonParticleAsset; private int _sacrificeAnimationTimeLeft; private bool _researchComplete; private bool _hovered; private int _lastItemIdSacrificed; private int _lastItemAmountWeHad; private int _lastItemAmountWeNeededTotal; public UICreativeInfiniteItemsDisplay(UIState uiStateThatHoldsThis) { this._parentUIState = uiStateThatHoldsThis; this._itemIdsAvailableTotal = new List(); this._itemIdsAvailableToShow = new List(); this._filterer = new EntryFilterer(); this._filterer.AddFilters(new List() { (IItemEntryFilter) new ItemFilters.Weapon(), (IItemEntryFilter) new ItemFilters.Armor(), (IItemEntryFilter) new ItemFilters.BuildingBlock(), (IItemEntryFilter) new ItemFilters.GameplayItems(), (IItemEntryFilter) new ItemFilters.Accessories(), (IItemEntryFilter) new ItemFilters.Consumables(), (IItemEntryFilter) new ItemFilters.Materials() }); this._filterer.SetSearchFilterObject(new ItemFilters.BySearch()); this._sorter = new EntrySorter(); this._sorter.AddSortSteps(new List() { (ICreativeItemSortStep) new SortingSteps.ByCreativeSortingId(), (ICreativeItemSortStep) new SortingSteps.Alphabetical() }); this._itemIdsAvailableTotal.AddRange((IEnumerable) CreativeItemSacrificesCatalog.Instance.SacrificeCountNeededByItemId.Keys.ToList()); this.BuildPage(); } private void BuildPage() { this._lastCheckedVersionForEdits = -1; this.RemoveAllChildren(); this.SetPadding(0.0f); UIElement totalContainer1 = new UIElement() { Width = StyleDimension.Fill, Height = StyleDimension.Fill }; totalContainer1.SetPadding(0.0f); this._containerInfinites = totalContainer1; UIElement totalContainer2 = new UIElement() { Width = StyleDimension.Fill, Height = StyleDimension.Fill }; totalContainer2.SetPadding(0.0f); this._containerSacrifice = totalContainer2; this.BuildInfinitesMenuContents(totalContainer1); this.BuildSacrificeMenuContents(totalContainer2); this.UpdateContents(); this.OnUpdate += new UIElement.ElementEvent(this.UICreativeInfiniteItemsDisplay_OnUpdate); } private void Hover_OnUpdate(UIElement affectedElement) { if (!this._hovered) return; Main.LocalPlayer.mouseInterface = true; } private void Hover_OnMouseOut(UIMouseEvent evt, UIElement listeningElement) => this._hovered = false; private void Hover_OnMouseOver(UIMouseEvent evt, UIElement listeningElement) => this._hovered = true; private static UIPanel CreateBasicPanel() { UIPanel uiPanel = new UIPanel(); UICreativeInfiniteItemsDisplay.SetBasicSizesForCreativeSacrificeOrInfinitesPanel((UIElement) uiPanel); uiPanel.BackgroundColor *= 0.8f; uiPanel.BorderColor *= 0.8f; return uiPanel; } private static void SetBasicSizesForCreativeSacrificeOrInfinitesPanel(UIElement element) { element.Width = new StyleDimension(0.0f, 1f); element.Height = new StyleDimension(-38f, 1f); element.Top = new StyleDimension(38f, 0.0f); } private void BuildInfinitesMenuContents(UIElement totalContainer) { UIPanel basicPanel = UICreativeInfiniteItemsDisplay.CreateBasicPanel(); totalContainer.Append((UIElement) basicPanel); basicPanel.OnUpdate += new UIElement.ElementEvent(this.Hover_OnUpdate); basicPanel.OnMouseOver += new UIElement.MouseEvent(this.Hover_OnMouseOver); basicPanel.OnMouseOut += new UIElement.MouseEvent(this.Hover_OnMouseOut); UIDynamicItemCollection dynamicItemCollection = new UIDynamicItemCollection(); this._itemGrid = dynamicItemCollection; UIElement uiElement = new UIElement() { Height = new StyleDimension(24f, 0.0f), Width = new StyleDimension(0.0f, 1f) }; uiElement.SetPadding(0.0f); basicPanel.Append(uiElement); this.AddSearchBar(uiElement); this._searchBar.SetContents((string) null, true); UIList uiList1 = new UIList(); uiList1.Width = new StyleDimension(-25f, 1f); uiList1.Height = new StyleDimension(-28f, 1f); uiList1.VAlign = 1f; uiList1.HAlign = 0.0f; UIList uiList2 = uiList1; basicPanel.Append((UIElement) uiList2); float num = 4f; UIScrollbar uiScrollbar = new UIScrollbar(); uiScrollbar.Height = new StyleDimension((float) (-28.0 - (double) num * 2.0), 1f); uiScrollbar.Top = new StyleDimension(-num, 0.0f); uiScrollbar.VAlign = 1f; uiScrollbar.HAlign = 1f; UIScrollbar scrollbar = uiScrollbar; basicPanel.Append((UIElement) scrollbar); uiList2.SetScrollbar(scrollbar); uiList2.Add((UIElement) dynamicItemCollection); UICreativeItemsInfiniteFilteringOptions filteringOptions = new UICreativeItemsInfiniteFilteringOptions(this._filterer, "CreativeInfinitesFilter"); filteringOptions.OnClickingOption += new Action(this.filtersHelper_OnClickingOption); filteringOptions.Left = new StyleDimension(20f, 0.0f); totalContainer.Append((UIElement) filteringOptions); filteringOptions.OnUpdate += new UIElement.ElementEvent(this.Hover_OnUpdate); filteringOptions.OnMouseOver += new UIElement.MouseEvent(this.Hover_OnMouseOver); filteringOptions.OnMouseOut += new UIElement.MouseEvent(this.Hover_OnMouseOut); } private void BuildSacrificeMenuContents(UIElement totalContainer) { UIPanel basicPanel = UICreativeInfiniteItemsDisplay.CreateBasicPanel(); basicPanel.VAlign = 0.5f; basicPanel.Height = new StyleDimension(170f, 0.0f); basicPanel.Width = new StyleDimension(170f, 0.0f); basicPanel.Top = new StyleDimension(); totalContainer.Append((UIElement) basicPanel); basicPanel.OnUpdate += new UIElement.ElementEvent(this.Hover_OnUpdate); basicPanel.OnMouseOver += new UIElement.MouseEvent(this.Hover_OnMouseOver); basicPanel.OnMouseOut += new UIElement.MouseEvent(this.Hover_OnMouseOut); this.AddCogsForSacrificeMenu((UIElement) basicPanel); this._pistonParticleAsset = Main.Assets.Request("Images/UI/Creative/Research_Spark", (AssetRequestMode) 1); float pixels = 0.0f; UIImage uiImage1 = new UIImage(Main.Assets.Request("Images/UI/Creative/Research_Slots", (AssetRequestMode) 1)); uiImage1.HAlign = 0.5f; uiImage1.VAlign = 0.5f; uiImage1.Top = new StyleDimension(-20f, 0.0f); uiImage1.Left = new StyleDimension(pixels, 0.0f); UIImage uiImage2 = uiImage1; basicPanel.Append((UIElement) uiImage2); Asset asset = Main.Assets.Request("Images/UI/Creative/Research_FramedPistons", (AssetRequestMode) 1); UIImageFramed uiImageFramed1 = new UIImageFramed(asset, asset.Frame(verticalFrames: 9)); uiImageFramed1.HAlign = 0.5f; uiImageFramed1.VAlign = 0.5f; uiImageFramed1.Top = new StyleDimension(-20f, 0.0f); uiImageFramed1.Left = new StyleDimension(pixels, 0.0f); uiImageFramed1.IgnoresMouseInteraction = true; UIImageFramed uiImageFramed2 = uiImageFramed1; basicPanel.Append((UIElement) uiImageFramed2); this._sacrificePistons = uiImageFramed2; UIParticleLayer uiParticleLayer = new UIParticleLayer(); uiParticleLayer.Width = new StyleDimension(0.0f, 1f); uiParticleLayer.Height = new StyleDimension(0.0f, 1f); uiParticleLayer.AnchorPositionOffsetByPercents = Vector2.One / 2f; uiParticleLayer.AnchorPositionOffsetByPixels = Vector2.Zero; this._pistonParticleSystem = uiParticleLayer; uiImageFramed2.Append((UIElement) this._pistonParticleSystem); UIElement element = Main.CreativeMenu.ProvideItemSlotElement(0); element.HAlign = 0.5f; element.VAlign = 0.5f; element.Top = new StyleDimension(-15f, 0.0f); element.Left = new StyleDimension(pixels, 0.0f); element.SetSnapPoint("CreativeSacrificeSlot", 0); uiImage2.Append(element); UIText uiText1 = new UIText("(0/50)", 0.8f); uiText1.Top = new StyleDimension(10f, 0.0f); uiText1.Left = new StyleDimension(pixels, 0.0f); uiText1.HAlign = 0.5f; uiText1.VAlign = 0.5f; uiText1.IgnoresMouseInteraction = true; UIText uiText2 = uiText1; uiText2.OnUpdate += new UIElement.ElementEvent(this.descriptionText_OnUpdate); basicPanel.Append((UIElement) uiText2); UIPanel uiPanel1 = new UIPanel(); uiPanel1.Top = new StyleDimension(0.0f, 0.0f); uiPanel1.Left = new StyleDimension(pixels, 0.0f); uiPanel1.HAlign = 0.5f; uiPanel1.VAlign = 1f; uiPanel1.Width = new StyleDimension(124f, 0.0f); uiPanel1.Height = new StyleDimension(30f, 0.0f); UIPanel uiPanel2 = uiPanel1; UIText uiText3 = new UIText(Language.GetText("CreativePowers.ConfirmInfiniteItemSacrifice"), 0.8f); uiText3.IgnoresMouseInteraction = true; uiText3.HAlign = 0.5f; uiText3.VAlign = 0.5f; UIText uiText4 = uiText3; uiPanel2.Append((UIElement) uiText4); uiPanel2.SetSnapPoint("CreativeSacrificeConfirm", 0); uiPanel2.OnClick += new UIElement.MouseEvent(this.sacrificeButton_OnClick); uiPanel2.OnMouseOver += new UIElement.MouseEvent(this.FadedMouseOver); uiPanel2.OnMouseOut += new UIElement.MouseEvent(this.FadedMouseOut); uiPanel2.OnUpdate += new UIElement.ElementEvent(this.research_OnUpdate); basicPanel.Append((UIElement) uiPanel2); basicPanel.OnUpdate += new UIElement.ElementEvent(this.sacrificeWindow_OnUpdate); } private void research_OnUpdate(UIElement affectedElement) { if (!affectedElement.IsMouseHovering) return; Main.instance.MouseText(Language.GetTextValue("CreativePowers.ResearchButtonTooltip")); } private void FadedMouseOver(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); ((UIPanel) evt.Target).BackgroundColor = new Color(73, 94, 171); ((UIPanel) evt.Target).BorderColor = Colors.FancyUIFatButtonMouseOver; } private void FadedMouseOut(UIMouseEvent evt, UIElement listeningElement) { ((UIPanel) evt.Target).BackgroundColor = new Color(63, 82, 151) * 0.8f; ((UIPanel) evt.Target).BorderColor = Color.Black; } private void AddCogsForSacrificeMenu(UIElement sacrificesContainer) { UIElement uiElement = new UIElement(); uiElement.IgnoresMouseInteraction = true; UICreativeInfiniteItemsDisplay.SetBasicSizesForCreativeSacrificeOrInfinitesPanel(uiElement); uiElement.VAlign = 0.5f; uiElement.Height = new StyleDimension(170f, 0.0f); uiElement.Width = new StyleDimension(280f, 0.0f); uiElement.Top = new StyleDimension(); uiElement.SetPadding(0.0f); sacrificesContainer.Append(uiElement); Vector2 vector2 = new Vector2(-10f, -10f); this.AddSymetricalCogsPair(uiElement, new Vector2(22f, 1f) + vector2, "Images/UI/Creative/Research_GearC", this._sacrificeCogsSmall); this.AddSymetricalCogsPair(uiElement, new Vector2(1f, 28f) + vector2, "Images/UI/Creative/Research_GearB", this._sacrificeCogsMedium); this.AddSymetricalCogsPair(uiElement, new Vector2(5f, 5f) + vector2, "Images/UI/Creative/Research_GearA", this._sacrificeCogsBig); } private void sacrificeWindow_OnUpdate(UIElement affectedElement) { float num1 = 0.05f; float animationProgress = this.GetSacrificeAnimationProgress(); double lerpValue = (double) Utils.GetLerpValue(1f, 0.7f, animationProgress, true); float num2 = 1f + (float) (lerpValue * lerpValue) * 2f; float num3 = num1 * num2; float num4 = 1.142857f; float num5 = 1f; UICreativeInfiniteItemsDisplay.OffsetRotationsForCogs((float) (2.0 * (double) num3), this._sacrificeCogsSmall); UICreativeInfiniteItemsDisplay.OffsetRotationsForCogs(num4 * num3, this._sacrificeCogsMedium); UICreativeInfiniteItemsDisplay.OffsetRotationsForCogs(-num5 * num3, this._sacrificeCogsBig); int frameY = 0; if (this._sacrificeAnimationTimeLeft != 0) { float num6 = 0.1f; float num7 = 0.06666667f; frameY = (double) animationProgress < 1.0 - (double) num6 ? ((double) animationProgress < 1.0 - (double) num6 * 2.0 ? ((double) animationProgress < 1.0 - (double) num6 * 3.0 ? ((double) animationProgress < (double) num7 * 4.0 ? ((double) animationProgress < (double) num7 * 3.0 ? ((double) animationProgress < (double) num7 * 2.0 ? ((double) animationProgress < (double) num7 ? 1 : 2) : 3) : 4) : 5) : 6) : 7) : 8; if (this._sacrificeAnimationTimeLeft == 56) { SoundEngine.PlaySound(63); Vector2 vector2 = new Vector2(0.0f, 0.1635f); for (int index = 0; index < 15; ++index) { Vector2 initialVelocity = Main.rand.NextVector2Circular(4f, 3f); if ((double) initialVelocity.Y > 0.0) initialVelocity.Y = -initialVelocity.Y; initialVelocity.Y -= 2f; this._pistonParticleSystem.AddParticle((IParticle) new CreativeSacrificeParticle(this._pistonParticleAsset, new Rectangle?(), initialVelocity, Vector2.Zero) { AccelerationPerFrame = vector2, ScaleOffsetPerFrame = -0.01666667f }); } } if (this._sacrificeAnimationTimeLeft == 40 && this._researchComplete) { this._researchComplete = false; SoundEngine.PlaySound(64); } } this._sacrificePistons.SetFrame(1, 9, 0, frameY, 0, 0); } private static void OffsetRotationsForCogs(float rotationOffset, List cogsList) { cogsList[0].Rotation += rotationOffset; cogsList[1].Rotation -= rotationOffset; } private void AddSymetricalCogsPair( UIElement sacrificesContainer, Vector2 cogOFfsetsInPixels, string assetPath, List imagesList) { Asset asset = Main.Assets.Request(assetPath, (AssetRequestMode) 1); cogOFfsetsInPixels += -asset.Size() / 2f; UIImage uiImage1 = new UIImage(asset); uiImage1.NormalizedOrigin = Vector2.One / 2f; uiImage1.Left = new StyleDimension(cogOFfsetsInPixels.X, 0.0f); uiImage1.Top = new StyleDimension(cogOFfsetsInPixels.Y, 0.0f); UIImage uiImage2 = uiImage1; imagesList.Add(uiImage2); sacrificesContainer.Append((UIElement) uiImage2); UIImage uiImage3 = new UIImage(asset); uiImage3.NormalizedOrigin = Vector2.One / 2f; uiImage3.HAlign = 1f; uiImage3.Left = new StyleDimension(-cogOFfsetsInPixels.X, 0.0f); uiImage3.Top = new StyleDimension(cogOFfsetsInPixels.Y, 0.0f); UIImage uiImage4 = uiImage3; imagesList.Add(uiImage4); sacrificesContainer.Append((UIElement) uiImage4); } private void descriptionText_OnUpdate(UIElement affectedElement) { UIText uiText = affectedElement as UIText; int itemIdChecked; int amountWeHave; int amountNeededTotal; bool sacrificeNumbers = Main.CreativeMenu.GetSacrificeNumbers(out itemIdChecked, out amountWeHave, out amountNeededTotal); Main.CreativeMenu.ShouldDrawSacrificeArea(); if (!Main.mouseItem.IsAir) this.ForgetItemSacrifice(); if (itemIdChecked == 0) { if (this._lastItemIdSacrificed != 0 && this._lastItemAmountWeNeededTotal != this._lastItemAmountWeHad) uiText.SetText(string.Format("({0}/{1})", (object) this._lastItemAmountWeHad, (object) this._lastItemAmountWeNeededTotal)); else uiText.SetText("???"); } else { this.ForgetItemSacrifice(); if (!sacrificeNumbers) uiText.SetText("X"); else uiText.SetText(string.Format("({0}/{1})", (object) amountWeHave, (object) amountNeededTotal)); } } private void sacrificeButton_OnClick(UIMouseEvent evt, UIElement listeningElement) { int itemIdChecked; int amountWeHave; int amountNeededTotal; Main.CreativeMenu.GetSacrificeNumbers(out itemIdChecked, out amountWeHave, out amountNeededTotal); int amountWeSacrificed; switch (Main.CreativeMenu.SacrificeItem(out amountWeSacrificed)) { case CreativeUI.ItemSacrificeResult.SacrificedButNotDone: this._researchComplete = false; this.BeginSacrificeAnimation(); this.RememberItemSacrifice(itemIdChecked, amountWeHave + amountWeSacrificed, amountNeededTotal); break; case CreativeUI.ItemSacrificeResult.SacrificedAndDone: this._researchComplete = true; this.BeginSacrificeAnimation(); this.RememberItemSacrifice(itemIdChecked, amountWeHave + amountWeSacrificed, amountNeededTotal); break; } } private void RememberItemSacrifice(int itemId, int amountWeHave, int amountWeNeedTotal) { this._lastItemIdSacrificed = itemId; this._lastItemAmountWeHad = amountWeHave; this._lastItemAmountWeNeededTotal = amountWeNeedTotal; } private void ForgetItemSacrifice() { this._lastItemIdSacrificed = 0; this._lastItemAmountWeHad = 0; this._lastItemAmountWeNeededTotal = 0; } private void BeginSacrificeAnimation() => this._sacrificeAnimationTimeLeft = 60; private void UpdateSacrificeAnimation() { if (this._sacrificeAnimationTimeLeft <= 0) return; --this._sacrificeAnimationTimeLeft; } private float GetSacrificeAnimationProgress() => Utils.GetLerpValue(60f, 0.0f, (float) this._sacrificeAnimationTimeLeft, true); public void SetPageTypeToShow( UICreativeInfiniteItemsDisplay.InfiniteItemsDisplayPage page) { this._showSacrificesInsteadOfInfinites = page == UICreativeInfiniteItemsDisplay.InfiniteItemsDisplayPage.InfiniteItemsResearch; } private void UICreativeInfiniteItemsDisplay_OnUpdate(UIElement affectedElement) { this.RemoveAllChildren(); CreativeUnlocksTracker playerCreativeTracker = Main.LocalPlayerCreativeTracker; if (this._lastTrackerCheckedForEdits != playerCreativeTracker) { this._lastTrackerCheckedForEdits = playerCreativeTracker; this._lastCheckedVersionForEdits = -1; } int lastEditId = playerCreativeTracker.ItemSacrifices.LastEditId; if (this._lastCheckedVersionForEdits != lastEditId) { this._lastCheckedVersionForEdits = lastEditId; this.UpdateContents(); } if (this._showSacrificesInsteadOfInfinites) this.Append(this._containerSacrifice); else this.Append(this._containerInfinites); this.UpdateSacrificeAnimation(); } private void filtersHelper_OnClickingOption() => this.UpdateContents(); private void UpdateContents() { this._itemIdsAvailableTotal.Clear(); CreativeItemSacrificesCatalog.Instance.FillListOfItemsThatCanBeObtainedInfinitely(this._itemIdsAvailableTotal); this._itemIdsAvailableToShow.Clear(); this._itemIdsAvailableToShow.AddRange(this._itemIdsAvailableTotal.Where((Func) (x => this._filterer.FitsFilter(ContentSamples.ItemsByType[x])))); this._itemIdsAvailableToShow.Sort((IComparer) this._sorter); this._itemGrid.SetContentsToShow(this._itemIdsAvailableToShow); } private void AddSearchBar(UIElement searchArea) { UIImageButton uiImageButton1 = new UIImageButton(Main.Assets.Request("Images/UI/Bestiary/Button_Search", (AssetRequestMode) 1)); uiImageButton1.VAlign = 0.5f; uiImageButton1.HAlign = 0.0f; UIImageButton uiImageButton2 = uiImageButton1; uiImageButton2.OnClick += new UIElement.MouseEvent(this.Click_SearchArea); uiImageButton2.SetHoverImage(Main.Assets.Request("Images/UI/Bestiary/Button_Search_Border", (AssetRequestMode) 1)); uiImageButton2.SetVisibility(1f, 1f); uiImageButton2.SetSnapPoint("CreativeInfinitesSearch", 0); searchArea.Append((UIElement) uiImageButton2); UIPanel uiPanel1 = new UIPanel(); uiPanel1.Width = new StyleDimension((float) (-(double) uiImageButton2.Width.Pixels - 3.0), 1f); uiPanel1.Height = new StyleDimension(0.0f, 1f); uiPanel1.VAlign = 0.5f; uiPanel1.HAlign = 1f; UIPanel uiPanel2 = uiPanel1; this._searchBoxPanel = uiPanel2; uiPanel2.BackgroundColor = new Color(35, 40, 83); uiPanel2.BorderColor = new Color(35, 40, 83); uiPanel2.SetPadding(0.0f); searchArea.Append((UIElement) uiPanel2); UISearchBar uiSearchBar1 = new UISearchBar(Language.GetText("UI.PlayerNameSlot"), 0.8f); uiSearchBar1.Width = new StyleDimension(0.0f, 1f); uiSearchBar1.Height = new StyleDimension(0.0f, 1f); uiSearchBar1.HAlign = 0.0f; uiSearchBar1.VAlign = 0.5f; uiSearchBar1.Left = new StyleDimension(0.0f, 0.0f); uiSearchBar1.IgnoresMouseInteraction = true; UISearchBar uiSearchBar2 = uiSearchBar1; this._searchBar = uiSearchBar2; uiPanel2.OnClick += new UIElement.MouseEvent(this.Click_SearchArea); uiSearchBar2.OnContentsChanged += new Action(this.OnSearchContentsChanged); uiPanel2.Append((UIElement) uiSearchBar2); uiSearchBar2.OnStartTakingInput += new Action(this.OnStartTakingInput); uiSearchBar2.OnEndTakingInput += new Action(this.OnEndTakingInput); uiSearchBar2.OnNeedingVirtualKeyboard += new Action(this.OpenVirtualKeyboardWhenNeeded); uiSearchBar2.OnCancledTakingInput += new Action(this.OnCancledInput); } private void OnCancledInput() => Main.LocalPlayer.ToggleInv(); private void Click_SearchArea(UIMouseEvent evt, UIElement listeningElement) => this._searchBar.ToggleTakingText(); private void OnSearchContentsChanged(string contents) { this._searchString = contents; this._filterer.SetSearchFilter(contents); this.UpdateContents(); } private void OnStartTakingInput() => this._searchBoxPanel.BorderColor = Main.OurFavoriteColor; private void OnEndTakingInput() => this._searchBoxPanel.BorderColor = new Color(35, 40, 83); private void OpenVirtualKeyboardWhenNeeded() { int length = 40; UIVirtualKeyboard uiVirtualKeyboard = new UIVirtualKeyboard(Language.GetText("UI.PlayerNameSlot").Value, this._searchString, new UIVirtualKeyboard.KeyboardSubmitEvent(this.OnFinishedSettingName), new Action(this.GoBackHere), 3, true); uiVirtualKeyboard.SetMaxInputLength(length); IngameFancyUI.OpenUIState((UIState) uiVirtualKeyboard); } private static UserInterface GetCurrentInterface() { UserInterface activeInstance = UserInterface.ActiveInstance; return !Main.gameMenu ? Main.InGameUI : Main.MenuUI; } private void OnFinishedSettingName(string name) { this._searchBar.SetContents(name.Trim()); this.GoBackHere(); } private void GoBackHere() { IngameFancyUI.Close(); this._searchBar.ToggleTakingText(); Main.CreativeMenu.GamepadMoveToSearchButtonHack = true; } public int GetItemsPerLine() => this._itemGrid.GetItemsPerLine(); public enum InfiniteItemsDisplayPage { InfiniteItemsPickup, InfiniteItemsResearch, } } }