// Decompiled with JetBrains decompiler // Type: Terraria.GameContent.UI.Elements.UIBestiaryInfoItemLine // 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.Collections.Generic; using Terraria.Audio; using Terraria.GameContent.Bestiary; using Terraria.GameContent.ItemDropRules; using Terraria.ID; using Terraria.UI; namespace Terraria.GameContent.UI.Elements { public class UIBestiaryInfoItemLine : UIPanel, IManuallyOrderedUIElement { private Item _infoDisplayItem; private bool _hideMouseOver; public int OrderInUIList { get; set; } public UIBestiaryInfoItemLine( DropRateInfo info, BestiaryUICollectionInfo uiinfo, float textScale = 1f) { this._infoDisplayItem = new Item(); this._infoDisplayItem.SetDefaults(info.itemId); this.SetBestiaryNotesOnItemCache(info); this.SetPadding(0.0f); this.PaddingLeft = 10f; this.PaddingRight = 10f; this.Width.Set(-14f, 1f); this.Height.Set(32f, 0.0f); this.Left.Set(5f, 0.0f); this.OnMouseOver += new UIElement.MouseEvent(this.MouseOver); this.OnMouseOut += new UIElement.MouseEvent(this.MouseOut); this.BorderColor = new Color(89, 116, 213, (int) byte.MaxValue); string stackRange; string droprate; this.GetDropInfo(info, uiinfo, out stackRange, out droprate); if (uiinfo.UnlockState < BestiaryEntryUnlockState.CanShowDropsWithoutDropRates_3) { this._hideMouseOver = true; Asset texture = Main.Assets.Request("Images/UI/Bestiary/Icon_Locked", (AssetRequestMode) 1); UIElement element = new UIElement() { Height = new StyleDimension(0.0f, 1f), Width = new StyleDimension(0.0f, 1f), HAlign = 0.5f, VAlign = 0.5f }; element.SetPadding(0.0f); UIImage uiImage1 = new UIImage(texture); uiImage1.ImageScale = 0.55f; uiImage1.HAlign = 0.5f; uiImage1.VAlign = 0.5f; UIImage uiImage2 = uiImage1; element.Append((UIElement) uiImage2); this.Append(element); } else { UIItemIcon uiItemIcon = new UIItemIcon(this._infoDisplayItem, uiinfo.UnlockState < BestiaryEntryUnlockState.CanShowDropsWithoutDropRates_3); uiItemIcon.IgnoresMouseInteraction = true; uiItemIcon.HAlign = 0.0f; uiItemIcon.Left = new StyleDimension(4f, 0.0f); this.Append((UIElement) uiItemIcon); if (!string.IsNullOrEmpty(stackRange)) droprate = stackRange + " " + droprate; UITextPanel uiTextPanel = new UITextPanel(droprate, textScale); uiTextPanel.IgnoresMouseInteraction = true; uiTextPanel.DrawPanel = false; uiTextPanel.HAlign = 1f; uiTextPanel.Top = new StyleDimension(-4f, 0.0f); this.Append((UIElement) uiTextPanel); } } protected void GetDropInfo( DropRateInfo dropRateInfo, BestiaryUICollectionInfo uiinfo, out string stackRange, out string droprate) { stackRange = dropRateInfo.stackMin == dropRateInfo.stackMax ? (dropRateInfo.stackMin != 1 ? " (" + (object) dropRateInfo.stackMin + ")" : "") : string.Format(" ({0}-{1})", (object) dropRateInfo.stackMin, (object) dropRateInfo.stackMax); string originalFormat = "P"; if ((double) dropRateInfo.dropRate < 0.001) originalFormat = "P4"; droprate = (double) dropRateInfo.dropRate == 1.0 ? "100%" : Utils.PrettifyPercentDisplay(dropRateInfo.dropRate, originalFormat); if (uiinfo.UnlockState == BestiaryEntryUnlockState.CanShowDropsWithDropRates_4) return; droprate = "???"; stackRange = ""; } protected override void DrawSelf(SpriteBatch spriteBatch) { base.DrawSelf(spriteBatch); if (!this.IsMouseHovering || this._hideMouseOver) return; this.DrawMouseOver(); } private void DrawMouseOver() { Main.HoverItem = this._infoDisplayItem; Main.instance.MouseText(""); Main.mouseText = true; } public override int CompareTo(object obj) => obj is IManuallyOrderedUIElement orderedUiElement ? this.OrderInUIList.CompareTo(orderedUiElement.OrderInUIList) : base.CompareTo(obj); private void SetBestiaryNotesOnItemCache(DropRateInfo info) { List stringList = new List(); if (info.conditions == null) return; foreach (IProvideItemConditionDescription condition in info.conditions) { if (condition != null) { string conditionDescription = condition.GetConditionDescription(); if (!string.IsNullOrWhiteSpace(conditionDescription)) stringList.Add(conditionDescription); } } this._infoDisplayItem.BestiaryNotes = string.Join("\n", (IEnumerable) stringList); } private void MouseOver(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); this.BorderColor = Colors.FancyUIFatButtonMouseOver; } private void MouseOut(UIMouseEvent evt, UIElement listeningElement) => this.BorderColor = new Color(89, 116, 213, (int) byte.MaxValue); } }