Esempio n. 1
0
        public override bool AutoSelect(int i, int j, Item item)
        {
            int ID = mod.GetID <TEBarrel>(i, j);

            if (ID != -1)
            {
                TEBarrel barrel = (TEBarrel)TileEntity.ByID[ID];
                return(item.type == barrel.Items[0].type);
            }
            return(false);
        }
Esempio n. 2
0
        public override void LeftClick(int i, int j)
        {
            int ID = mod.GetID <TEBarrel>(i, j);

            if (ID == -1)
            {
                return;
            }

            Main.LocalPlayer.noThrow = 2;

            TEBarrel barrel = (TEBarrel)TileEntity.ByID[ID];

            if (!barrel.Items[0].IsAir)
            {
                if (Main.keyState.IsKeyDown(Keys.RightShift))
                {
                    int count = Math.Min(barrel.Items[0].stack, barrel.Items[0].maxStack);
                    Item.NewItem(barrel.Position.ToVector2() * 16, new Vector2(32), barrel.Items[0].type, count);
                    barrel.Items[0].stack -= count;
                    if (barrel.Items[0].stack <= 0)
                    {
                        barrel.Items[0].TurnToAir();
                    }
                }
                else
                {
                    Item.NewItem(barrel.Position.ToVector2() * 16, new Vector2(32), barrel.Items[0].type);
                    barrel.Items[0].stack--;
                    if (barrel.Items[0].stack <= 0)
                    {
                        barrel.Items[0].TurnToAir();
                    }
                }

                barrel.SendUpdate();
            }
        }
Esempio n. 3
0
 public void SetTileEntity(ModTileEntity tileEntity) => barrel = (TEBarrel)tileEntity;
Esempio n. 4
0
        public override void RightClick(int i, int j)
        {
            int ID = mod.GetID <TEBarrel>(i, j);

            if (ID == -1)
            {
                return;
            }

            Main.LocalPlayer.noThrow = 2;

            TEBarrel barrel = (TEBarrel)TileEntity.ByID[ID];

            if (Main.inputText.IsKeyDown(Keys.RightShift))
            {
                if (Main.LocalPlayer.HasItem(barrel.Items[0].type))
                {
                    int count = Math.Min(barrel.maxStoredItems - barrel.Items[0].stack, Main.LocalPlayer.CountItem(barrel.Items[0].type));
                    Main.LocalPlayer.ConsumeItem(barrel.Items[0].type, count);
                    barrel.Items[0].stack += count;
                }
                else
                {
                    mod.HandleUI <BarrelUI>(ID);
                }
            }
            else
            {
                Item item = Utility.HeldItem;
                if (!item.IsAir)
                {
                    if (barrel.Items[0].IsAir)
                    {
                        barrel.Items[0] = item.Clone();
                        int count = Math.Min(item.stack, barrel.maxStoredItems);
                        if (barrel.Items.Where((x, index) => index > 0 && index < barrel.Items.Count).Any(x => x.type == mod.ItemType <VoidUpgrade>()))
                        {
                            item.TurnToAir();
                        }
                        else
                        {
                            item.stack -= count;
                            if (item.stack <= 0)
                            {
                                item.TurnToAir();
                            }
                        }

                        barrel.Items[0].stack = count;
                    }
                    else
                    {
                        if (barrel.Items[0].type == item.type)
                        {
                            int count = Math.Min(item.stack, barrel.maxStoredItems - barrel.Items[0].stack);
                            if (barrel.Items.Where((x, index) => index > 0 && index < barrel.Items.Count).Any(x => x.type == mod.ItemType <VoidUpgrade>()))
                            {
                                item.TurnToAir();
                            }
                            else
                            {
                                item.stack -= count;
                                if (item.stack <= 0)
                                {
                                    item.TurnToAir();
                                }
                            }

                            barrel.Items[0].stack += count;
                        }
                    }
                }
                else
                {
                    mod.HandleUI <BarrelUI>(ID);
                }
            }

            barrel.SendUpdate();
        }
Esempio n. 5
0
        public override void SpecialDraw(int i, int j, SpriteBatch spriteBatch)
        {
            int ID = mod.GetID <TEBarrel>(i, j);

            if (ID == -1)
            {
                return;
            }

            Tile tile = Main.tile[i, j];

            if (tile.TopLeft())
            {
                TEBarrel barrel = (TEBarrel)TileEntity.ByID[ID];
                Item     item   = barrel.Items[0];

                if (!item.IsAir)
                {
                    Vector2 zero = new Vector2(Main.offScreenRange, Main.offScreenRange);
                    if (Main.drawToScreen)
                    {
                        zero = Vector2.Zero;
                    }
                    Vector2 position = new Vector2(i * 16 - (int)Main.screenPosition.X + 16, j * 16 - (int)Main.screenPosition.Y + 16) + zero;

                    Rectangle rectangle = item.GetRectangle();

                    Texture2D texture    = Main.itemTexture[item.type];
                    Color     color      = Color.White;
                    float     pulseScale = 1f;
                    ItemSlot.GetItemLight(ref color, ref pulseScale, item);
                    float scale = 1f;
                    if (rectangle.Width > 24f || rectangle.Height > 24f)
                    {
                        scale = Math.Min(24f / rectangle.Width, 24f / rectangle.Height);
                    }
                    scale *= 0.85f;
                    Vector2 itemPosition = position - rectangle.Size() * scale / 2f;
                    Vector2 origin       = rectangle.Size() * (pulseScale / 2f - 0.5f);

                    if (ItemLoader.PreDrawInInventory(item, spriteBatch, itemPosition, rectangle, item.GetAlpha(color), item.GetColor(Color.White), origin, scale * pulseScale))
                    {
                        spriteBatch.Draw(texture, itemPosition, rectangle, item.GetAlpha(color), 0f, origin, scale * pulseScale, SpriteEffects.None, 0f);
                        if (item.color != Color.Transparent)
                        {
                            spriteBatch.Draw(texture, itemPosition, rectangle, item.GetColor(Color.White), 0f, origin, scale * pulseScale, SpriteEffects.None, 0f);
                        }
                    }
                    ItemLoader.PostDrawInInventory(item, spriteBatch, itemPosition, rectangle, item.GetAlpha(color), item.GetColor(Color.White), origin, scale * pulseScale);
                    if (ItemID.Sets.TrapSigned[item.type])
                    {
                        spriteBatch.Draw(Main.wireTexture, position + new Vector2(20f, 20f) * scale, new Rectangle(4, 58, 8, 8), Color.White, 0f, new Vector2(4f), 1f, SpriteEffects.None, 0f);
                    }

                    string stack = $"{item.stack}/{barrel.maxStoredItems}";
                    if (barrel.drawInfo)
                    {
                        Utils.DrawBorderStringFourWay(spriteBatch, Main.fontMouseText, stack, position.X, position.Y - 20, Color.White, Color.Black, new Vector2(Main.fontMouseText.MeasureString(stack).X * 0.5f, Main.fontMouseText.MeasureString(stack).Y * 0.7f), 0.7f);
                    }
                    barrel.drawInfo = false;
                }
            }
        }