public static void DrawPreview(SpriteBatch sb, TileObjectPreviewData op, Vector2 position) { Point16 coordinates = op.Coordinates; Texture2D texture = Main.tileTexture[(int)op.Type]; TileObjectData tileData = TileObjectData.GetTileData((int)op.Type, (int)op.Style, op.Alternate); int placementStyle = tileData.CalculatePlacementStyle((int)op.Style, op.Alternate, op.Random); int num1 = 0; int drawYoffset = tileData.DrawYOffset; if (tileData.StyleWrapLimit > 0) { num1 = placementStyle / tileData.StyleWrapLimit; placementStyle %= tileData.StyleWrapLimit; } int num2; int num3; if (tileData.StyleHorizontal) { num2 = tileData.CoordinateFullWidth * placementStyle; num3 = tileData.CoordinateFullHeight * num1; } else { num2 = tileData.CoordinateFullWidth * num1; num3 = tileData.CoordinateFullHeight * placementStyle; } for (int index1 = 0; index1 < (int)op.Size.X; ++index1) { int x = num2 + (index1 - (int)op.ObjectStart.X) * (tileData.CoordinateWidth + tileData.CoordinatePadding); int y = num3; for (int index2 = 0; index2 < (int)op.Size.Y; ++index2) { int i = (int)coordinates.X + index1; int num4 = (int)coordinates.Y + index2; if (index2 == 0 && tileData.DrawStepDown != 0 && WorldGen.SolidTile(Framing.GetTileSafely(i, num4 - 1))) { drawYoffset += tileData.DrawStepDown; } Color color1; switch (op[index1, index2]) { case 1: color1 = Color.White; break; case 2: color1 = Color.Red * 0.7f; break; default: continue; } Color color2 = color1 * 0.5f; if (index1 >= (int)op.ObjectStart.X && index1 < (int)op.ObjectStart.X + tileData.Width && (index2 >= (int)op.ObjectStart.Y && index2 < (int)op.ObjectStart.Y + tileData.Height)) { SpriteEffects effects = SpriteEffects.None; if (tileData.DrawFlipHorizontal && index1 % 2 == 1) { effects |= SpriteEffects.FlipHorizontally; } if (tileData.DrawFlipVertical && index2 % 2 == 1) { effects |= SpriteEffects.FlipVertically; } Rectangle rectangle = new Rectangle(x, y, tileData.CoordinateWidth, tileData.CoordinateHeights[index2 - (int)op.ObjectStart.Y]); sb.Draw(texture, new Vector2((float)(i * 16 - (int)((double)position.X + (double)(tileData.CoordinateWidth - 16) / 2.0)), (float)(num4 * 16 - (int)position.Y + drawYoffset)), new Rectangle?(rectangle), color2, 0.0f, Vector2.Zero, 1f, effects, 0.0f); y += tileData.CoordinateHeights[index2 - (int)op.ObjectStart.Y] + tileData.CoordinatePadding; } } } }