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

◆ HurtTiles()

static HurtTile Terraria.Collision.HurtTiles ( Vector2 Position,
int Width,
int Height,
Player player )
inlinestatic

Definition at line 2589 of file Collision.cs.

2590 {
2591 int num = (int)(Position.X / 16f) - 1;
2592 int num2 = (int)((Position.X + (float)Width) / 16f) + 2;
2593 int num3 = (int)(Position.Y / 16f) - 1;
2594 int num4 = (int)((Position.Y + (float)Height) / 16f) + 2;
2595 if (num < 0)
2596 {
2597 num = 0;
2598 }
2599 if (num2 > Main.maxTilesX)
2600 {
2601 num2 = Main.maxTilesX;
2602 }
2603 if (num3 < 0)
2604 {
2605 num3 = 0;
2606 }
2607 if (num4 > Main.maxTilesY)
2608 {
2609 num4 = Main.maxTilesY;
2610 }
2611 Vector2 vector = default(Vector2);
2612 HurtTile result;
2613 for (int i = num; i < num2; i++)
2614 {
2615 for (int j = num3; j < num4; j++)
2616 {
2617 Tile tile = Main.tile[i, j];
2618 if (tile == null || tile.inActive() || !tile.active())
2619 {
2620 continue;
2621 }
2622 vector.X = i * 16;
2623 vector.Y = j * 16;
2624 int num5 = 16;
2625 if (tile.halfBrick())
2626 {
2627 vector.Y += 8f;
2628 num5 -= 8;
2629 }
2630 int num6 = 0;
2631 if (TileID.Sets.Suffocate[tile.type])
2632 {
2633 num6 = 2;
2634 }
2635 if (Position.X + (float)Width - (float)num6 < vector.X || Position.X + (float)num6 > vector.X + 16f || Position.Y + (float)Height - (float)num6 < vector.Y - 0.5f || Position.Y + (float)num6 > vector.Y + (float)num5 + 0.5f || !CanTileHurt(tile.type, i, j, player))
2636 {
2637 continue;
2638 }
2639 if (tile.slope() > 0)
2640 {
2641 if (num6 > 0)
2642 {
2643 continue;
2644 }
2645 int num7 = 0;
2646 if (tile.rightSlope() && Position.X > vector.X)
2647 {
2648 num7++;
2649 }
2650 if (tile.leftSlope() && Position.X + (float)Width < vector.X + 16f)
2651 {
2652 num7++;
2653 }
2654 if (tile.bottomSlope() && Position.Y > vector.Y)
2655 {
2656 num7++;
2657 }
2658 if (tile.topSlope() && Position.Y + (float)Height < vector.Y + (float)num5)
2659 {
2660 num7++;
2661 }
2662 if (num7 == 2)
2663 {
2664 continue;
2665 }
2666 }
2667 result = default(HurtTile);
2668 result.type = tile.type;
2669 result.x = i;
2670 result.y = j;
2671 return result;
2672 }
2673 }
2674 result = default(HurtTile);
2675 result.type = -1;
2676 return result;
2677 }
static bool CanTileHurt(ushort type, int i, int j, Player player)
static bool[] Suffocate
Definition TileID.cs:281

References Terraria.Tile.active(), Terraria.Tile.bottomSlope(), Terraria.Collision.CanTileHurt(), Terraria.Tile.halfBrick(), Terraria.Tile.inActive(), Terraria.Tile.leftSlope(), Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Tile.rightSlope(), Terraria.Tile.slope(), Terraria.ID.TileID.Sets.Suffocate, Terraria.Main.tile, Terraria.Tile.topSlope(), and Terraria.Tile.type.

Referenced by Terraria.Collision.AnyHurtingTiles(), and Terraria.Player.GetHurtTile().