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

◆ EmitTreeLeaves()

void Terraria.GameContent.Drawing.TileDrawing.EmitTreeLeaves ( int tilePosX,
int tilePosY,
int grassPosX,
int grassPosY )
inlineprivate

Definition at line 6607 of file TileDrawing.cs.

6608 {
6610 {
6611 return;
6612 }
6614 Tile tile = Main.tile[tilePosX, tilePosY];
6615 if (tile.liquid > 0)
6616 {
6617 return;
6618 }
6619 WorldGen.GetTreeLeaf(tilePosX, tile, Main.tile[grassPosX, grassPosY], ref treeHeight, out var _, out var passStyle);
6620 int num;
6621 switch (passStyle)
6622 {
6623 case -1:
6624 case 912:
6625 case 913:
6626 case 1278:
6627 return;
6628 default:
6629 num = ((passStyle >= 1113 && passStyle <= 1121) ? 1 : 0);
6630 break;
6631 case 917:
6632 case 918:
6633 case 919:
6634 case 920:
6635 case 921:
6636 case 922:
6637 case 923:
6638 case 924:
6639 case 925:
6640 num = 1;
6641 break;
6642 }
6643 bool flag = (byte)num != 0;
6644 int num2 = _leafFrequency;
6645 bool flag2 = tilePosX - grassPosX != 0;
6646 if (flag)
6647 {
6648 num2 /= 2;
6649 }
6650 if (!WorldGen.DoesWindBlowAtThisHeight(tilePosY))
6651 {
6652 num2 = 10000;
6653 }
6654 if (flag2)
6655 {
6656 num2 *= 3;
6657 }
6658 if (_rand.Next(num2) != 0)
6659 {
6660 return;
6661 }
6662 int num3 = 2;
6663 Vector2 vector = new Vector2(tilePosX * 16 + 8, tilePosY * 16 + 8);
6664 if (flag2)
6665 {
6666 int num4 = tilePosX - grassPosX;
6667 vector.X += num4 * 12;
6668 int num5 = 0;
6669 if (tile.frameY == 220)
6670 {
6671 num5 = 1;
6672 }
6673 else if (tile.frameY == 242)
6674 {
6675 num5 = 2;
6676 }
6677 if (tile.frameX == 66)
6678 {
6679 switch (num5)
6680 {
6681 case 0:
6682 vector += new Vector2(0f, -6f);
6683 break;
6684 case 1:
6685 vector += new Vector2(0f, -6f);
6686 break;
6687 case 2:
6688 vector += new Vector2(0f, 8f);
6689 break;
6690 }
6691 }
6692 else
6693 {
6694 switch (num5)
6695 {
6696 case 0:
6697 vector += new Vector2(0f, 4f);
6698 break;
6699 case 1:
6700 vector += new Vector2(2f, -6f);
6701 break;
6702 case 2:
6703 vector += new Vector2(6f, -6f);
6704 break;
6705 }
6706 }
6707 }
6708 else
6709 {
6710 vector += new Vector2(-16f, -16f);
6711 if (flag)
6712 {
6713 vector.Y -= Main.rand.Next(0, 28) * 4;
6714 }
6715 }
6716 if (!WorldGen.SolidTile(vector.ToTileCoordinates()))
6717 {
6718 Gore.NewGoreDirect(vector, Utils.RandomVector2(Main.rand, -num3, num3), passStyle, 0.7f + Main.rand.NextFloat() * 0.6f).Frame.CurrentColumn = Main.tile[tilePosX, tilePosY].color();
6719 }
6720 }

References Terraria.GameContent.Drawing.TileDrawing._isActiveAndNotPaused, Terraria.GameContent.Drawing.TileDrawing._leafFrequency, Terraria.GameContent.Drawing.TileDrawing._rand, Terraria.WorldGen.DoesWindBlowAtThisHeight(), Terraria.Tile.frameX, Terraria.Tile.frameY, Terraria.WorldGen.GetTreeLeaf(), Terraria.Tile.liquid, Terraria.Gore.NewGoreDirect(), Terraria.Utilities.UnifiedRandom.Next(), Terraria.Main.rand, Terraria.Utils.RandomVector2(), Terraria.WorldGen.SolidTile(), Terraria.Main.tile, and Microsoft.Xna.Framework.Graphics.Vector2.

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