Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ DrawPreview()

static void Terraria.TileObject.DrawPreview ( SpriteBatch sb,
TileObjectPreviewData op,
Vector2 position )
inlinestatic

Definition at line 812 of file TileObject.cs.

813 {
814 Point16 coordinates = op.Coordinates;
817 int num = 0;
818 int num2 = 0;
819 int num3 = tileData.CalculatePlacementStyle(op.Style, op.Alternate, op.Random);
820 int num4 = 0;
821 int num5 = tileData.DrawYOffset;
822 int drawXOffset = tileData.DrawXOffset;
823 num3 += tileData.DrawStyleOffset;
824 int num6 = tileData.StyleWrapLimit;
825 int num7 = tileData.StyleLineSkip;
826 if (tileData.StyleWrapLimitVisualOverride.HasValue)
827 {
828 num6 = tileData.StyleWrapLimitVisualOverride.Value;
829 }
830 if (tileData.styleLineSkipVisualOverride.HasValue)
831 {
832 num7 = tileData.styleLineSkipVisualOverride.Value;
833 }
834 if (num6 > 0)
835 {
836 num4 = num3 / num6 * num7;
837 num3 %= num6;
838 }
839 if (tileData.StyleHorizontal)
840 {
841 num = tileData.CoordinateFullWidth * num3;
842 num2 = tileData.CoordinateFullHeight * num4;
843 }
844 else
845 {
846 num = tileData.CoordinateFullWidth * num4;
847 num2 = tileData.CoordinateFullHeight * num3;
848 }
849 for (int i = 0; i < op.Size.X; i++)
850 {
851 int x = num + (i - op.ObjectStart.X) * (tileData.CoordinateWidth + tileData.CoordinatePadding);
852 int num8 = num2;
853 for (int j = 0; j < op.Size.Y; j++)
854 {
855 int num9 = coordinates.X + i;
856 int num10 = coordinates.Y + j;
857 if (j == 0 && tileData.DrawStepDown != 0 && WorldGen.SolidTile(Framing.GetTileSafely(num9, num10 - 1)))
858 {
859 num5 += tileData.DrawStepDown;
860 }
861 if (op.Type == 567)
862 {
863 num5 = ((j != 0) ? tileData.DrawYOffset : (tileData.DrawYOffset - 2));
864 }
865 int num11 = op[i, j];
866 Color color;
867 if (num11 != 1)
868 {
869 if (num11 != 2)
870 {
871 continue;
872 }
873 color = Color.Red * 0.7f;
874 }
875 else
876 {
877 color = Color.White;
878 }
879 color *= 0.5f;
880 if (i >= op.ObjectStart.X && i < op.ObjectStart.X + tileData.Width && j >= op.ObjectStart.Y && j < op.ObjectStart.Y + tileData.Height)
881 {
882 SpriteEffects spriteEffects = SpriteEffects.None;
883 if (tileData.DrawFlipHorizontal && num9 % 2 == 0)
884 {
885 spriteEffects |= SpriteEffects.FlipHorizontally;
886 }
887 if (tileData.DrawFlipVertical && num10 % 2 == 0)
888 {
889 spriteEffects |= SpriteEffects.FlipVertically;
890 }
891 int coordinateWidth = tileData.CoordinateWidth;
892 int num12 = tileData.CoordinateHeights[j - op.ObjectStart.Y];
893 if (op.Type == 114 && j == 1)
894 {
895 num12 += 2;
896 }
897 sb.Draw(sourceRectangle: new Rectangle(x, num8, coordinateWidth, num12), texture: value, position: new Vector2(num9 * 16 - (int)(position.X + (float)(coordinateWidth - 16) / 2f) + drawXOffset, num10 * 16 - (int)position.Y + num5), color: color, rotation: 0f, origin: Vector2.Zero, scale: 1f, effects: spriteEffects, layerDepth: 0f);
898 num8 += num12 + tileData.CoordinatePadding;
899 }
900 }
901 }
902 }
void Draw(Texture2D texture, Vector2 position, Color color)
static Asset< Texture2D >[] Tile
int CalculatePlacementStyle(int style, int alternate, int random)
static TileObjectData GetTileData(int type, int style, int alternate=0)

References Terraria.DataStructures.TileObjectPreviewData.Alternate, Terraria.ObjectData.TileObjectData.CalculatePlacementStyle(), Terraria.ObjectData.TileObjectData.CoordinateHeights, Terraria.ObjectData.TileObjectData.CoordinatePadding, Terraria.DataStructures.TileObjectPreviewData.Coordinates, Terraria.ObjectData.TileObjectData.CoordinateWidth, Microsoft.Xna.Framework.Graphics.SpriteBatch.Draw(), Terraria.ObjectData.TileObjectData.DrawFlipHorizontal, Terraria.ObjectData.TileObjectData.DrawFlipVertical, Terraria.ObjectData.TileObjectData.DrawStepDown, Terraria.ObjectData.TileObjectData.DrawStyleOffset, Terraria.ObjectData.TileObjectData.DrawXOffset, Terraria.ObjectData.TileObjectData.DrawYOffset, Terraria.ObjectData.TileObjectData.GetTileData(), Terraria.Framing.GetTileSafely(), Terraria.ObjectData.TileObjectData.Height, Terraria.DataStructures.TileObjectPreviewData.ObjectStart, Terraria.DataStructures.TileObjectPreviewData.Random, Terraria.DataStructures.TileObjectPreviewData.Size, Terraria.WorldGen.SolidTile(), Terraria.DataStructures.TileObjectPreviewData.Style, Terraria.ObjectData.TileObjectData.StyleHorizontal, Terraria.ObjectData.TileObjectData.StyleLineSkip, Terraria.ObjectData.TileObjectData.styleLineSkipVisualOverride, Terraria.ObjectData.TileObjectData.StyleWrapLimit, Terraria.ObjectData.TileObjectData.StyleWrapLimitVisualOverride, Terraria.GameContent.TextureAssets.Tile, Terraria.DataStructures.TileObjectPreviewData.Type, Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Color.White, Microsoft.Xna.Framework.Vector2.X, Terraria.DataStructures.Point16.X, Microsoft.Xna.Framework.Vector2.Y, Terraria.DataStructures.Point16.Y, and Microsoft.Xna.Framework.Vector2.Zero.

Referenced by Terraria.GameContent.Drawing.TileDrawing.Draw().