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

◆ DrawAnyDirectionalGrass()

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

Definition at line 7258 of file TileDrawing.cs.

7259 {
7260 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
7262 int num = 12;
7263 int num2 = _specialsCount[num];
7264 for (int i = 0; i < num2; i++)
7265 {
7266 Point point = _specialPositions[num][i];
7267 int x = point.X;
7268 int y = point.Y;
7269 Tile tile = Main.tile[x, y];
7270 if (tile == null || !tile.active() || !IsVisible(tile))
7271 {
7272 continue;
7273 }
7274 ushort type = tile.type;
7275 short tileFrameX = tile.frameX;
7276 short tileFrameY = tile.frameY;
7277 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 _, out var glowColor);
7278 bool flag = _rand.Next(4) == 0;
7279 Color tileLight = Lighting.GetColor(x, y);
7280 DrawAnimatedTile_AdjustForVisionChangers(x, y, tile, type, tileFrameX, tileFrameY, ref tileLight, flag);
7281 tileLight = DrawTiles_GetLightOverride(y, x, tile, type, tileFrameX, tileFrameY, tileLight);
7282 if (_isActiveAndNotPaused && flag)
7283 {
7284 DrawTiles_EmitParticles(y, x, tile, type, tileFrameX, tileFrameY, tileLight);
7285 }
7286 if (type == 83 && IsAlchemyPlantHarvestable(tileFrameX / 18))
7287 {
7288 type = 84;
7289 Main.instance.LoadTiles(type);
7290 }
7291 Vector2 position = new Vector2(x * 16 - (int)unscaledPosition.X, y * 16 - (int)unscaledPosition.Y) + zero;
7293 float num3 = GetWindCycle(x, y, _grassWindCounter);
7294 if (!WallID.Sets.AllowsWind[tile.wall])
7295 {
7296 num3 = 0f;
7297 }
7298 if (!InAPlaceWithWind(x, y, 1, 1))
7299 {
7300 num3 = 0f;
7301 }
7302 GetWindGridPush2Axis(x, y, 20, 0.35f, out var pushX, out var pushY);
7303 int num4 = 1;
7304 int num5 = 0;
7305 Vector2 origin = new Vector2(tileWidth / 2, 16 - halfBrickHeight - tileTop);
7306 switch (tileFrameY / 54)
7307 {
7308 case 0:
7309 num4 = 1;
7310 num5 = 0;
7311 origin = new Vector2(tileWidth / 2, 16 - halfBrickHeight - tileTop);
7312 position.X += 8f;
7313 position.Y += 16f;
7314 position.X += num3;
7315 position.Y += Math.Abs(num3);
7316 break;
7317 case 1:
7318 num3 *= -1f;
7319 num4 = -1;
7320 num5 = 0;
7321 origin = new Vector2(tileWidth / 2, -tileTop);
7322 position.X += 8f;
7323 position.X += 0f - num3;
7324 position.Y += 0f - Math.Abs(num3);
7325 break;
7326 case 2:
7327 num4 = 0;
7328 num5 = 1;
7329 origin = new Vector2(2f, (16 - halfBrickHeight - tileTop) / 2);
7330 position.Y += 8f;
7331 position.Y += num3;
7332 position.X += 0f - Math.Abs(num3);
7333 break;
7334 case 3:
7335 num3 *= -1f;
7336 num4 = 0;
7337 num5 = -1;
7338 origin = new Vector2(14f, (16 - halfBrickHeight - tileTop) / 2);
7339 position.X += 16f;
7340 position.Y += 8f;
7341 position.Y += 0f - num3;
7342 position.X += Math.Abs(num3);
7343 break;
7344 }
7345 num3 += pushX * (float)num4 + pushY * (float)num5;
7347 if (tileDrawTexture != null)
7348 {
7349 Main.spriteBatch.Draw(tileDrawTexture, position, new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), tileLight, num3 * 0.1f, origin, 1f, tileSpriteEffect, 0f);
7350 if (glowTexture != null)
7351 {
7352 Main.spriteBatch.Draw(glowTexture, position, new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), glowColor, num3 * 0.1f, origin, 1f, tileSpriteEffect, 0f);
7353 }
7354 }
7355 }
7356 }
static double Abs(double value)
void GetWindGridPush2Axis(int i, int j, int pushAnimationTimeTotal, float pushForcePerFrame, out float pushX, out float pushY)
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.GetWindGridPush2Axis(), 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().