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

◆ CanHit() [3/4]

static bool Terraria.Collision.CanHit ( Point Position1,
int Width1,
int Height1,
Point Position2,
int Width2,
int Height2 )
inlinestatic

Definition at line 615 of file Collision.cs.

616 {
617 //IL_0000: Unknown result type (might be due to invalid IL or missing references)
618 //IL_000e: Unknown result type (might be due to invalid IL or missing references)
619 //IL_001c: Unknown result type (might be due to invalid IL or missing references)
620 //IL_002b: Unknown result type (might be due to invalid IL or missing references)
621 int num = (Position1.X + Width1 / 2) / 16;
622 int num2 = (Position1.Y + Height1 / 2) / 16;
623 int num3 = (Position2.X + Width2 / 2) / 16;
624 int num4 = (Position2.Y + Height2 / 2) / 16;
625 if (num <= 1)
626 {
627 num = 1;
628 }
629 if (num >= Main.maxTilesX)
630 {
631 num = Main.maxTilesX - 1;
632 }
633 if (num3 <= 1)
634 {
635 num3 = 1;
636 }
637 if (num3 >= Main.maxTilesX)
638 {
639 num3 = Main.maxTilesX - 1;
640 }
641 if (num2 <= 1)
642 {
643 num2 = 1;
644 }
645 if (num2 >= Main.maxTilesY)
646 {
647 num2 = Main.maxTilesY - 1;
648 }
649 if (num4 <= 1)
650 {
651 num4 = 1;
652 }
653 if (num4 >= Main.maxTilesY)
654 {
655 num4 = Main.maxTilesY - 1;
656 }
657 try
658 {
659 do
660 {
661 int num5 = Math.Abs(num - num3);
662 int num6 = Math.Abs(num2 - num4);
663 if (num == num3 && num2 == num4)
664 {
665 return true;
666 }
667 if (num5 > num6)
668 {
669 num = ((num >= num3) ? (num - 1) : (num + 1));
670 if (Main.tile[num, num2 - 1] == null)
671 {
672 return false;
673 }
674 if (Main.tile[num, num2 + 1] == null)
675 {
676 return false;
677 }
678 if (!Main.tile[num, num2 - 1].inActive() && Main.tile[num, num2 - 1].active() && Main.tileSolid[Main.tile[num, num2 - 1].type] && !Main.tileSolidTop[Main.tile[num, num2 - 1].type] && Main.tile[num, num2 - 1].slope() == 0 && !Main.tile[num, num2 - 1].halfBrick() && !Main.tile[num, num2 + 1].inActive() && Main.tile[num, num2 + 1].active() && Main.tileSolid[Main.tile[num, num2 + 1].type] && !Main.tileSolidTop[Main.tile[num, num2 + 1].type] && Main.tile[num, num2 + 1].slope() == 0 && !Main.tile[num, num2 + 1].halfBrick())
679 {
680 return false;
681 }
682 }
683 else
684 {
685 num2 = ((num2 >= num4) ? (num2 - 1) : (num2 + 1));
686 if (Main.tile[num - 1, num2] == null)
687 {
688 return false;
689 }
690 if (Main.tile[num + 1, num2] == null)
691 {
692 return false;
693 }
694 if (!Main.tile[num - 1, num2].inActive() && Main.tile[num - 1, num2].active() && Main.tileSolid[Main.tile[num - 1, num2].type] && !Main.tileSolidTop[Main.tile[num - 1, num2].type] && Main.tile[num - 1, num2].slope() == 0 && !Main.tile[num - 1, num2].halfBrick() && !Main.tile[num + 1, num2].inActive() && Main.tile[num + 1, num2].active() && Main.tileSolid[Main.tile[num + 1, num2].type] && !Main.tileSolidTop[Main.tile[num + 1, num2].type] && Main.tile[num + 1, num2].slope() == 0 && !Main.tile[num + 1, num2].halfBrick())
695 {
696 return false;
697 }
698 }
699 if (Main.tile[num, num2] == null)
700 {
701 return false;
702 }
703 }
704 while (Main.tile[num, num2].inActive() || !Main.tile[num, num2].active() || !Main.tileSolid[Main.tile[num, num2].type] || Main.tileSolidTop[Main.tile[num, num2].type]);
705 return false;
706 }
707 catch
708 {
709 return false;
710 }
711 }

References Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Main.tile, Terraria.Main.tileSolid, and Terraria.Main.tileSolidTop.