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

◆ Step_Torch()

static void Terraria.GameContent.SmartCursorHelper.Step_Torch ( SmartCursorUsageInfo providedInfo,
ref int fX,
ref int fY )
inlinestaticprivate

Definition at line 2730 of file SmartCursorHelper.cs.

2731 {
2732 int reachableStartX = providedInfo.reachableStartX;
2733 int reachableStartY = providedInfo.reachableStartY;
2734 int reachableEndX = providedInfo.reachableEndX;
2735 int reachableEndY = providedInfo.reachableEndY;
2736 _ = providedInfo.screenTargetX;
2737 _ = providedInfo.screenTargetY;
2738 if (providedInfo.item.createTile != 4 || fX != -1 || fY != -1)
2739 {
2740 return;
2741 }
2742 _targets.Clear();
2743 bool flag = providedInfo.item.type != 1333 && providedInfo.item.type != 523 && providedInfo.item.type != 4384;
2744 for (int i = reachableStartX; i <= reachableEndX; i++)
2745 {
2746 for (int j = reachableStartY; j <= reachableEndY; j++)
2747 {
2748 Tile tile = Main.tile[i, j];
2749 Tile tile2 = Main.tile[i - 1, j];
2750 Tile tile3 = Main.tile[i + 1, j];
2751 Tile tile4 = Main.tile[i, j + 1];
2752 if (tile.active() && !TileID.Sets.BreakableWhenPlacing[tile.type] && (!Main.tileCut[tile.type] || tile.type == 82 || tile.type == 83))
2753 {
2754 continue;
2755 }
2756 bool flag2 = false;
2757 for (int k = i - 8; k <= i + 8; k++)
2758 {
2759 for (int l = j - 8; l <= j + 8; l++)
2760 {
2761 if (Main.tile[k, l] != null && Main.tile[k, l].type == 4)
2762 {
2763 flag2 = true;
2764 break;
2765 }
2766 }
2767 if (flag2)
2768 {
2769 break;
2770 }
2771 }
2772 if (!flag2 && (!flag || tile.liquid <= 0) && (tile.wall > 0 || (tile2.active() && (tile2.slope() == 0 || tile2.slope() % 2 != 1) && ((Main.tileSolid[tile2.type] && !Main.tileNoAttach[tile2.type] && !Main.tileSolidTop[tile2.type] && !TileID.Sets.NotReallySolid[tile2.type]) || TileID.Sets.IsBeam[tile2.type] || (WorldGen.IsTreeType(tile2.type) && WorldGen.IsTreeType(Main.tile[i - 1, j - 1].type) && WorldGen.IsTreeType(Main.tile[i - 1, j + 1].type)))) || (tile3.active() && (tile3.slope() == 0 || tile3.slope() % 2 != 0) && ((Main.tileSolid[tile3.type] && !Main.tileNoAttach[tile3.type] && !Main.tileSolidTop[tile3.type] && !TileID.Sets.NotReallySolid[tile3.type]) || TileID.Sets.IsBeam[tile3.type] || (WorldGen.IsTreeType(tile3.type) && WorldGen.IsTreeType(Main.tile[i + 1, j - 1].type) && WorldGen.IsTreeType(Main.tile[i + 1, j + 1].type)))) || (tile4.active() && Main.tileSolid[tile4.type] && !Main.tileNoAttach[tile4.type] && (!Main.tileSolidTop[tile4.type] || (TileID.Sets.Platforms[tile4.type] && tile4.slope() == 0)) && !TileID.Sets.NotReallySolid[tile4.type] && !tile4.halfBrick() && tile4.slope() == 0)) && tile.type != 4)
2773 {
2774 _targets.Add(new Tuple<int, int>(i, j));
2775 }
2776 }
2777 }
2778 if (_targets.Count > 0)
2779 {
2780 float num = -1f;
2782 for (int m = 0; m < _targets.Count; m++)
2783 {
2784 float num2 = Vector2.Distance(new Vector2(_targets[m].Item1, _targets[m].Item2) * 16f + Vector2.One * 8f, providedInfo.mouse);
2785 if (num == -1f || num2 < num)
2786 {
2787 num = num2;
2788 tuple = _targets[m];
2789 }
2790 }
2791 if (Collision.InTileBounds(tuple.Item1, tuple.Item2, reachableStartX, reachableStartY, reachableEndX, reachableEndY))
2792 {
2793 fX = tuple.Item1;
2794 fY = tuple.Item2;
2795 }
2796 }
2797 _targets.Clear();
2798 }
static List< Tuple< int, int > > _targets
static bool[] BreakableWhenPlacing
Definition TileID.cs:277
static bool[] IsBeam
Definition TileID.cs:161
static bool[] NotReallySolid
Definition TileID.cs:257
static bool[] Platforms
Definition TileID.cs:163
static float Distance(Vector2 value1, Vector2 value2)
Definition Vector2.cs:91

References Terraria.GameContent.SmartCursorHelper._targets, Terraria.Tile.active(), Terraria.ID.TileID.Sets.BreakableWhenPlacing, Microsoft.Xna.Framework.Vector2.Distance(), Terraria.Collision.InTileBounds(), Terraria.ID.TileID.Sets.IsBeam, Terraria.WorldGen.IsTreeType(), Terraria.Tile.liquid, Terraria.ID.TileID.Sets.NotReallySolid, Microsoft.Xna.Framework.Vector2.One, Terraria.ID.TileID.Sets.Platforms, Terraria.Main.tile, Terraria.Main.tileCut, Terraria.Main.tileNoAttach, Terraria.Main.tileSolid, Terraria.Main.tileSolidTop, Terraria.Tile.type, and Terraria.Tile.wall.

Referenced by Terraria.GameContent.SmartCursorHelper.SmartCursorLookup().