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

◆ WallFrame()

static void Terraria.Framing.WallFrame ( int i,
int j,
bool resetFrame = false )
inlinestatic

Definition at line 334 of file Framing.cs.

335 {
336 if (WorldGen.SkipFramingBecauseOfGen || i <= 0 || j <= 0 || i >= Main.maxTilesX - 1 || j >= Main.maxTilesY - 1 || Main.tile[i, j] == null)
337 {
338 return;
339 }
340 if (Main.tile[i, j].wall >= WallID.Count)
341 {
342 Main.tile[i, j].wall = 0;
343 }
344 WorldGen.UpdateMapTile(i, j);
345 Tile tile = Main.tile[i, j];
346 if (tile.wall == 0)
347 {
348 tile.wallColor(0);
349 tile.ClearWallPaintAndCoating();
350 return;
351 }
352 int num = 0;
353 bool flag = Main.ShouldShowInvisibleWalls();
354 if (j - 1 >= 0)
355 {
356 Tile tile2 = Main.tile[i, j - 1];
357 if (tile2 != null && (tile2.wall > 0 || (tile2.active() && tile2.type == 54)) && (flag || !tile2.invisibleWall()))
358 {
359 num = 1;
360 }
361 }
362 if (i - 1 >= 0)
363 {
364 Tile tile2 = Main.tile[i - 1, j];
365 if (tile2 != null && (tile2.wall > 0 || (tile2.active() && tile2.type == 54)) && (flag || !tile2.invisibleWall()))
366 {
367 num |= 2;
368 }
369 }
370 if (i + 1 <= Main.maxTilesX - 1)
371 {
372 Tile tile2 = Main.tile[i + 1, j];
373 if (tile2 != null && (tile2.wall > 0 || (tile2.active() && tile2.type == 54)) && (flag || !tile2.invisibleWall()))
374 {
375 num |= 4;
376 }
377 }
378 if (j + 1 <= Main.maxTilesY - 1)
379 {
380 Tile tile2 = Main.tile[i, j + 1];
381 if (tile2 != null && (tile2.wall > 0 || (tile2.active() && tile2.type == 54)) && (flag || !tile2.invisibleWall()))
382 {
383 num |= 8;
384 }
385 }
386 int num2 = 0;
387 if (Main.wallLargeFrames[tile.wall] == 1)
388 {
389 num2 = phlebasTileFrameNumberLookup[j % 4][i % 3] - 1;
390 tile.wallFrameNumber((byte)num2);
391 }
392 else if (Main.wallLargeFrames[tile.wall] == 2)
393 {
394 num2 = lazureTileFrameNumberLookup[i % 2][j % 2] - 1;
395 tile.wallFrameNumber((byte)num2);
396 }
397 else if (resetFrame)
398 {
399 num2 = WorldGen.genRand.Next(0, 3);
400 if (tile.wall == 21 && WorldGen.genRand.Next(2) == 0)
401 {
402 num2 = 2;
403 }
404 tile.wallFrameNumber((byte)num2);
405 }
406 else
407 {
408 num2 = tile.wallFrameNumber();
409 }
410 if (num == 15)
411 {
412 num += centerWallFrameLookup[i % 3][j % 3];
413 }
414 Point16 point = wallFrameLookup[num][num2];
415 tile.wallFrameX(point.X);
416 tile.wallFrameY(point.Y);
417 }
static int[][] centerWallFrameLookup
Definition Framing.cs:47
static Point16[][] wallFrameLookup
Definition Framing.cs:35
static int[][] phlebasTileFrameNumberLookup
Definition Framing.cs:43
static int[][] lazureTileFrameNumberLookup
Definition Framing.cs:45
static readonly ushort Count
Definition WallID.cs:753

References Terraria.Tile.active(), Terraria.Framing.centerWallFrameLookup, Terraria.Tile.ClearWallPaintAndCoating(), Terraria.ID.WallID.Count, Terraria.WorldGen.genRand, Terraria.Tile.invisibleWall(), Terraria.Framing.lazureTileFrameNumberLookup, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Framing.phlebasTileFrameNumberLookup, Terraria.Main.ShouldShowInvisibleWalls(), Terraria.WorldGen.SkipFramingBecauseOfGen, Terraria.Main.tile, Terraria.Tile.type, Terraria.WorldGen.UpdateMapTile(), Terraria.Tile.wall, Terraria.Tile.wallColor(), Terraria.Framing.wallFrameLookup, Terraria.Tile.wallFrameNumber(), Terraria.Tile.wallFrameX(), Terraria.Tile.wallFrameY(), Terraria.Main.wallLargeFrames, Terraria.DataStructures.Point16.X, and Terraria.DataStructures.Point16.Y.

Referenced by Terraria.WorldGen.EveryTileFrame(), Terraria.WorldGen.RangeFrame(), Terraria.WorldGen.Reframe(), and Terraria.WorldGen.SquareWallFrame().