Exemplo n.º 1
0
        public override bool ConsumeItem(Player player)
        {
            int tileX = (int)player.Center.X >> 4;
            int tileY = (int)player.position.Y >> 4;

            ISet <(int, int)> _;
            bool canErect = HouseFramingKitItem.Validate(ref tileX, ref tileY, out _);

            if (canErect)
            {
                if (Main.netMode == NetmodeID.SinglePlayer)
                {
                    HouseFramingKitItem.MakeHouseFrame(tileX, tileY);
                }
                else if (Main.netMode == NetmodeID.MultiplayerClient)
                {
                    FramingKitProtocol.SendToServer(tileX, tileY);
                    return(true);
                }
                else if (Main.netMode == NetmodeID.Server)
                {
                    LogLibraries.Alert("Server?");
                }
            }
            else
            {
                Main.NewText("Not enough open space.", Color.Yellow);
            }

            return(canErect);
        }
Exemplo n.º 2
0
        public static void MakeHouseFrame(int midTileX, int floorTileY)
        {
            int width     = HouseFramingKitItem.FrameWidth;
            int height    = HouseFramingKitItem.FrameHeight;
            var outerRect = new Rectangle(
                midTileX - (width / 2),
                floorTileY - height,
                width,
                height
                );
            var innerRect = outerRect;

            innerRect.X      += 1;
            innerRect.Y      += 1;
            innerRect.Width  -= 2;
            innerRect.Height -= 2;

            var frameTileDef = new TileDrawDefinition {
                TileType = TileID.WoodBlock
            };

            //

            bool isSolidFrame(int x, int y)
            => HouseFramingKitItem.IsHouseFrameTileSolid(x, y, width, height, outerRect);

            //

            TileDrawPrimitivesLibraries.DrawRectangle(
                filter: TilePattern.NonActive,
                area: outerRect,
                hollow: innerRect,
                place: (x, y) => isSolidFrame(x, y) ? frameTileDef : null
                );
            TileDrawPrimitivesLibraries.DrawRectangle(
                filter: TilePattern.NonActive,
                area: outerRect,
                hollow: null,
                place: (int x, int y) => HouseFramingKitItem.GetHouseFrameTileDefAt1(x, y, width, height, outerRect)
                );
            TileDrawPrimitivesLibraries.DrawRectangle(
                filter: TilePattern.NonActive,
                area: outerRect,
                hollow: null,
                place: (int x, int y) => HouseFramingKitItem.GetHouseFrameTileDefAt2(x, y, width, height, outerRect)
                );

            /*int ceiling = floorTileY - height;
             *
             * Tile tile1 = Main.tile[ midTileX-3, ceiling+1 ];
             * tile1.slope( 1 );
             * Tile tile2 = Main.tile[ midTileX+2, ceiling+1 ];
             * tile2.slope( 2 );*/

            if (Main.netMode == NetmodeID.Server)
            {
//LogLibraries.Log( "!!!MakeHouseFrame "+outerRect.ToString() );
                TileRectangleModPacketProtocol.Send(outerRect);
            }

            //

            HouseFramingKitItem.MakeHouseSupports(outerRect, floorTileY);

            Main.PlaySound(SoundID.Item108, new Vector2(midTileX * 16, floorTileY * 16));
        }