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

◆ DrawVineStrip()

void Terraria.GameContent.Drawing.TileDrawing.DrawVineStrip ( Vector2 screenPosition,
Vector2 offSet,
int x,
int startY )
inlineprivate

Definition at line 7872 of file TileDrawing.cs.

7873 {
7874 int num = 0;
7875 int num2 = 0;
7876 Vector2 vector = new Vector2(x * 16 + 8, startY * 16 - 2);
7877 float amount = Math.Abs(Main.WindForVisuals) / 1.2f;
7878 amount = MathHelper.Lerp(0.2f, 1f, amount);
7879 float num3 = -0.08f * amount;
7881 float num4 = 0f;
7882 float num5 = 0f;
7883 for (int i = startY; i < Main.maxTilesY - 10; i++)
7884 {
7885 Tile tile = Main.tile[x, i];
7886 if (tile == null)
7887 {
7888 continue;
7889 }
7890 ushort type = tile.type;
7891 if (!tile.active() || !TileID.Sets.VineThreads[type])
7892 {
7893 break;
7894 }
7895 num++;
7896 if (num2 >= 5)
7897 {
7898 num3 += 0.0075f * amount;
7899 }
7900 if (num2 >= 2)
7901 {
7902 num3 += 0.0025f;
7903 }
7904 if (Main.remixWorld)
7905 {
7906 if (WallID.Sets.AllowsWind[tile.wall] && (double)i > Main.worldSurface)
7907 {
7908 num2++;
7909 }
7910 }
7911 else if (WallID.Sets.AllowsWind[tile.wall] && (double)i < Main.worldSurface)
7912 {
7913 num2++;
7914 }
7915 float windGridPush = GetWindGridPush(x, i, 20, 0.01f);
7916 num4 = ((windGridPush != 0f || num5 == 0f) ? (num4 - windGridPush) : (num4 * -0.78f));
7918 short tileFrameX = tile.frameX;
7919 short tileFrameY = tile.frameY;
7920 Color color = Lighting.GetColor(x, i);
7921 GetTileDrawData(x, i, tile, type, ref tileFrameX, ref tileFrameY, out var tileWidth, out var tileHeight, out var tileTop, out var halfBrickHeight, out var addFrX, out var addFrY, out var tileSpriteEffect, out var glowTexture, out var glowSourceRect, out var glowColor);
7922 Vector2 position = new Vector2(-(int)screenPosition.X, -(int)screenPosition.Y) + offSet + vector;
7923 if (tile.fullbrightBlock())
7924 {
7925 color = Color.White;
7926 }
7927 float num6 = (float)num2 * num3 * windCycle + num4;
7929 {
7931 if (Main.IsTileBiomeSightable(type, tileFrameX, tileFrameY, ref sightColor))
7932 {
7933 if (color.R < sightColor.R)
7934 {
7935 color.R = sightColor.R;
7936 }
7937 if (color.G < sightColor.G)
7938 {
7939 color.G = sightColor.G;
7940 }
7941 if (color.B < sightColor.B)
7942 {
7943 color.B = sightColor.B;
7944 }
7945 if (_isActiveAndNotPaused && _rand.Next(480) == 0)
7946 {
7948 int num7 = Dust.NewDust(new Vector2(x * 16, i * 16), 16, 16, 267, 0f, 0f, 150, newColor, 0.3f);
7949 _dust[num7].noGravity = true;
7950 _dust[num7].fadeIn = 1f;
7951 _dust[num7].velocity *= 0.1f;
7952 _dust[num7].noLightEmittence = true;
7953 }
7954 }
7955 }
7957 if (tileDrawTexture == null)
7958 {
7959 break;
7960 }
7961 if (IsVisible(tile))
7962 {
7963 Main.spriteBatch.Draw(tileDrawTexture, position, new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), color, num6, new Vector2(tileWidth / 2, halfBrickHeight - tileTop), 1f, tileSpriteEffect, 0f);
7964 if (glowTexture != null)
7965 {
7966 Main.spriteBatch.Draw(glowTexture, position, glowSourceRect, glowColor, num6, new Vector2(tileWidth / 2, halfBrickHeight - tileTop), 1f, tileSpriteEffect, 0f);
7967 }
7968 }
7969 vector += (num6 + (float)Math.PI / 2f).ToRotationVector2() * 16f;
7970 }
7971 }
static float Lerp(float value1, float value2, float amount)
Definition MathHelper.cs:53
static double Abs(double value)
const double PI
Definition Math.cs:16
bool noGravity
Definition Dust.cs:26
bool noLightEmittence
Definition Dust.cs:34
float fadeIn
Definition Dust.cs:24
Vector2 velocity
Definition Dust.cs:22
float GetWindGridPush(int i, int j, int pushAnimationTimeTotal, float pushForcePerFrame)
Texture2D GetTileDrawTexture(Tile tile, int tileX, int tileY)
void GetTileDrawData(int x, int y, Tile tileCache, ushort typeCache, ref short tileFrameX, ref short tileFrameY, out int tileWidth, out int tileHeight, out int tileTop, out int halfBrickHeight, out int addFrX, out int addFrY, out SpriteEffects tileSpriteEffect, out Texture2D glowTexture, out Rectangle glowSourceRect, out Color glowColor)
float GetWindCycle(int x, int y, double windCounter)
static bool[] VineThreads
Definition TileID.cs:179
static bool[] AllowsWind
Definition WallID.cs:48

References Terraria.GameContent.Drawing.TileDrawing._dust, Terraria.GameContent.Drawing.TileDrawing._isActiveAndNotPaused, Terraria.GameContent.Drawing.TileDrawing._localPlayer, Terraria.GameContent.Drawing.TileDrawing._rand, Terraria.GameContent.Drawing.TileDrawing._vineWindCounter, System.Math.Abs(), Terraria.Tile.active(), Terraria.ID.WallID.Sets.AllowsWind, Microsoft.Xna.Framework.Color.B, Terraria.Player.biomeSight, Terraria.Dust.fadeIn, Terraria.Tile.frameX, Terraria.Tile.frameY, Terraria.Tile.fullbrightBlock(), Microsoft.Xna.Framework.Color.G, Terraria.Lighting.GetColor(), Terraria.GameContent.Drawing.TileDrawing.GetTileDrawData(), Terraria.GameContent.Drawing.TileDrawing.GetTileDrawTexture(), Terraria.GameContent.Drawing.TileDrawing.GetWindCycle(), Terraria.GameContent.Drawing.TileDrawing.GetWindGridPush(), Terraria.Main.IsTileBiomeSightable(), Terraria.GameContent.Drawing.TileDrawing.IsVisible(), Microsoft.Xna.Framework.MathHelper.Lerp(), Terraria.Dust.NewDust(), Terraria.Utilities.UnifiedRandom.Next(), Terraria.Dust.noGravity, Terraria.Dust.noLightEmittence, System.Math.PI, Microsoft.Xna.Framework.Color.R, Terraria.Main.remixWorld, Terraria.Main.spriteBatch, Terraria.Main.tile, System.type, Terraria.Tile.type, Microsoft.Xna.Framework.Graphics.Vector2, Terraria.Dust.velocity, Terraria.ID.TileID.Sets.VineThreads, Terraria.Tile.wall, Microsoft.Xna.Framework.Color.White, Terraria.Main.WindForVisuals, Terraria.Main.worldSurface, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.

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