Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
UICreativeInfiniteItemsDisplay.cs
Go to the documentation of this file.
2using System.Linq;
11using Terraria.ID;
13using Terraria.UI;
14
16
18{
24
26
28
30
32
34
36
38
39 private string _searchString;
40
42
44
46
48
50
52
53 public const string SnapPointName_SacrificeSlot = "CreativeSacrificeSlot";
54
55 public const string SnapPointName_SacrificeConfirmButton = "CreativeSacrificeConfirm";
56
57 public const string SnapPointName_InfinitesFilter = "CreativeInfinitesFilter";
58
59 public const string SnapPointName_InfinitesSearch = "CreativeInfinitesSearch";
60
61 public const string SnapPointName_InfinitesItemSlot = "CreativeInfinitesSlot";
62
64
66
68
70
72
74
76
77 private bool _researchComplete;
78
79 private bool _hovered;
80
82
84
86
87 private bool _didClickSomething;
88
89 private bool _didClickSearchBar;
90
124
125 private void BuildPage()
126 {
129 SetPadding(0f);
131 {
133 Height = StyleDimension.Fill
134 };
135 uIElement.SetPadding(0f);
138 {
140 Height = StyleDimension.Fill
141 };
142 uIElement2.SetPadding(0f);
148 }
149
151 {
152 if (_hovered)
153 {
154 Main.LocalPlayer.mouseInterface = true;
155 }
156 }
157
159 {
160 _hovered = false;
161 }
162
164 {
165 _hovered = true;
166 }
167
168 private static UIPanel CreateBasicPanel()
169 {
170 UIPanel uIPanel = new UIPanel();
172 uIPanel.BackgroundColor *= 0.8f;
173 uIPanel.BorderColor *= 0.8f;
174 return uIPanel;
175 }
176
178 {
179 element.Width = new StyleDimension(0f, 1f);
180 element.Height = new StyleDimension(-38f, 1f);
181 element.Top = new StyleDimension(38f, 0f);
182 }
183
185 {
187 totalContainer.Append(uIPanel);
188 uIPanel.OnUpdate += Hover_OnUpdate;
189 uIPanel.OnMouseOver += Hover_OnMouseOver;
190 uIPanel.OnMouseOut += Hover_OnMouseOut;
193 {
194 Height = new StyleDimension(24f, 0f),
195 Width = new StyleDimension(0f, 1f)
196 };
197 uIElement.SetPadding(0f);
198 uIPanel.Append(uIElement);
200 _searchBar.SetContents(null, forced: true);
201 UIList uIList = new UIList
202 {
203 Width = new StyleDimension(-25f, 1f),
204 Height = new StyleDimension(-28f, 1f),
205 VAlign = 1f,
206 HAlign = 0f
207 };
208 uIPanel.Append(uIList);
209 float num = 4f;
211 {
212 Height = new StyleDimension(-28f - num * 2f, 1f),
213 Top = new StyleDimension(0f - num, 0f),
214 VAlign = 1f,
215 HAlign = 1f
216 };
217 uIPanel.Append(uIScrollbar);
218 uIList.SetScrollbar(uIScrollbar);
219 uIList.Add(item);
221 uICreativeItemsInfiniteFilteringOptions.OnClickingOption += filtersHelper_OnClickingOption;
222 uICreativeItemsInfiniteFilteringOptions.Left = new StyleDimension(20f, 0f);
224 uICreativeItemsInfiniteFilteringOptions.OnUpdate += Hover_OnUpdate;
225 uICreativeItemsInfiniteFilteringOptions.OnMouseOver += Hover_OnMouseOver;
226 uICreativeItemsInfiniteFilteringOptions.OnMouseOut += Hover_OnMouseOut;
227 }
228
230 {
232 uIPanel.VAlign = 0.5f;
233 uIPanel.Height = new StyleDimension(170f, 0f);
234 uIPanel.Width = new StyleDimension(170f, 0f);
235 uIPanel.Top = default(StyleDimension);
236 totalContainer.Append(uIPanel);
237 uIPanel.OnUpdate += Hover_OnUpdate;
238 uIPanel.OnMouseOver += Hover_OnMouseOver;
239 uIPanel.OnMouseOut += Hover_OnMouseOut;
241 _pistonParticleAsset = Main.Assets.Request<Texture2D>("Images/UI/Creative/Research_Spark", (AssetRequestMode)1);
242 float pixels = 0f;
243 UIImage uIImage = new UIImage(Main.Assets.Request<Texture2D>("Images/UI/Creative/Research_Slots", (AssetRequestMode)1))
244 {
245 HAlign = 0.5f,
246 VAlign = 0.5f,
247 Top = new StyleDimension(-20f, 0f),
248 Left = new StyleDimension(pixels, 0f)
249 };
250 uIPanel.Append(uIImage);
251 Asset<Texture2D> obj = Main.Assets.Request<Texture2D>("Images/UI/Creative/Research_FramedPistons", (AssetRequestMode)1);
252 UIImageFramed uIImageFramed = new UIImageFramed(obj, obj.Frame(1, 9))
253 {
254 HAlign = 0.5f,
255 VAlign = 0.5f,
256 Top = new StyleDimension(-20f, 0f),
257 Left = new StyleDimension(pixels, 0f),
259 };
260 uIPanel.Append(uIImageFramed);
263 {
264 Width = new StyleDimension(0f, 1f),
265 Height = new StyleDimension(0f, 1f),
266 AnchorPositionOffsetByPercents = Vector2.One / 2f,
267 AnchorPositionOffsetByPixels = Vector2.Zero
268 };
271 UIElement uIElement = Main.CreativeMenu.ProvideItemSlotElement(0);
272 uIElement.HAlign = 0.5f;
273 uIElement.VAlign = 0.5f;
274 uIElement.Top = new StyleDimension(-15f, 0f);
275 uIElement.Left = new StyleDimension(pixels, 0f);
276 uIElement.SetSnapPoint("CreativeSacrificeSlot", 0);
277 uIImage.Append(uIElement);
278 UIText uIText = new UIText("(0/50)", 0.8f)
279 {
280 Top = new StyleDimension(10f, 0f),
281 Left = new StyleDimension(pixels, 0f),
282 HAlign = 0.5f,
283 VAlign = 0.5f,
285 };
286 uIText.OnUpdate += descriptionText_OnUpdate;
287 uIPanel.Append(uIText);
289 {
290 Top = new StyleDimension(0f, 0f),
291 Left = new StyleDimension(pixels, 0f),
292 HAlign = 0.5f,
293 VAlign = 1f,
294 Width = new StyleDimension(124f, 0f),
295 Height = new StyleDimension(30f, 0f)
296 };
297 UIText element = new UIText(Language.GetText("CreativePowers.ConfirmInfiniteItemSacrifice"), 0.8f)
298 {
300 HAlign = 0.5f,
301 VAlign = 0.5f
302 };
303 uIPanel2.Append(element);
304 uIPanel2.SetSnapPoint("CreativeSacrificeConfirm", 0);
305 uIPanel2.OnLeftClick += sacrificeButton_OnClick;
306 uIPanel2.OnMouseOver += FadedMouseOver;
307 uIPanel2.OnMouseOut += FadedMouseOut;
308 uIPanel2.OnUpdate += research_OnUpdate;
309 uIPanel.Append(uIPanel2);
310 uIPanel.OnUpdate += sacrificeWindow_OnUpdate;
311 }
312
314 {
315 if (affectedElement.IsMouseHovering)
316 {
317 Main.instance.MouseText(Language.GetTextValue("CreativePowers.ResearchButtonTooltip"), 0, 0);
318 }
319 }
320
322 {
324 ((UIPanel)evt.Target).BackgroundColor = new Color(73, 94, 171);
325 ((UIPanel)evt.Target).BorderColor = Colors.FancyUIFatButtonMouseOver;
326 }
327
329 {
330 ((UIPanel)evt.Target).BackgroundColor = new Color(63, 82, 151) * 0.8f;
331 ((UIPanel)evt.Target).BorderColor = Color.Black;
332 }
333
335 {
337 uIElement.IgnoresMouseInteraction = true;
339 uIElement.VAlign = 0.5f;
340 uIElement.Height = new StyleDimension(170f, 0f);
341 uIElement.Width = new StyleDimension(280f, 0f);
342 uIElement.Top = default(StyleDimension);
343 uIElement.SetPadding(0f);
345 Vector2 vector = new Vector2(-10f, -10f);
346 AddSymetricalCogsPair(uIElement, new Vector2(22f, 1f) + vector, "Images/UI/Creative/Research_GearC", _sacrificeCogsSmall);
347 AddSymetricalCogsPair(uIElement, new Vector2(1f, 28f) + vector, "Images/UI/Creative/Research_GearB", _sacrificeCogsMedium);
348 AddSymetricalCogsPair(uIElement, new Vector2(5f, 5f) + vector, "Images/UI/Creative/Research_GearA", _sacrificeCogsBig);
349 }
350
355
356 private void UpdateVisualFrame()
357 {
358 float num = 0.05f;
361 float num2 = lerpValue * lerpValue;
362 num2 *= 2f;
363 float num3 = 1f + num2;
364 num *= num3;
365 float num4 = 1.1428572f;
366 float num5 = 1f;
370 int frameY = 0;
372 {
373 float num6 = 0.1f;
374 float num7 = 1f / 15f;
375 frameY = ((sacrificeAnimationProgress >= 1f - num6) ? 8 : ((sacrificeAnimationProgress >= 1f - num6 * 2f) ? 7 : ((sacrificeAnimationProgress >= 1f - num6 * 3f) ? 6 : ((sacrificeAnimationProgress >= num7 * 4f) ? 5 : ((sacrificeAnimationProgress >= num7 * 3f) ? 4 : ((sacrificeAnimationProgress >= num7 * 2f) ? 3 : ((!(sacrificeAnimationProgress >= num7)) ? 1 : 2)))))));
377 {
379 Vector2 accelerationPerFrame = new Vector2(0f, 0.16350001f);
380 for (int i = 0; i < 15; i++)
381 {
382 Vector2 initialVelocity = Main.rand.NextVector2Circular(4f, 3f);
383 if (initialVelocity.Y > 0f)
384 {
385 initialVelocity.Y = 0f - initialVelocity.Y;
386 }
387 initialVelocity.Y -= 2f;
389 {
390 AccelerationPerFrame = accelerationPerFrame,
391 ScaleOffsetPerFrame = -1f / 60f
392 });
393 }
394 }
396 {
397 _researchComplete = false;
399 }
400 }
401 _sacrificePistons.SetFrame(1, 9, 0, frameY, 0, 0);
402 }
403
405 {
406 cogsList[0].Rotation += rotationOffset;
407 cogsList[1].Rotation -= rotationOffset;
408 }
409
411 {
413 cogOFfsetsInPixels += -val.Size() / 2f;
414 UIImage uIImage = new UIImage(val)
415 {
416 NormalizedOrigin = Vector2.One / 2f,
419 };
422 uIImage = new UIImage(val)
423 {
424 NormalizedOrigin = Vector2.One / 2f,
425 HAlign = 1f,
426 Left = new StyleDimension(0f - cogOFfsetsInPixels.X, 0f),
428 };
431 }
432
434 {
436 int itemIdChecked;
437 int amountWeHave;
440 Main.CreativeMenu.ShouldDrawSacrificeArea();
441 if (!Main.mouseItem.IsAir)
442 {
444 }
445 if (itemIdChecked == 0)
446 {
448 {
449 uIText.SetText($"({_lastItemAmountWeHad}/{_lastItemAmountWeNeededTotal})");
450 }
451 else
452 {
453 uIText.SetText("???");
454 }
455 return;
456 }
458 if (!sacrificeNumbers)
459 {
460 uIText.SetText("X");
461 }
462 else
463 {
464 uIText.SetText($"({amountWeHave}/{amountNeededTotal})");
465 }
466 }
467
472
491
499
506
513
515 {
517 }
518
520 {
522 {
524 }
525 }
526
528 {
530 }
531
536
562
564 {
566 }
567
577
579 {
580 UIImageButton uIImageButton = new UIImageButton(Main.Assets.Request<Texture2D>("Images/UI/Bestiary/Button_Search", (AssetRequestMode)1))
581 {
582 VAlign = 0.5f,
583 HAlign = 0f
584 };
585 uIImageButton.OnLeftClick += Click_SearchArea;
586 uIImageButton.SetHoverImage(Main.Assets.Request<Texture2D>("Images/UI/Bestiary/Button_Search_Border", (AssetRequestMode)1));
587 uIImageButton.SetVisibility(1f, 1f);
588 uIImageButton.SetSnapPoint("CreativeInfinitesSearch", 0);
591 {
592 Width = new StyleDimension(0f - uIImageButton.Width.Pixels - 3f, 1f),
593 Height = new StyleDimension(0f, 1f),
594 VAlign = 0.5f,
595 HAlign = 1f
596 });
597 uIPanel.BackgroundColor = new Color(35, 40, 83);
598 uIPanel.BorderColor = new Color(35, 40, 83);
599 uIPanel.SetPadding(0f);
600 searchArea.Append(uIPanel);
601 UISearchBar uISearchBar = (_searchBar = new UISearchBar(Language.GetText("UI.PlayerNameSlot"), 0.8f)
602 {
603 Width = new StyleDimension(0f, 1f),
604 Height = new StyleDimension(0f, 1f),
605 HAlign = 0f,
606 VAlign = 0.5f,
607 Left = new StyleDimension(0f, 0f),
609 });
610 uIPanel.OnLeftClick += Click_SearchArea;
611 uISearchBar.OnContentsChanged += OnSearchContentsChanged;
612 uIPanel.Append(uISearchBar);
613 uISearchBar.OnStartTakingInput += OnStartTakingInput;
614 uISearchBar.OnEndTakingInput += OnEndTakingInput;
615 uISearchBar.OnNeedingVirtualKeyboard += OpenVirtualKeyboardWhenNeeded;
616 uISearchBar.OnCanceledTakingInput += OnCanceledInput;
617 UIImageButton uIImageButton2 = new UIImageButton(Main.Assets.Request<Texture2D>("Images/UI/SearchCancel", (AssetRequestMode)1))
618 {
619 HAlign = 1f,
620 VAlign = 0.5f,
621 Left = new StyleDimension(-2f, 0f)
622 };
623 uIImageButton2.OnMouseOver += searchCancelButton_OnMouseOver;
624 uIImageButton2.OnLeftClick += searchCancelButton_OnClick;
625 uIPanel.Append(uIImageButton2);
626 }
627
629 {
631 {
632 _searchBar.SetContents(null, forced: true);
634 }
635 else
636 {
638 }
639 }
640
645
646 private void OnCanceledInput()
647 {
648 Main.LocalPlayer.ToggleInv();
649 }
650
652 {
653 if (evt.Target.Parent != _searchBoxPanel)
654 {
656 _didClickSearchBar = true;
657 }
658 }
659
660 public override void LeftClick(UIMouseEvent evt)
661 {
662 base.LeftClick(evt);
664 }
665
666 public override void RightClick(UIMouseEvent evt)
667 {
668 base.RightClick(evt);
670 }
671
676
677 public override void Update(GameTime gameTime)
678 {
679 base.Update(gameTime);
681 {
683 }
684 _didClickSomething = false;
685 _didClickSearchBar = false;
686 }
687
688 private void OnSearchContentsChanged(string contents)
689 {
690 _searchString = contents;
691 _filterer.SetSearchFilter(contents);
693 }
694
695 private void OnStartTakingInput()
696 {
697 _searchBoxPanel.BorderColor = Main.OurFavoriteColor;
698 }
699
700 private void OnEndTakingInput()
701 {
702 _searchBoxPanel.BorderColor = new Color(35, 40, 83);
703 }
704
706 {
707 int maxInputLength = 40;
709 uIVirtualKeyboard.SetMaxInputLength(maxInputLength);
710 uIVirtualKeyboard.CustomEscapeAttempt = EscapeVirtualKeyboard;
712 }
713
715 {
717 Main.playerInventory = true;
719 {
721 }
722 Main.CreativeMenu.ToggleMenu();
723 return true;
724 }
725
727 {
729 if (Main.gameMenu)
730 {
731 return Main.MenuUI;
732 }
733 return Main.InGameUI;
734 }
735
736 private void OnFinishedSettingName(string name)
737 {
738 string contents = name.Trim();
739 _searchBar.SetContents(contents);
740 GoBackHere();
741 }
742
743 private void GoBackHere()
744 {
746 Main.CreativeMenu.ToggleMenu();
748 Main.CreativeMenu.GamepadMoveToSearchButtonHack = true;
749 }
750
751 public int GetItemsPerLine()
752 {
753 return _itemGrid.GetItemsPerLine();
754 }
755}
void AddRange(IEnumerable< KeyValuePair< TKey, TValue > > collection)
void Add(TKey key, TValue value)
void AddRange(IEnumerable< T > collection)
Definition List.cs:275
static void PlaySound(int type, Vector2 position, int style=1)
void AddSortSteps(List< TStepType > sortSteps)
void RememberItemSacrifice(int itemId, int amountWeHave, int amountWeNeedTotal)
void searchCancelButton_OnClick(UIMouseEvent evt, UIElement listeningElement)
void Hover_OnMouseOver(UIMouseEvent evt, UIElement listeningElement)
void sacrificeButton_OnClick(UIMouseEvent evt, UIElement listeningElement)
void searchCancelButton_OnMouseOver(UIMouseEvent evt, UIElement listeningElement)
void Hover_OnMouseOut(UIMouseEvent evt, UIElement listeningElement)
void AddSymetricalCogsPair(UIElement sacrificesContainer, Vector2 cogOFfsetsInPixels, string assetPath, List< UIImage > imagesList)
void Click_SearchArea(UIMouseEvent evt, UIElement listeningElement)
static void OffsetRotationsForCogs(float rotationOffset, List< UIImage > cogsList)
void SetContents(string contents, bool forced=false)
static readonly Color FancyUIFatButtonMouseOver
Definition Colors.cs:91
static Dictionary< int, Item > ItemsByType
static LocalizedText GetText(string key)
Definition Language.cs:10
static string GetTextValue(string key)
Definition Language.cs:15
static CreativeUnlocksTracker LocalPlayerCreativeTracker
Definition Main.cs:2831
static UserInterface InGameUI
Definition Main.cs:383
static UserInterface MenuUI
Definition Main.cs:381
static CreativeUI CreativeMenu
Definition Main.cs:369
static Main instance
Definition Main.cs:283
static Item mouseItem
Definition Main.cs:1773
static Microsoft.Xna.Framework.Color OurFavoriteColor
Definition Main.cs:902
static UnifiedRandom rand
Definition Main.cs:1387
static IAssetRepository Assets
Definition Main.cs:209
static bool gameMenu
Definition Main.cs:1926
static Player LocalPlayer
Definition Main.cs:2829
static void OpenUIState(UIState uiState)
StyleDimension Height
Definition UIElement.cs:29
void Append(UIElement element)
Definition UIElement.cs:166
StyleDimension Left
Definition UIElement.cs:25
StyleDimension Width
Definition UIElement.cs:27
void SetPadding(float pixels)
Definition UIElement.cs:361
StyleDimension Top
Definition UIElement.cs:23
static UserInterface ActiveInstance
static float GetLerpValue(float from, float to, float t, bool clamped=false)
Definition Utils.cs:203
static StyleDimension Fill