8 {
9 landingPoint =
default(
Point);
11 int num = 1;
12 int num2 = -1;
13 int num3 = 1;
14 int num4 = 0;
15 int num5 = 5000;
16 Vector2 vector =
new Vector2((
float)player.width * 0.5f, player.height);
17 int num6 = 40;
18 bool flag =
WorldGen.SolidOrSlopedTile(Main.tile[point.
X, point.
Y]);
19 int num7 = 0;
20 int num8 = 400;
21 while (num4 < num5 && num7 < num8)
22 {
23 num4++;
24 Tile tile = Main.tile[point.
X, point.
Y];
25 Tile tile2 = Main.tile[point.
X, point.Y + num3];
26 bool flag2 =
WorldGen.SolidOrSlopedTile(tile) || tile.liquid > 0;
27 bool flag3 =
WorldGen.SolidOrSlopedTile(tile2) || tile2.liquid > 0;
28 if (
IsInSolidTilesExtended(
new Vector2(point.
X * 16 + 8, point.
Y * 16 + 15) - vector, player.velocity, player.width, player.height, (
int)player.gravDir))
29 {
30 if (flag)
31 {
32 point.Y += num;
33 }
34 else
35 {
36 point.Y += num2;
37 }
38 continue;
39 }
40 if (flag2)
41 {
42 if (flag)
43 {
44 point.Y += num;
45 }
46 else
47 {
48 point.Y += num2;
49 }
50 continue;
51 }
52 flag = false;
53 if (!
IsInSolidTilesExtended(
new Vector2(point.
X * 16 + 8, point.
Y * 16 + 15 + 16) - vector, player.velocity, player.width, player.height, (
int)player.gravDir) && !flag3 && (
double)point.
Y < Main.worldSurface)
54 {
55 point.Y += num;
56 continue;
57 }
58 if (tile2.liquid > 0)
59 {
60 point.X += crawlOffsetX;
61 num7++;
62 continue;
63 }
65 {
66 point.X += crawlOffsetX;
67 num7++;
68 continue;
69 }
71 {
72 point.X += crawlOffsetX;
73 num7++;
74 continue;
75 }
77 {
78 break;
79 }
80 point.Y += num;
81 }
82 if (num4 == num5 || num7 >= num8)
83 {
84 return false;
85 }
87 {
88 return false;
89 }
90 landingPoint = point;
91 return true;
92 }
static bool TileIsDangerous(int x, int y)
static bool IsInSolidTilesExtended(Vector2 testPosition, Vector2 playerVelocity, int width, int height, int gravDir)