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

◆ DrawMultiTileGrassInWind()

void Terraria.GameContent.Drawing.TileDrawing.DrawMultiTileGrassInWind ( Vector2 screenPosition,
Vector2 offSet,
int topLeftX,
int topLeftY,
int sizeX,
int sizeY )
inlineprivate

Definition at line 7777 of file TileDrawing.cs.

7778 {
7780 new Vector2((float)(sizeX * 16) * 0.5f, sizeY * 16);
7781 Vector2 vector = new Vector2((float)(topLeftX * 16 - (int)screenPosition.X) + (float)sizeX * 16f * 0.5f, topLeftY * 16 - (int)screenPosition.Y + 16 * sizeY) + offSet;
7782 float num = 0.07f;
7783 int type = Main.tile[topLeftX, topLeftY].type;
7784 Texture2D texture2D = null;
7785 Color color = Color.Transparent;
7787 switch (type)
7788 {
7789 case 27:
7790 texture2D = TextureAssets.Flames[14].Value;
7791 color = Color.White;
7792 break;
7793 case 519:
7795 break;
7796 default:
7797 num = 0.15f;
7798 break;
7799 case 521:
7800 case 522:
7801 case 523:
7802 case 524:
7803 case 525:
7804 case 526:
7805 case 527:
7806 num = 0f;
7807 flag = false;
7808 break;
7809 }
7810 for (int i = topLeftX; i < topLeftX + sizeX; i++)
7811 {
7812 for (int j = topLeftY; j < topLeftY + sizeY; j++)
7813 {
7814 Tile tile = Main.tile[i, j];
7815 ushort type2 = tile.type;
7816 if (type2 != type || !IsVisible(tile))
7817 {
7818 continue;
7819 }
7820 Math.Abs(((float)(i - topLeftX) + 0.5f) / (float)sizeX - 0.5f);
7821 short tileFrameX = tile.frameX;
7822 short tileFrameY = tile.frameY;
7823 float num2 = 1f - (float)(j - topLeftY + 1) / (float)sizeY;
7824 if (num2 == 0f)
7825 {
7826 num2 = 0.1f;
7827 }
7828 if (!flag)
7829 {
7830 num2 = 0f;
7831 }
7832 GetTileDrawData(i, j, tile, type2, 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 _);
7833 bool flag2 = _rand.Next(4) == 0;
7834 Color tileLight = Lighting.GetColor(i, j);
7835 DrawAnimatedTile_AdjustForVisionChangers(i, j, tile, type2, tileFrameX, tileFrameY, ref tileLight, flag2);
7836 tileLight = DrawTiles_GetLightOverride(j, i, tile, type2, tileFrameX, tileFrameY, tileLight);
7838 {
7839 DrawTiles_EmitParticles(j, i, tile, type2, tileFrameX, tileFrameY, tileLight);
7840 }
7841 Vector2 vector2 = new Vector2(i * 16 - (int)screenPosition.X, j * 16 - (int)screenPosition.Y + tileTop) + offSet;
7842 if (tile.type == 493 && tile.frameY == 0)
7843 {
7844 if (Main.WindForVisuals >= 0f)
7845 {
7846 tileSpriteEffect ^= SpriteEffects.FlipHorizontally;
7847 }
7848 if (!tileSpriteEffect.HasFlag(SpriteEffects.FlipHorizontally))
7849 {
7850 vector2.X -= 6f;
7851 }
7852 else
7853 {
7854 vector2.X += 6f;
7855 }
7856 }
7857 Vector2 vector3 = new Vector2(windCycle * 1f, Math.Abs(windCycle) * 2f * num2);
7858 Vector2 origin = vector - vector2;
7860 if (tileDrawTexture != null)
7861 {
7862 Main.spriteBatch.Draw(tileDrawTexture, vector + new Vector2(0f, vector3.Y), new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), tileLight, windCycle * num * num2, origin, 1f, tileSpriteEffect, 0f);
7863 if (texture2D != null)
7864 {
7865 Main.spriteBatch.Draw(texture2D, vector + new Vector2(0f, vector3.Y), new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), color, windCycle * num * num2, origin, 1f, tileSpriteEffect, 0f);
7866 }
7867 }
7868 }
7869 }
7870 }
static double Abs(double value)
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 Color Transparent
Definition Color.cs:76

References Terraria.GameContent.Drawing.TileDrawing._isActiveAndNotPaused, Terraria.GameContent.Drawing.TileDrawing._rand, Terraria.GameContent.Drawing.TileDrawing._sunflowerWindCounter, System.Math.Abs(), Terraria.GameContent.Drawing.TileDrawing.DrawAnimatedTile_AdjustForVisionChangers(), Terraria.GameContent.Drawing.TileDrawing.DrawTiles_EmitParticles(), Terraria.GameContent.Drawing.TileDrawing.DrawTiles_GetLightOverride(), Terraria.GameContent.TextureAssets.Flames, 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.InAPlaceWithWind(), Terraria.GameContent.Drawing.TileDrawing.IsVisible(), Terraria.Utilities.UnifiedRandom.Next(), Terraria.Main.spriteBatch, Terraria.Main.tile, Microsoft.Xna.Framework.Color.Transparent, System.type, Terraria.Tile.type, Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Color.White, Terraria.Main.WindForVisuals, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.

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