public static void SelfFrame8Way(int i, int j, Tile centerTile, bool resetFrame)
{
if (!centerTile.active())
return;
ushort num = centerTile.type;
Framing.BlockStyle blockStyle1 = Framing.FindBlockStyle(centerTile);
int index = 0;
Framing.BlockStyle blockStyle2 = new Framing.BlockStyle();
if (blockStyle1.top)
{
Tile tileSafely = Framing.GetTileSafely(i, j - 1);
if (tileSafely.active() && (int)tileSafely.type == (int)num)
{
blockStyle2 = Framing.FindBlockStyle(tileSafely);
if (blockStyle2.bottom)
index |= 1;
else
blockStyle2.Clear();
}
}
Framing.BlockStyle blockStyle3 = new Framing.BlockStyle();
if (blockStyle1.left)
{
Tile tileSafely = Framing.GetTileSafely(i - 1, j);
if (tileSafely.active() && (int)tileSafely.type == (int)num)
{
blockStyle3 = Framing.FindBlockStyle(tileSafely);
if (blockStyle3.right)
index |= 2;
else
blockStyle3.Clear();
}
}
Framing.BlockStyle blockStyle4 = new Framing.BlockStyle();
if (blockStyle1.right)
{
Tile tileSafely = Framing.GetTileSafely(i + 1, j);
if (tileSafely.active() && (int)tileSafely.type == (int)num)
{
blockStyle4 = Framing.FindBlockStyle(tileSafely);
if (blockStyle4.left)
index |= 4;
else
blockStyle4.Clear();
}
}
Framing.BlockStyle blockStyle5 = new Framing.BlockStyle();
if (blockStyle1.bottom)
{
Tile tileSafely = Framing.GetTileSafely(i, j + 1);
if (tileSafely.active() && (int)tileSafely.type == (int)num)
{
blockStyle5 = Framing.FindBlockStyle(tileSafely);
if (blockStyle5.top)
index |= 8;
else
blockStyle5.Clear();
}
}
if (blockStyle2.left && blockStyle3.top)
{
Tile tileSafely = Framing.GetTileSafely(i - 1, j - 1);
if (tileSafely.active() && (int)tileSafely.type == (int)num)
{
Framing.BlockStyle blockStyle6 = Framing.FindBlockStyle(tileSafely);
if (blockStyle6.right && blockStyle6.bottom)
index |= 16;
}
}
if (blockStyle2.right && blockStyle4.top)
{
Tile tileSafely = Framing.GetTileSafely(i + 1, j - 1);
if (tileSafely.active() && (int)tileSafely.type == (int)num)
{
Framing.BlockStyle blockStyle6 = Framing.FindBlockStyle(tileSafely);
if (blockStyle6.left && blockStyle6.bottom)
index |= 32;
}
}
if (blockStyle5.left && blockStyle3.bottom)
{
Tile tileSafely = Framing.GetTileSafely(i - 1, j + 1);
if (tileSafely.active() && (int)tileSafely.type == (int)num)
{
Framing.BlockStyle blockStyle6 = Framing.FindBlockStyle(tileSafely);
if (blockStyle6.right && blockStyle6.top)
index |= 64;
}
}
if (blockStyle5.right && blockStyle4.bottom)
{
Tile tileSafely = Framing.GetTileSafely(i + 1, j + 1);
if (tileSafely.active() && (int)tileSafely.type == (int)num)
{
Framing.BlockStyle blockStyle6 = Framing.FindBlockStyle(tileSafely);
if (blockStyle6.left && blockStyle6.top)
index |= 128;
}
}
if (resetFrame)
centerTile.frameNumber((byte)WorldGen.genRand.Next(0, 3));
Point16 point16 = Framing.selfFrame8WayLookup[index][(int)centerTile.frameNumber()];
centerTile.frameX = point16.X;
centerTile.frameY = point16.Y;
}