public static void SmoothSlope(int x, int y, bool applyToNeighbors = true)
{
if (applyToNeighbors)
{
Tile.SmoothSlope(x + 1, y, false);
Tile.SmoothSlope(x - 1, y, false);
Tile.SmoothSlope(x, y + 1, false);
Tile.SmoothSlope(x, y - 1, false);
}
Tile tile = Main.tile[x, y];
if (!WorldGen.SolidOrSlopedTile(x, y))
return;
bool flag1 = !WorldGen.TileEmpty(x, y - 1);
bool flag2 = !WorldGen.SolidOrSlopedTile(x, y - 1) && flag1;
bool flag3 = WorldGen.SolidOrSlopedTile(x, y + 1);
bool flag4 = WorldGen.SolidOrSlopedTile(x - 1, y);
bool flag5 = WorldGen.SolidOrSlopedTile(x + 1, y);
switch ((flag1 ? 1 : 0) << 3 | (flag3 ? 1 : 0) << 2 | (flag4 ? 1 : 0) << 1 | (flag5 ? 1 : 0))
{
case 4:
tile.slope((byte)0);
tile.halfBrick(true);
break;
case 5:
tile.halfBrick(false);
tile.slope((byte)2);
break;
case 6:
tile.halfBrick(false);
tile.slope((byte)1);
break;
case 9:
if (flag2)
break;
tile.halfBrick(false);
tile.slope((byte)4);
break;
case 10:
if (flag2)
break;
tile.halfBrick(false);
tile.slope((byte)3);
break;
default:
tile.halfBrick(false);
tile.slope((byte)0);
break;
}
}