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

◆ Wall2()

static void Terraria.WorldGen.Spread.Wall2 ( int x,
int y,
int wallType )
inlinestatic

Definition at line 164 of file WorldGen.cs.

165 {
166 if (!InWorld(x, y))
167 {
168 return;
169 }
170 ushort num = (ushort)wallType;
171 int num2 = 0;
176 list2.Add(new Point(x, y));
177 while (list2.Count > 0)
178 {
179 list.Clear();
181 list2.Clear();
182 while (list.Count > 0)
183 {
184 Point item = list[0];
185 if (!InWorld(item.X, item.Y, 1))
186 {
187 list.Remove(item);
188 continue;
189 }
192 Tile tile = Main.tile[item.X, item.Y];
193 if (tile.wall == num || WallID.Sets.CannotBeReplacedByWallSpread[tile.wall])
194 {
195 continue;
196 }
197 if (!SolidTile(item.X, item.Y))
198 {
199 bool flag = WallID.Sets.WallSpreadStopsAtAir[num];
200 if (flag && tile.wall == 0)
201 {
202 list.Remove(item);
203 continue;
204 }
205 num2++;
206 if (num2 >= maxWallOut)
207 {
209 continue;
210 }
211 tile.wall = num;
212 Point item2 = new Point(item.X - 1, item.Y);
213 if (!hashSet.Contains(item2))
214 {
215 list2.Add(item2);
216 }
217 item2 = new Point(item.X + 1, item.Y);
218 if (!hashSet.Contains(item2))
219 {
220 list2.Add(item2);
221 }
222 item2 = new Point(item.X, item.Y - 1);
223 if (!hashSet.Contains(item2))
224 {
225 list2.Add(item2);
226 }
227 item2 = new Point(item.X, item.Y + 1);
228 if (!hashSet.Contains(item2))
229 {
230 list2.Add(item2);
231 }
232 if (flag)
233 {
234 item2 = new Point(item.X - 1, item.Y - 1);
235 if (!hashSet.Contains(item2))
236 {
237 list2.Add(item2);
238 }
239 item2 = new Point(item.X + 1, item.Y - 1);
240 if (!hashSet.Contains(item2))
241 {
242 list2.Add(item2);
243 }
244 item2 = new Point(item.X - 1, item.Y + 1);
245 if (!hashSet.Contains(item2))
246 {
247 list2.Add(item2);
248 }
249 item2 = new Point(item.X + 1, item.Y + 1);
250 if (!hashSet.Contains(item2))
251 {
252 list2.Add(item2);
253 }
254 item2 = new Point(item.X - 2, item.Y);
255 if (!hashSet.Contains(item2))
256 {
257 list2.Add(item2);
258 }
259 item2 = new Point(item.X + 2, item.Y);
260 if (!hashSet.Contains(item2))
261 {
262 list2.Add(item2);
263 }
264 }
265 }
266 else if (tile.active())
267 {
268 tile.wall = num;
269 }
270 }
271 }
272 }
bool ICollection< KeyValuePair< TKey, TValue > >. Remove(KeyValuePair< TKey, TValue > keyValuePair)
bool ICollection< KeyValuePair< TKey, TValue > >. Contains(KeyValuePair< TKey, TValue > keyValuePair)
void AddRange(IEnumerable< KeyValuePair< TKey, TValue > > collection)
void Add(TKey key, TValue value)
static bool[] CannotBeReplacedByWallSpread
Definition WallID.cs:52
static bool[] WallSpreadStopsAtAir
Definition WallID.cs:54
static int maxWallOut2
Definition WorldGen.cs:1030
static bool InWorld(int x, int y, int fluff=0)
Definition WorldGen.cs:5816

References Terraria.Tile.active(), System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Collections.Generic.Dictionary< TKey, TValue >.AddRange(), Terraria.ID.WallID.Sets.CannotBeReplacedByWallSpread, System.Collections.Generic.Dictionary< TKey, TValue >.Clear(), System.Collections.Generic.Dictionary< TKey, TValue >.Contains(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, Terraria.WorldGen.InWorld(), System.item, System.list, Terraria.WorldGen.maxWallOut2, System.Collections.Generic.Dictionary< TKey, TValue >.Remove(), Terraria.Enums.SolidTile, Terraria.Main.tile, Terraria.Tile.wall, and Terraria.ID.WallID.Sets.WallSpreadStopsAtAir.