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

◆ DrawGrass()

void Terraria.GameContent.Drawing.TileDrawing.DrawGrass ( )
inlineprivate

Definition at line 7199 of file TileDrawing.cs.

7200 {
7201 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
7203 int num = 3;
7204 int num2 = _specialsCount[num];
7205 for (int i = 0; i < num2; i++)
7206 {
7207 Point point = _specialPositions[num][i];
7208 int x = point.X;
7209 int y = point.Y;
7210 Tile tile = Main.tile[x, y];
7211 if (tile == null || !tile.active() || !IsVisible(tile))
7212 {
7213 continue;
7214 }
7215 ushort type = tile.type;
7216 short tileFrameX = tile.frameX;
7217 short tileFrameY = tile.frameY;
7218 GetTileDrawData(x, y, 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);
7219 bool flag = _rand.Next(4) == 0;
7220 Color tileLight = Lighting.GetColor(x, y);
7221 DrawAnimatedTile_AdjustForVisionChangers(x, y, tile, type, tileFrameX, tileFrameY, ref tileLight, flag);
7222 tileLight = DrawTiles_GetLightOverride(y, x, tile, type, tileFrameX, tileFrameY, tileLight);
7223 if (_isActiveAndNotPaused && flag)
7224 {
7225 DrawTiles_EmitParticles(y, x, tile, type, tileFrameX, tileFrameY, tileLight);
7226 }
7227 if (type == 83 && IsAlchemyPlantHarvestable(tileFrameX / 18))
7228 {
7229 type = 84;
7230 Main.instance.LoadTiles(type);
7231 }
7232 Vector2 position = new Vector2(x * 16 - (int)unscaledPosition.X + 8, y * 16 - (int)unscaledPosition.Y + 16) + zero;
7234 float num3 = GetWindCycle(x, y, _grassWindCounter);
7235 if (!WallID.Sets.AllowsWind[tile.wall])
7236 {
7237 num3 = 0f;
7238 }
7239 if (!InAPlaceWithWind(x, y, 1, 1))
7240 {
7241 num3 = 0f;
7242 }
7243 num3 += GetWindGridPush(x, y, 20, 0.35f);
7244 position.X += num3 * 1f;
7245 position.Y += Math.Abs(num3) * 1f;
7247 if (tileDrawTexture != null)
7248 {
7249 Main.spriteBatch.Draw(tileDrawTexture, position, new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), tileLight, num3 * 0.1f, new Vector2(tileWidth / 2, 16 - halfBrickHeight - tileTop), 1f, tileSpriteEffect, 0f);
7250 if (glowTexture != null)
7251 {
7252 Main.spriteBatch.Draw(glowTexture, position, glowSourceRect, glowColor, num3 * 0.1f, new Vector2(tileWidth / 2, 16 - halfBrickHeight - tileTop), 1f, tileSpriteEffect, 0f);
7253 }
7254 }
7255 }
7256 }
static double Abs(double value)
float GetWindGridPush(int i, int j, int pushAnimationTimeTotal, float pushForcePerFrame)
Color DrawTiles_GetLightOverride(int j, int i, Tile tileCache, ushort typeCache, short tileFrameX, short tileFrameY, Color tileLight)
Texture2D GetTileDrawTexture(Tile tile, int tileX, int tileY)
void DrawTiles_EmitParticles(int j, int i, Tile tileCache, ushort typeCache, short tileFrameX, short tileFrameY, Color tileLight)
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)
bool InAPlaceWithWind(int x, int y, int width, int height)
void DrawAnimatedTile_AdjustForVisionChangers(int i, int j, Tile tileCache, ushort typeCache, short tileFrameX, short tileFrameY, ref Color tileLight, bool canDoDust)
static bool[] AllowsWind
Definition WallID.cs:48

References Terraria.GameContent.Drawing.TileDrawing._grassWindCounter, Terraria.GameContent.Drawing.TileDrawing._isActiveAndNotPaused, Terraria.GameContent.Drawing.TileDrawing._rand, Terraria.GameContent.Drawing.TileDrawing._specialPositions, Terraria.GameContent.Drawing.TileDrawing._specialsCount, System.Math.Abs(), Terraria.Tile.active(), Terraria.ID.WallID.Sets.AllowsWind, Terraria.Main.Camera, Terraria.GameContent.Drawing.TileDrawing.DrawAnimatedTile_AdjustForVisionChangers(), Terraria.GameContent.Drawing.TileDrawing.DrawTiles_EmitParticles(), Terraria.GameContent.Drawing.TileDrawing.DrawTiles_GetLightOverride(), 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.InAPlaceWithWind(), Terraria.Main.instance, Terraria.GameContent.Drawing.TileDrawing.IsAlchemyPlantHarvestable(), Terraria.GameContent.Drawing.TileDrawing.IsVisible(), Terraria.Utilities.UnifiedRandom.Next(), Terraria.Main.spriteBatch, Terraria.Main.tile, System.type, Terraria.Tile.type, Microsoft.Xna.Framework.Graphics.Vector2, Terraria.Tile.wall, Microsoft.Xna.Framework.Point.X, Microsoft.Xna.Framework.Point.Y, and Microsoft.Xna.Framework.Vector2.Zero.

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