private static TileDrawDefinition GetHouseFrameTileDefAt2( int x, int y, int width, int height, Rectangle outerRect) { TileDrawDefinition myTileDef = null; int offX = x - outerRect.X; int offY = y - outerRect.Y; int doorMid = height - 4; // Side walls if (offX == 0 || offX == width - 1) { // Vertical just-above-floor if (offY == doorMid) { myTileDef = new TileDrawDefinition { TileType = TileID.ClosedDoor }; } } return(myTileDef); }
private static void MakeHouseSupports(Rectangle rect, int tileY) { var supportLeft = new Rectangle(rect.X, tileY, 1, 256); var supportRight = new Rectangle(rect.X + rect.Width - 1, tileY, 1, 256); int floorLeft = tileY + 256; int floorRight = tileY + 256; var woodBeamDef = new TileDrawDefinition { TileType = TileID.WoodenBeam }; // TileDrawDefinition placeSupportLeft(int x, int y) { if (y >= floorLeft) { return(null); } if (Main.tile[x, y].active()) { if (HamstarHelpers.Helpers.Tiles.Attributes.TileAttributeHelpers.IsBreakable(x, y)) { WorldGen.KillTile(x, y, false, false, true); } else { floorLeft = y; return(null); } } return(new TileDrawDefinition { TileType = TileID.WoodenBeam }); } // TileDrawDefinition placeSupportRight(int x, int y) { if (y >= floorRight) { return(null); } if (Main.tile[x, y].active()) { if (HamstarHelpers.Helpers.Tiles.Attributes.TileAttributeHelpers.IsBreakable(x, y)) { WorldGen.KillTile(x, y, false, false, true); } else { floorRight = y; return(null); } } return(new TileDrawDefinition { TileType = TileID.WoodenBeam }); } // TileDrawPrimitivesHelpers.DrawRectangle( filter: TilePattern.Any, area: supportLeft, hollow: null, place: placeSupportLeft ); TileDrawPrimitivesHelpers.DrawRectangle( filter: TilePattern.Any, area: supportRight, hollow: null, place: placeSupportRight ); if (Main.netMode == 2) { NetMessage.SendTileRange( whoAmi: -1, tileX: supportLeft.X, tileY: supportLeft.Y, xSize: supportLeft.Width, ySize: supportLeft.Height ); NetMessage.SendTileRange( whoAmi: -1, tileX: supportRight.X, tileY: supportRight.Y, xSize: supportRight.Width, ySize: supportRight.Height ); } }
public static void MakeHouseFrame(int tileX, int tileY) { int width = HouseFramingKitItem.FrameWidth; int height = HouseFramingKitItem.FrameHeight; var outerRect = new Rectangle( tileX - (width / 2), tileY - 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) { int offX = x - outerRect.X; int offY = y - outerRect.Y; if (offX == 0 || offX == width - 1) { if (offY == (height - 2)) { return(false); } else if (offY >= (height - 4) && offY <= (height - 3)) { return(false); } } else if (offX >= (width / 2) - 3 && offX <= (width / 2) + 2) { if (offY == 0) { return(false); } } /*bool isActive = Main.tile[x, y].active(); * int timer = 150; * Timers.SetTimer( "HFK0_"+x+"_"+y, 2, false, () => { * Dust.QuickDust( new Point(x, y), isActive ? Color.Purple : Color.Blue ); * return timer-- > 0; * } );*/ return(true); } // TileDrawDefinition getTileFeatureAt(int x, int y) { TileDrawDefinition myTileDef = null; int offX = x - outerRect.X; int offY = y - outerRect.Y; if (offX == 0 || offX == width - 1) { if (offY == (height - 2)) { myTileDef = new TileDrawDefinition { TileType = TileID.ClosedDoor }; } else if (offY >= (height - 4) && offY <= (height - 3)) { myTileDef = null; } } else if (offX >= (width / 2) - 3 && offX <= (width / 2) + 2) { if (offY == 0) { myTileDef = new TileDrawDefinition { TileType = TileID.Platforms }; } } return(myTileDef); } // TileDrawPrimitivesHelpers.DrawRectangle( filter: TilePattern.NonActive, area: outerRect, hollow: innerRect, place: (x, y) => isSolidFrame(x, y) ? frameTileDef : null ); TileDrawPrimitivesHelpers.DrawRectangle( filter: TilePattern.NonActive, area: outerRect, hollow: innerRect, place: getTileFeatureAt ); if (Main.netMode == 2) { NetMessage.SendTileRange( whoAmi: -1, tileX: outerRect.X, tileY: outerRect.Y, xSize: outerRect.Width, ySize: outerRect.Height ); } // if (Main.netMode == 0) { HouseFramingKitItem.MakeHouseSupports(outerRect, tileY); } }
public static void MakeScaffold(int leftTileX, int floorTileY) { int width = ScaffoldingErectorKitItem.ScaffoldWidth; int height = ScaffoldingErectorKitItem.ScaffoldHeight; var rect = new Rectangle( leftTileX, floorTileY - height, width, height ); var postTileDef = new TileDrawDefinition { NotActive = true, WallType = WallID.RichMahoganyFence }; var platTileDef = new TileDrawDefinition { SkipWall = true, TileType = TileID.Platforms }; // int findFloor(int myTileX, int myTileY) { int y; for (y = myTileY; !TileLibraries.IsSolid(Main.tile[myTileX, y], true, true); y++) { if (y >= Main.maxTilesY - 1) { break; } } return(y); } // int rightTileX = rect.X + rect.Width - 1; int lPostFloorY = findFloor(leftTileX, rect.Bottom); int rPostFloorY = findFloor(rightTileX, rect.Bottom); // Posts if (Main.tile[leftTileX - 1, rect.Y].wall != WallID.RichMahoganyFence) { TileDrawPrimitivesLibraries.DrawRectangle( filter: TilePattern.NonSolid, area: new Rectangle(leftTileX, rect.Y, 1, lPostFloorY - rect.Y), hollow: null, place: (x, y) => postTileDef ); } if (Main.tile[rightTileX + 1, rect.Y].wall != WallID.RichMahoganyFence) { TileDrawPrimitivesLibraries.DrawRectangle( filter: TilePattern.NonSolid, area: new Rectangle(rightTileX, rect.Y, 1, rPostFloorY - rect.Y), hollow: null, place: (x, y) => postTileDef ); } // Platforms TileDrawPrimitivesLibraries.DrawRectangle( filter: TilePattern.NonSolid, area: new Rectangle(rect.X, rect.Y, width, 1), hollow: null, place: (x, y) => platTileDef ); // Main.PlaySound(SoundID.Item69, rect.Center.ToVector2() * 16); // if (Main.netMode == NetmodeID.Server) { //LogLibraries.Log( "!!!MakeScaffold " + rect.ToString() ); TileRectangleModPacketProtocol.Send(rect); } }
private static void MakeHouseSupports(Rectangle rect, int floorTileY) { var supportLeft = new Rectangle(rect.X, floorTileY, 1, 256); var supportRight = new Rectangle(rect.X + rect.Width - 1, floorTileY, 1, 256); int floorLeft = floorTileY + 256; int floorRight = floorTileY + 256; var woodBeamDef = new TileDrawDefinition { TileType = TileID.WoodenBeam }; // TileDrawDefinition getSupportLeftDef(int x, int y) { if (y >= floorLeft) { return(null); } if (Main.tile[x, y].active()) { if (TileAttributeLibraries.IsBreakable(x, y)) { WorldGen.KillTile(x, y, false, false, true); } else { floorLeft = y; return(null); } } return(new TileDrawDefinition { TileType = TileID.WoodenBeam }); } // TileDrawDefinition getSupportRightDef(int x, int y) { if (y >= floorRight) { return(null); } if (Main.tile[x, y].active()) { if (TileAttributeLibraries.IsBreakable(x, y)) { WorldGen.KillTile(x, y, false, false, true); } else { floorRight = y; return(null); } } return(new TileDrawDefinition { TileType = TileID.WoodenBeam }); } // TileDrawPrimitivesLibraries.DrawRectangle( filter: TilePattern.Any, area: supportLeft, hollow: null, place: getSupportLeftDef ); TileDrawPrimitivesLibraries.DrawRectangle( filter: TilePattern.Any, area: supportRight, hollow: null, place: getSupportRightDef ); if (Main.netMode == NetmodeID.Server) { Timers.SetTimer(2, false, () => { //LogLibraries.Log( "!!!MakeHouseSupports 1 " + supportLeft.ToString() ); TileRectangleModPacketProtocol.Send(supportLeft); return(false); }); Timers.SetTimer(4, false, () => { //LogLibraries.Log( "!!!MakeHouseSupports 2 " + supportRight.ToString() ); TileRectangleModPacketProtocol.Send(supportRight); return(false); }); } }
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)); }
private static TileDrawDefinition GetHouseFrameTileDefAt1( int x, int y, int width, int height, Rectangle outerRect) { TileDrawDefinition myTileDef = null; int offX = x - outerRect.X; int offY = y - outerRect.Y; int doorTop = height - 4; int doorBot = height - 2; int midLeft = (width / 2) - 3; int midRight = (width / 2) + 3; // Side walls if (offX == 0 || offX == width - 1) { // Vertical just-above-just-above-floor area if (offY >= doorTop && offY <= (doorBot - 1)) { myTileDef = null; } } else // Horizontal middle if (offX >= midLeft && offX < midRight) { // Top if (offY == 0) { if (offX == (midLeft + 1)) { myTileDef = new TileDrawDefinition { TileType = TileID.Platforms, TileStyle = 0, Shape = TileShapeType.TopRightSlope }; } else if (offX == (midRight - 2)) { myTileDef = new TileDrawDefinition { TileType = TileID.Platforms, TileStyle = 0, Shape = TileShapeType.TopLeftSlope }; } else { myTileDef = new TileDrawDefinition { TileType = TileID.Platforms, TileStyle = 0 }; } } else if (offY == 1) { if (offX >= (midLeft + 1) && offX < (midRight - 1)) { myTileDef = new TileDrawDefinition { TileType = TileID.Platforms, TileStyle = 0 }; } } } return(myTileDef); }