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

◆ CheckDoorOpen()

static void Terraria.WorldGen.CheckDoorOpen ( int i,
int j,
Tile tileCache )
inlinestaticprivate

Definition at line 76418 of file WorldGen.cs.

76419 {
76420 if (destroyObject)
76421 {
76422 return;
76423 }
76424 int num = 0;
76425 int num2 = i;
76426 int num3 = j;
76427 short frameX = tileCache.frameX;
76428 int frameY = tileCache.frameY;
76429 int num4 = frameY / 54;
76430 num4 += tileCache.frameX / 72 * 36;
76431 num3 = j - frameY % 54 / 18;
76432 bool flag = false;
76433 switch (frameX % 72)
76434 {
76435 case 0:
76436 num2 = i;
76437 num = 1;
76438 break;
76439 case 18:
76440 num2 = i - 1;
76441 num = 1;
76442 break;
76443 case 36:
76444 num2 = i + 1;
76445 num = -1;
76446 break;
76447 case 54:
76448 num2 = i;
76449 num = -1;
76450 break;
76451 }
76452 Tile tile = Main.tile[num2, num3 - 1];
76453 Tile tile2 = Main.tile[num2, num3 + 3];
76454 if (tile == null)
76455 {
76456 tile = new Tile();
76457 Main.tile[num2, num3 - 1] = tile;
76458 }
76459 if (tile2 == null)
76460 {
76461 tile2 = new Tile();
76462 Main.tile[num2, num3 + 3] = tile2;
76463 }
76464 if (!SolidTile(tile) || !SolidTile(tile2))
76465 {
76466 flag = true;
76467 destroyObject = true;
76468 DropDoorItem(i, j, num4);
76469 }
76470 int num5 = num2;
76471 if (num == -1)
76472 {
76473 num5 = num2 - 1;
76474 }
76475 for (int k = num5; k < num5 + 2; k++)
76476 {
76477 for (int l = num3; l < num3 + 3; l++)
76478 {
76479 if (!flag)
76480 {
76481 Tile tile3 = Main.tile[k, l];
76482 if (!tile3.active() || tile3.type != 11)
76483 {
76484 destroyObject = true;
76485 DropDoorItem(i, j, num4);
76486 flag = true;
76487 k = num5;
76488 l = num3;
76489 }
76490 }
76491 if (flag)
76492 {
76493 KillTile(k, l);
76494 }
76495 }
76496 }
76497 destroyObject = false;
76498 }
static bool destroyObject
Definition WorldGen.cs:1020
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
static void DropDoorItem(int x, int y, int doorStyle)

References Terraria.Tile.frameX, Terraria.Tile.frameY, Terraria.Enums.SolidTile, Terraria.DataStructures.Tile, and Terraria.Main.tile.