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

◆ DrawRisingVineStrip()

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

Definition at line 7973 of file TileDrawing.cs.

7974 {
7975 int num = 0;
7976 int num2 = 0;
7977 Vector2 vector = new Vector2(x * 16 + 8, startY * 16 + 16 + 2);
7978 float amount = Math.Abs(Main.WindForVisuals) / 1.2f;
7979 amount = MathHelper.Lerp(0.2f, 1f, amount);
7980 float num3 = -0.08f * amount;
7982 float num4 = 0f;
7983 float num5 = 0f;
7984 for (int num6 = startY; num6 > 10; num6--)
7985 {
7986 Tile tile = Main.tile[x, num6];
7987 if (tile != null)
7988 {
7989 ushort type = tile.type;
7990 if (!tile.active() || !TileID.Sets.ReverseVineThreads[type])
7991 {
7992 break;
7993 }
7994 num++;
7995 if (num2 >= 5)
7996 {
7997 num3 += 0.0075f * amount;
7998 }
7999 if (num2 >= 2)
8000 {
8001 num3 += 0.0025f;
8002 }
8003 if (WallID.Sets.AllowsWind[tile.wall] && (double)num6 < Main.worldSurface)
8004 {
8005 num2++;
8006 }
8007 float windGridPush = GetWindGridPush(x, num6, 40, -0.004f);
8008 num4 = ((windGridPush != 0f || num5 == 0f) ? (num4 - windGridPush) : (num4 * -0.78f));
8010 short tileFrameX = tile.frameX;
8011 short tileFrameY = tile.frameY;
8012 Color color = Lighting.GetColor(x, num6);
8013 GetTileDrawData(x, num6, 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 _, out var _, out var _);
8014 Vector2 position = new Vector2(-(int)screenPosition.X, -(int)screenPosition.Y) + offSet + vector;
8015 float num7 = (float)num2 * (0f - num3) * windCycle + num4;
8017 if (tileDrawTexture == null)
8018 {
8019 break;
8020 }
8021 if (IsVisible(tile))
8022 {
8023 Main.spriteBatch.Draw(tileDrawTexture, position, new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), color, num7, new Vector2(tileWidth / 2, halfBrickHeight - tileTop + tileHeight), 1f, tileSpriteEffect, 0f);
8024 }
8025 vector += (num7 - (float)Math.PI / 2f).ToRotationVector2() * 16f;
8026 }
8027 }
8028 }
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
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[] ReverseVineThreads
Definition TileID.cs:181
static bool[] AllowsWind
Definition WallID.cs:48

References Terraria.GameContent.Drawing.TileDrawing._vineWindCounter, System.Math.Abs(), Terraria.Tile.active(), Terraria.ID.WallID.Sets.AllowsWind, Terraria.Tile.frameX, Terraria.Tile.frameY, Terraria.Lighting.GetColor(), Terraria.GameContent.Drawing.TileDrawing.GetTileDrawData(), Terraria.GameContent.Drawing.TileDrawing.GetTileDrawTexture(), Terraria.GameContent.Drawing.TileDrawing.GetWindCycle(), Terraria.GameContent.Drawing.TileDrawing.GetWindGridPush(), Terraria.GameContent.Drawing.TileDrawing.IsVisible(), Microsoft.Xna.Framework.MathHelper.Lerp(), System.Math.PI, Terraria.ID.TileID.Sets.ReverseVineThreads, Terraria.Main.spriteBatch, Terraria.Main.tile, System.type, Terraria.Tile.type, Microsoft.Xna.Framework.Graphics.Vector2, Terraria.Tile.wall, Terraria.Main.WindForVisuals, Terraria.Main.worldSurface, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.

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