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

◆ CloseDoor()

static bool Terraria.WorldGen.CloseDoor ( int i,
int j,
bool forced = false )
inlinestatic

Definition at line 23593 of file WorldGen.cs.

23594 {
23595 int num = 0;
23596 int num2 = i;
23597 int num3 = j;
23598 if (Main.tile[i, j] == null)
23599 {
23600 Main.tile[i, j] = new Tile();
23601 }
23602 int frameX = Main.tile[i, j].frameX;
23603 Tile tile = Main.tile[i, j];
23604 if (tile.type != 11)
23605 {
23606 return false;
23607 }
23608 int num4 = tile.frameY;
23609 int num5 = 0;
23610 int num6 = 0;
23611 while (num4 >= 54)
23612 {
23613 num4 -= 54;
23614 num5++;
23615 }
23616 if (frameX >= 72)
23617 {
23618 num5 += 36 * (frameX / 72);
23619 num6 += 54 * (frameX / 72);
23620 }
23621 num3 = j - num4 / 18;
23622 switch (frameX % 72)
23623 {
23624 case 0:
23625 num2 = i;
23626 num = 1;
23627 break;
23628 case 18:
23629 num2 = i - 1;
23630 num = 1;
23631 break;
23632 case 36:
23633 num2 = i + 1;
23634 num = -1;
23635 break;
23636 case 54:
23637 num2 = i;
23638 num = -1;
23639 break;
23640 }
23641 int num7 = num2;
23642 if (num == -1)
23643 {
23644 num7 = num2 - 1;
23645 }
23646 if (!forced)
23647 {
23648 for (int k = num3; k < num3 + 3; k++)
23649 {
23650 if (!Collision.EmptyTile(num2, k, ignoreTiles: true))
23651 {
23652 return false;
23653 }
23654 }
23655 }
23656 for (int l = num7; l < num7 + 2; l++)
23657 {
23658 for (int m = num3; m < num3 + 3; m++)
23659 {
23660 if (l == num2)
23661 {
23662 if (Main.tile[l, m] == null)
23663 {
23664 Main.tile[l, m] = new Tile();
23665 }
23666 Main.tile[l, m].type = 10;
23667 Main.tile[l, m].frameX = (short)(genRand.Next(3) * 18 + num6);
23668 }
23669 else
23670 {
23671 if (Main.tile[l, m] == null)
23672 {
23673 Main.tile[l, m] = new Tile();
23674 }
23675 Main.tile[l, m].active(active: false);
23676 }
23677 }
23678 }
23679 if (Main.netMode != 1 && Wiring.running)
23680 {
23681 Wiring.SkipWire(num2, num3);
23682 Wiring.SkipWire(num2, num3 + 1);
23683 Wiring.SkipWire(num2, num3 + 2);
23684 }
23685 for (int n = num2 - 1; n <= num2 + 1; n++)
23686 {
23687 for (int num8 = num3 - 1; num8 <= num3 + 2; num8++)
23688 {
23689 TileFrame(n, num8);
23690 }
23691 }
23692 SoundEngine.PlaySound(9, i * 16, j * 16);
23693 return true;
23694 }
static void PlaySound(int type, Vector2 position, int style=1)
static UnifiedRandom genRand
Definition WorldGen.cs:1215
static void TileFrame(int i, int j, bool resetFrame=false, bool noBreak=false)

References Terraria.Collision.EmptyTile(), Terraria.Tile.frameY, Terraria.Main.netMode, Terraria.Audio.SoundEngine.PlaySound(), Terraria.Wiring.running, Terraria.Wiring.SkipWire(), Terraria.DataStructures.Tile, Terraria.Main.tile, and Terraria.Tile.type.

Referenced by Terraria.NPC.AI_007_TownEntities(), Terraria.MessageBuffer.GetData(), Terraria.Wiring.HitWireSingle(), Terraria.Player.TileInteractionsUse(), and Terraria.GameContent.DoorOpeningHelper.CommonDoorOpeningInfoProvider.TryCloseDoor().