Пример #1
0
        public override void use(ItemInInventory item)
        {
            base.use(item);
            MainForm instance       = MainForm.getInstance();
            Point    cursorLocation = MainForm.getInstance().getCursorBlockLocation();

            if (cursorLocation.X < instance.world.blocks.Count() && cursorLocation.Y < instance.world.blocks[5].Count())
            {
                if (instance.world.getBlockAt(cursorLocation.X, cursorLocation.Y) != null && instance.world.getBlockAt(cursorLocation.X, cursorLocation.Y).prototype.breakableBy.Equals(toolType))
                {
                    if (Util.distanceBetween(MainForm.getInstance().getCursorWorldLocation(), MainForm.getInstance().player.location) > 200)
                    {
                        return;
                    }
                    if (instance.world.getBlockAt(cursorLocation.X, cursorLocation.Y).prototype.hardness > instance.world.getBlockAt(cursorLocation.X, cursorLocation.Y).brokenness)
                    {
                        instance.world.getBlockAt(cursorLocation.X, cursorLocation.Y).brokenness += type.hardness;
                        Particle.spawnParticlesAround(Util.addPoints(instance.world.blocks[cursorLocation.X][cursorLocation.Y].location, new Point(10, 10)), instance.world.blocks[cursorLocation.X][cursorLocation.Y].prototype.color, 1);
                        return;
                    }
                    instance.player.inventory.addItem(instance.world.blocks[cursorLocation.X][cursorLocation.Y].prototype, 1);
                    bool shouldDoFullUpdate = false;
                    shouldDoFullUpdate = true;
                    instance.world.blocks[cursorLocation.X][cursorLocation.Y].prepareForRemoval();
                    DamageIndicator indicator = new DamageIndicator(instance.world.blocks[cursorLocation.X][cursorLocation.Y].location, instance.world.blocks[cursorLocation.X][cursorLocation.Y].getName());
                    //DamageIndicator indicator2 = new DamageIndicator(instance.world.blocks[cursorLocation.X][cursorLocation.Y].location, "■", Color.Brown);
                    Particle.spawnParticlesAround(Util.addPoints(instance.world.blocks[cursorLocation.X][cursorLocation.Y].location, new Point(10, 10)), instance.world.blocks[cursorLocation.X][cursorLocation.Y].prototype.color, 30);
                    instance.world.blocks[cursorLocation.X][cursorLocation.Y] = Block.createNewBlock(BlockPrototype.air, new Point(cursorLocation.X * 20, cursorLocation.Y * 20));
                    if (shouldDoFullUpdate)
                    {
                        LightingEngine.doFullLightingUpdate(false);
                    }
                    else
                    {
                        instance.world.updateSkyLightForColumn(cursorLocation.X);
                    }
                }
            }
        }
Пример #2
0
        public virtual void use(ItemInInventory item)
        {
            if (!(item.item is BlockPrototype))
            {
                throw new ArgumentException("The provided item is not a BlockPrototype.");
            }
            BlockPrototype b = (BlockPrototype)item.item;

            /*Point p = MainForm.getInstance().getCursorBlockLocation();
             * if (MainForm.getInstance().world.blocks[p.X][p.Y].prototype == BlockPrototype.air) {
             *  Point pos = MainForm.getInstance().getTotalCursorPos();
             *  MainForm.getInstance().world.blocks[p.X][p.Y] = Block.createNewBlock(this, pos);
             *  item.useUp(1);
             * }*/
            Player   player      = MainForm.getInstance().player;
            MainForm mainform    = MainForm.getInstance();
            World    w           = mainform.world;
            Point    cursorBlock = mainform.getCursorBlockLocation();//new Point(mainform.player.blockX, mainform.player.blockY);//getCursorBlockLocation();
            Block    block       = w.getBlockAt(cursorBlock.X, cursorBlock.Y);

            if (block == null)
            {
                return;
            }
            if (Util.distanceBetween(block.location, mainform.player.location) > 200)
            {
                return;
            }
            if (block.prototype.id == "OpenTerraria:Air")
            {
                w.blocks[cursorBlock.X][cursorBlock.Y].prepareForRemoval();
                w.blocks[cursorBlock.X][cursorBlock.Y] = Block.createNewBlock(this, new Point(cursorBlock.X * 20, cursorBlock.Y * 20));
                w.updateSkyLightForColumn(cursorBlock.X);
            }
            Inventory inventory = MainForm.getInstance().getParentInventory(item);

            inventory.removeAmount(this, 1);
            LightingEngine.doFullLightingUpdate(false);
        }