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

◆ Step_BlocksLines()

static void Terraria.GameContent.SmartCursorHelper.Step_BlocksLines ( SmartCursorUsageInfo providedInfo,
ref int focusedX,
ref int focusedY )
inlinestaticprivate

Definition at line 787 of file SmartCursorHelper.cs.

788 {
789 int type = providedInfo.item.type;
790 if (type < 0 || type >= ItemID.Count || !Player.SmartCursorSettings.SmartBlocksEnabled || providedInfo.item.createTile <= -1 || type == 213 || type == 5295 || ItemID.Sets.GrassSeeds[type] || !Main.tileSolid[providedInfo.item.createTile] || Main.tileSolidTop[providedInfo.item.createTile] || Main.tileFrameImportant[providedInfo.item.createTile] || focusedX != -1 || focusedY != -1)
791 {
792 return;
793 }
794 _targets.Clear();
795 bool flag = false;
796 if (Main.tile[providedInfo.screenTargetX, providedInfo.screenTargetY].active())
797 {
798 flag = true;
799 }
800 if (!Collision.InTileBounds(providedInfo.screenTargetX, providedInfo.screenTargetY, providedInfo.reachableStartX, providedInfo.reachableStartY, providedInfo.reachableEndX, providedInfo.reachableEndY))
801 {
802 flag = true;
803 }
804 if (!flag)
805 {
806 for (int i = providedInfo.reachableStartX; i <= providedInfo.reachableEndX; i++)
807 {
808 for (int j = providedInfo.reachableStartY; j <= providedInfo.reachableEndY; j++)
809 {
810 Tile tile = Main.tile[i, j];
811 if (!tile.active() || Main.tileCut[tile.type] || TileID.Sets.BreakableWhenPlacing[tile.type])
812 {
813 bool flag2 = false;
814 if (Main.tile[i - 1, j].active() && Main.tileSolid[Main.tile[i - 1, j].type] && !Main.tileSolidTop[Main.tile[i - 1, j].type])
815 {
816 flag2 = true;
817 }
818 if (Main.tile[i + 1, j].active() && Main.tileSolid[Main.tile[i + 1, j].type] && !Main.tileSolidTop[Main.tile[i + 1, j].type])
819 {
820 flag2 = true;
821 }
822 if (Main.tile[i, j - 1].active() && Main.tileSolid[Main.tile[i, j - 1].type] && !Main.tileSolidTop[Main.tile[i, j - 1].type])
823 {
824 flag2 = true;
825 }
826 if (Main.tile[i, j + 1].active() && Main.tileSolid[Main.tile[i, j + 1].type] && !Main.tileSolidTop[Main.tile[i, j + 1].type])
827 {
828 flag2 = true;
829 }
830 if (flag2)
831 {
832 _targets.Add(new Tuple<int, int>(i, j));
833 }
834 }
835 }
836 }
837 }
838 if (_targets.Count > 0)
839 {
840 float num = -1f;
842 for (int k = 0; k < _targets.Count; k++)
843 {
844 if (Collision.EmptyTile(_targets[k].Item1, _targets[k].Item2))
845 {
846 float num2 = Vector2.Distance(new Vector2(_targets[k].Item1, _targets[k].Item2) * 16f + Vector2.One * 8f, providedInfo.mouse);
847 if (num == -1f || num2 < num)
848 {
849 num = num2;
850 tuple = _targets[k];
851 }
852 }
853 }
854 if (Collision.InTileBounds(tuple.Item1, tuple.Item2, providedInfo.reachableStartX, providedInfo.reachableStartY, providedInfo.reachableEndX, providedInfo.reachableEndY) && num != -1f)
855 {
856 focusedX = tuple.Item1;
857 focusedY = tuple.Item2;
858 }
859 }
860 _targets.Clear();
861 }
static List< Tuple< int, int > > _targets
static bool[] GrassSeeds
Definition ItemID.cs:65
static readonly short Count
Definition ItemID.cs:12138
static bool[] BreakableWhenPlacing
Definition TileID.cs:277
static float Distance(Vector2 value1, Vector2 value2)
Definition Vector2.cs:91

References Terraria.GameContent.SmartCursorHelper._targets, Terraria.Tile.active(), Terraria.ID.TileID.Sets.BreakableWhenPlacing, Terraria.ID.ItemID.Count, Microsoft.Xna.Framework.Vector2.Distance(), Terraria.Collision.EmptyTile(), Terraria.ID.ItemID.Sets.GrassSeeds, Terraria.Collision.InTileBounds(), Terraria.Player.SmartCursorSettings.SmartBlocksEnabled, Terraria.Main.tile, Terraria.Main.tileCut, Terraria.Main.tileFrameImportant, Terraria.Main.tileSolid, Terraria.Main.tileSolidTop, System.type, and Terraria.Tile.type.

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