public ContainerContent(PacketReader reader, bool send) : base(reader, send) { reader.ReadUInt16(); ushort n = reader.ReadUInt16(); m_ContainedItems = new ContainedItem[n]; for (int i = 0; i < n; i++) { uint serial = reader.ReadUInt32(); ushort itemId = reader.ReadUInt16(); reader.ReadByte(); ushort amount = reader.ReadUInt16(); short x = reader.ReadInt16(); short y = reader.ReadInt16(); byte grid = reader.ReadByte(); uint contSerial = reader.ReadUInt32(); ushort hue = reader.ReadUInt16(); m_ContainedItems[i] = new ContainedItem(serial, itemId, amount, x, y, grid, contSerial, hue); } }
protected override void DrawSelf(SpriteBatch sb) { if (ContainsPoint(Main.MouseScreen) && ContainedItem.type != 0) { Main.hoverItemName = ContainedItem.Name; Main.HoverItem = ContainedItem.Clone(); } CalculatedStyle DrawRectangle = GetDimensions(); Drawing.DrawAdvBox(sb, (int)DrawRectangle.X, (int)DrawRectangle.Y, (int)DrawRectangle.Width, (int)DrawRectangle.Height, DrawColor * Opacity, SlotBackTexture, CornerSize, Scale); if (ContainedItem.type != 0) { var frame = Main.itemAnimations[ContainedItem.type] != null ? Main.itemAnimations[ContainedItem.type].GetFrame(Main.itemTexture[ContainedItem.type]) : Main.itemTexture[ContainedItem.type].Frame(1, 1, 0, 0); var size = frame.Size(); float texScale = 1f; if (size.X > DrawRectangle.Width || size.Y > DrawRectangle.Height) { texScale = size.X > size.Y ? size.X / DrawRectangle.Width : size.Y / DrawRectangle.Height; texScale = 0.7f / texScale; size *= texScale; } sb.Draw(Main.itemTexture[ContainedItem.type], new Vector2(DrawRectangle.X + DrawRectangle.Width / 2 - (size.X) / 2, DrawRectangle.Y + DrawRectangle.Height / 2 - (size.Y) / 2), new Rectangle?(frame), Color.White * Opacity, 0, Vector2.Zero, texScale * Scale, 0, 0); if (ContainedItem.stack > 1) { sb.DrawString(Main.fontMouseText, ContainedItem.stack.ToString(), new Vector2(DrawRectangle.X + 10, DrawRectangle.Y + DrawRectangle.Height - 20), Color.White * Opacity, 0f, Vector2.Zero, Scale, SpriteEffects.None, 0f); } } }
public override void Click(UIMouseEvent evt) { base.Click(evt); Main.playerInventory = true; if (Main.mouseItem.type == 0 && ContainedItem.type != 0) { if (CanTakeOutSlot == null || CanTakeOutSlot(ContainedItem)) { Main.mouseItem = ContainedItem.Clone(); ContainedItem = new Item(); ContainedItem.SetDefaults(0, true); OnPickItem?.Invoke(this); } } else if (Main.mouseItem.type != 0 && ContainedItem.type == 0) { if (CanPutInSlot == null || CanPutInSlot(Main.mouseItem)) { ContainedItem = Main.mouseItem.Clone(); Main.mouseItem = new Item(); Main.mouseItem.SetDefaults(0, true); } } else if (Main.mouseItem.type != 0 && ContainedItem.type != 0) { if (!(CanPutInSlot == null || CanPutInSlot(Main.mouseItem))) { return; } if (Main.mouseItem.type == ContainedItem.type) { ContainedItem.stack += Main.mouseItem.stack; if (ContainedItem.stack > ContainedItem.maxStack) { int exceed = ContainedItem.stack - ContainedItem.maxStack; ContainedItem.stack = ContainedItem.maxStack; Main.mouseItem.stack = exceed; } else { Main.mouseItem = new Item(); } } else if ((CanPutInSlot == null || CanPutInSlot(Main.mouseItem)) && (CanTakeOutSlot == null || CanTakeOutSlot(ContainedItem))) { Item tmp = Main.mouseItem.Clone(); Main.mouseItem = ContainedItem; ContainedItem = tmp; } } else { return; } Main.PlaySound(7, -1, -1, 1, 1f, 0.0f); PostExchangeItem?.Invoke(this); }
public ContainerContent( PacketReader reader, bool send ) : base( reader, send ) { reader.ReadUInt16(); ushort n = reader.ReadUInt16(); m_ContainedItems = new ContainedItem[n]; for ( int i = 0; i < n; i++ ) { uint serial = reader.ReadUInt32(); ushort itemId = reader.ReadUInt16(); reader.ReadByte(); ushort amount = reader.ReadUInt16(); short x = reader.ReadInt16(); short y = reader.ReadInt16(); byte grid = reader.ReadByte(); uint contSerial = reader.ReadUInt32(); ushort hue = reader.ReadUInt16(); m_ContainedItems[i] = new ContainedItem(serial, itemId, amount, x, y, grid, contSerial, hue); } }