terraria-source-code/GameContent/Creative/ItemFilters.cs
2021-10-26 12:45:26 -04:00

179 lines
6.8 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Terraria.GameContent.Creative.ItemFilters
// 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.Graphics;
using ReLogic.Content;
using System;
using Terraria.DataStructures;
using Terraria.GameContent.UI.Elements;
using Terraria.ID;
using Terraria.UI;
namespace Terraria.GameContent.Creative
{
public static class ItemFilters
{
private const int framesPerRow = 9;
private const int framesPerColumn = 1;
private const int frameSizeOffsetX = -2;
private const int frameSizeOffsetY = 0;
public class BySearch : IItemEntryFilter, IEntryFilter<Item>, ISearchFilter<Item>
{
private const int _tooltipMaxLines = 30;
private string[] _toolTipLines = new string[30];
private bool[] _unusedPrefixLine = new bool[30];
private bool[] _unusedBadPrefixLines = new bool[30];
private int _unusedYoyoLogo;
private int _unusedResearchLine;
private string _search;
public bool FitsFilter(Item entry)
{
if (this._search == null)
return true;
int numLines = 1;
float knockBack = entry.knockBack;
Main.MouseText_DrawItemTooltip_GetLinesInfo(entry, ref this._unusedYoyoLogo, ref this._unusedResearchLine, knockBack, ref numLines, this._toolTipLines, this._unusedPrefixLine, this._unusedBadPrefixLines);
for (int index = 0; index < numLines; ++index)
{
if (this._toolTipLines[index].ToLower().IndexOf(this._search, StringComparison.OrdinalIgnoreCase) != -1)
return true;
}
return false;
}
public string GetDisplayNameKey() => "CreativePowers.TabSearch";
public UIElement GetImage()
{
Asset<Texture2D> asset = Main.Assets.Request<Texture2D>("Images/UI/Bestiary/Icon_Rank_Light", (AssetRequestMode) 1);
UIImageFramed uiImageFramed = new UIImageFramed(asset, asset.Frame());
uiImageFramed.HAlign = 0.5f;
uiImageFramed.VAlign = 0.5f;
return (UIElement) uiImageFramed;
}
public void SetSearch(string searchText) => this._search = searchText;
}
public class BuildingBlock : IItemEntryFilter, IEntryFilter<Item>
{
public bool FitsFilter(Item entry) => entry.createTile != -1 || entry.createWall != -1 || entry.tileWand != -1;
public string GetDisplayNameKey() => "CreativePowers.TabBlocks";
public UIElement GetImage()
{
Asset<Texture2D> asset = Main.Assets.Request<Texture2D>("Images/UI/Creative/Infinite_Icons", (AssetRequestMode) 1);
UIImageFramed uiImageFramed = new UIImageFramed(asset, asset.Frame(9, frameX: 4).OffsetSize(-2, 0));
uiImageFramed.HAlign = 0.5f;
uiImageFramed.VAlign = 0.5f;
return (UIElement) uiImageFramed;
}
}
public class Weapon : IItemEntryFilter, IEntryFilter<Item>
{
public bool FitsFilter(Item entry) => entry.damage > 0;
public string GetDisplayNameKey() => "CreativePowers.TabWeapons";
public UIElement GetImage()
{
Asset<Texture2D> asset = Main.Assets.Request<Texture2D>("Images/UI/Creative/Infinite_Icons", (AssetRequestMode) 1);
UIImageFramed uiImageFramed = new UIImageFramed(asset, asset.Frame(9).OffsetSize(-2, 0));
uiImageFramed.HAlign = 0.5f;
uiImageFramed.VAlign = 0.5f;
return (UIElement) uiImageFramed;
}
}
public class Armor : IItemEntryFilter, IEntryFilter<Item>
{
public bool FitsFilter(Item entry) => entry.bodySlot != -1 || entry.headSlot != -1 || entry.legSlot != -1;
public string GetDisplayNameKey() => "CreativePowers.TabArmor";
public UIElement GetImage()
{
Asset<Texture2D> asset = Main.Assets.Request<Texture2D>("Images/UI/Creative/Infinite_Icons", (AssetRequestMode) 1);
UIImageFramed uiImageFramed = new UIImageFramed(asset, asset.Frame(9, frameX: 2).OffsetSize(-2, 0));
uiImageFramed.HAlign = 0.5f;
uiImageFramed.VAlign = 0.5f;
return (UIElement) uiImageFramed;
}
}
public class Accessories : IItemEntryFilter, IEntryFilter<Item>
{
public bool FitsFilter(Item entry) => entry.accessory;
public string GetDisplayNameKey() => "CreativePowers.TabAccessories";
public UIElement GetImage()
{
Asset<Texture2D> asset = Main.Assets.Request<Texture2D>("Images/UI/Creative/Infinite_Icons", (AssetRequestMode) 1);
UIImageFramed uiImageFramed = new UIImageFramed(asset, asset.Frame(9, frameX: 1).OffsetSize(-2, 0));
uiImageFramed.HAlign = 0.5f;
uiImageFramed.VAlign = 0.5f;
return (UIElement) uiImageFramed;
}
}
public class Consumables : IItemEntryFilter, IEntryFilter<Item>
{
public bool FitsFilter(Item entry)
{
bool flag = entry.createTile != -1 || entry.createWall != -1 || entry.tileWand != -1;
return entry.consumable && !flag;
}
public string GetDisplayNameKey() => "CreativePowers.TabConsumables";
public UIElement GetImage()
{
Asset<Texture2D> asset = Main.Assets.Request<Texture2D>("Images/UI/Creative/Infinite_Icons", (AssetRequestMode) 1);
UIImageFramed uiImageFramed = new UIImageFramed(asset, asset.Frame(9, frameX: 3).OffsetSize(-2, 0));
uiImageFramed.HAlign = 0.5f;
uiImageFramed.VAlign = 0.5f;
return (UIElement) uiImageFramed;
}
}
public class GameplayItems : IItemEntryFilter, IEntryFilter<Item>
{
public bool FitsFilter(Item entry) => ItemID.Sets.SortingPriorityBossSpawns[entry.type] != -1;
public string GetDisplayNameKey() => "CreativePowers.TabMisc";
public UIElement GetImage()
{
Asset<Texture2D> asset = Main.Assets.Request<Texture2D>("Images/UI/Creative/Infinite_Icons", (AssetRequestMode) 1);
UIImageFramed uiImageFramed = new UIImageFramed(asset, asset.Frame(9, frameX: 5).OffsetSize(-2, 0));
uiImageFramed.HAlign = 0.5f;
uiImageFramed.VAlign = 0.5f;
return (UIElement) uiImageFramed;
}
}
public class Materials : IItemEntryFilter, IEntryFilter<Item>
{
public bool FitsFilter(Item entry) => entry.material;
public string GetDisplayNameKey() => "CreativePowers.TabMaterials";
public UIElement GetImage()
{
Asset<Texture2D> asset = Main.Assets.Request<Texture2D>("Images/UI/Creative/Infinite_Icons", (AssetRequestMode) 1);
UIImageFramed uiImageFramed = new UIImageFramed(asset, asset.Frame(9, frameX: 6).OffsetSize(-2, 0));
uiImageFramed.HAlign = 0.5f;
uiImageFramed.VAlign = 0.5f;
return (UIElement) uiImageFramed;
}
}
}
}