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

◆ Step_GemCorns()

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

Definition at line 2094 of file SmartCursorHelper.cs.

2095 {
2096 if (!WorldGen.GrowTreeSettings.Profiles.TryGetFromItemId(providedInfo.item.type, out var profile) || focusedX != -1 || focusedY != -1 || providedInfo.reachableStartY <= 20)
2097 {
2098 return;
2099 }
2100 _targets.Clear();
2101 for (int i = providedInfo.reachableStartX; i <= providedInfo.reachableEndX; i++)
2102 {
2103 for (int j = providedInfo.reachableStartY; j <= providedInfo.reachableEndY; j++)
2104 {
2105 Tile tile = Main.tile[i, j];
2106 Tile tile2 = Main.tile[i, j - 1];
2107 Tile tile3 = Main.tile[i, j + 1];
2108 Tile tile4 = Main.tile[i - 1, j];
2109 Tile tile5 = Main.tile[i + 1, j];
2110 Tile tile6 = Main.tile[i - 2, j];
2111 Tile tile7 = Main.tile[i + 2, j];
2112 Tile tile8 = Main.tile[i - 3, j];
2113 Tile tile9 = Main.tile[i + 3, j];
2114 if (profile.GroundTest(tile3.type) && (!tile.active() || Main.tileCut[tile.type] || TileID.Sets.BreakableWhenPlacing[tile.type]) && (!tile2.active() || Main.tileCut[tile2.type] || TileID.Sets.BreakableWhenPlacing[tile2.type]) && (!tile4.active() || !TileID.Sets.CommonSapling[tile4.type]) && (!tile5.active() || !TileID.Sets.CommonSapling[tile5.type]) && (!tile6.active() || !TileID.Sets.CommonSapling[tile6.type]) && (!tile7.active() || !TileID.Sets.CommonSapling[tile7.type]) && (!tile8.active() || !TileID.Sets.CommonSapling[tile8.type]) && (!tile9.active() || !TileID.Sets.CommonSapling[tile9.type]) && tile3.active() && WorldGen.SolidTile2(tile3) && tile4.liquid == 0 && tile.liquid == 0 && tile5.liquid == 0 && WorldGen.EmptyTileCheck(i - 2, i + 2, j - profile.TreeHeightMax, j, profile.SaplingTileType))
2115 {
2116 _targets.Add(new Tuple<int, int>(i, j));
2117 }
2118 }
2119 }
2120 _toRemove.Clear();
2121 for (int k = 0; k < _targets.Count; k++)
2122 {
2123 bool flag = false;
2124 for (int l = -1; l < 2; l += 2)
2125 {
2126 Tile tile10 = Main.tile[_targets[k].Item1 + l, _targets[k].Item2 + 1];
2127 if (tile10.active() && profile.GroundTest(tile10.type))
2128 {
2129 flag = true;
2130 }
2131 }
2132 if (!flag)
2133 {
2134 _toRemove.Add(_targets[k]);
2135 }
2136 }
2137 for (int m = 0; m < _toRemove.Count; m++)
2138 {
2139 _targets.Remove(_toRemove[m]);
2140 }
2141 _toRemove.Clear();
2142 if (_targets.Count > 0)
2143 {
2144 float num = -1f;
2146 for (int n = 0; n < _targets.Count; n++)
2147 {
2148 float num2 = Vector2.Distance(new Vector2(_targets[n].Item1, _targets[n].Item2) * 16f + Vector2.One * 8f, providedInfo.mouse);
2149 if (num == -1f || num2 < num)
2150 {
2151 num = num2;
2152 tuple = _targets[n];
2153 }
2154 }
2155 if (Collision.InTileBounds(tuple.Item1, tuple.Item2, providedInfo.reachableStartX, providedInfo.reachableStartY, providedInfo.reachableEndX, providedInfo.reachableEndY))
2156 {
2157 focusedX = tuple.Item1;
2158 focusedY = tuple.Item2;
2159 }
2160 }
2161 _targets.Clear();
2162 }
static List< Tuple< int, int > > _targets
static List< Tuple< int, int > > _toRemove
static bool[] BreakableWhenPlacing
Definition TileID.cs:277
static bool[] CommonSapling
Definition TileID.cs:103
static float Distance(Vector2 value1, Vector2 value2)
Definition Vector2.cs:91

References Terraria.GameContent.SmartCursorHelper._targets, Terraria.GameContent.SmartCursorHelper._toRemove, Terraria.Tile.active(), Terraria.ID.TileID.Sets.BreakableWhenPlacing, Terraria.ID.TileID.Sets.CommonSapling, Microsoft.Xna.Framework.Vector2.Distance(), Terraria.WorldGen.EmptyTileCheck(), Terraria.Collision.InTileBounds(), Terraria.WorldGen.SolidTile2(), Terraria.Main.tile, Terraria.Main.tileCut, Terraria.WorldGen.GrowTreeSettings.Profiles.TryGetFromItemId(), and Terraria.Tile.type.

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