コード例 #1
0
        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);
            }
        }
コード例 #2
0
ファイル: UISlot.cs プロジェクト: naiyou2333/TemplateMod
        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);
                }
            }
        }
コード例 #3
0
ファイル: UISlot.cs プロジェクト: naiyou2333/TemplateMod
 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);
 }
コード例 #4
0
		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);
			}
		}