public static TileObjectData GetTileData(Tile getTile)
{
if (getTile == null || !getTile.active())
return (TileObjectData)null;
int index1 = (int)getTile.type;
if (index1 < 0 || index1 >= TileObjectData._data.Count)
throw new ArgumentOutOfRangeException("Function called with a bad tile type");
TileObjectData tileObjectData1 = TileObjectData._data[index1];
if (tileObjectData1 == null)
return (TileObjectData)null;
int num1 = (int)getTile.frameX / tileObjectData1.CoordinateFullWidth;
int num2 = (int)getTile.frameY / tileObjectData1.CoordinateFullHeight;
int num3 = tileObjectData1.StyleWrapLimit;
if (num3 == 0)
num3 = 1;
int num4 = !tileObjectData1.StyleHorizontal ? num1 * num3 + num2 : num2 * num3 + num1;
int index2 = num4 / tileObjectData1.StyleMultiplier;
int num5 = num4 % tileObjectData1.StyleMultiplier;
if (tileObjectData1._subTiles != null && index2 >= 0 && index2 < tileObjectData1.SubTiles.Count)
{
TileObjectData tileObjectData2 = tileObjectData1.SubTiles[index2];
if (tileObjectData2 != null)
tileObjectData1 = tileObjectData2;
}
if (tileObjectData1._alternates != null)
{
for (int index3 = 0; index3 < tileObjectData1.Alternates.Count; ++index3)
{
TileObjectData tileObjectData2 = tileObjectData1.Alternates[index3];
if (tileObjectData2 != null && num5 >= tileObjectData2.Style && num5 <= tileObjectData2.Style + tileObjectData2.RandomStyleRange)
return tileObjectData2;
}
}
return tileObjectData1;
}