using System; using System.Collections.Generic; using System.Linq; using System.Text; using Terraria; namespace TShockAPI { /// /// Represents an item. /// public struct NetItem { /// /// The number of armor slots. /// public static readonly int ArmorSlots = 16; /// /// The number of dye slots. /// public static readonly int DyeSlots = 8; /// /// The inventory size. /// public static readonly int MaxInventory = 83; private readonly int _netId; private readonly byte _prefixId; private readonly int _stack; /// /// Gets the net ID. /// public int NetId { get { return _netId; } } /// /// Gets the prefix. /// public byte PrefixId { get { return _prefixId; } } /// /// Gets the stack. /// public int Stack { get { return _stack; } } /// /// Creates a new . /// /// The net ID. /// The stack. /// The prefix ID. public NetItem(int netId, int stack, byte prefixId) { _netId = netId; _stack = stack; _prefixId = prefixId; } /// /// Converts the to a string. /// /// public override string ToString() { return String.Format("{0},{1},{2}", _netId, _stack, _prefixId); } /// /// Converts a string into a . /// /// The string. /// /// /// public static NetItem Parse(string str) { if (str == null) throw new ArgumentNullException("str"); string[] comp = str.Split(','); if (comp.Length != 3) throw new FormatException("String does not contain three sections."); int netId = Int32.Parse(comp[0]); int stack = Int32.Parse(comp[1]); byte prefixId = Byte.Parse(comp[2]); return new NetItem(netId, stack, prefixId); } /// /// Converts an into a . /// /// The . /// public static explicit operator NetItem(Item item) { return item == null ? new NetItem() : new NetItem(item.netID, item.stack, item.prefix); } } }