public static void SendWalker( Point startFloorPosition, int height, int direction, out int distanceCoveredInTiles, out Point lastIteratedFloorSpot, int maxDistance = 100, bool showDebug = false) { distanceCoveredInTiles = 0; --startFloorPosition.Y; lastIteratedFloorSpot = startFloorPosition; for (int index1 = 0; index1 < maxDistance; ++index1) { for (int index2 = 0; index2 < 3 && WorldGen.SolidTile3(startFloorPosition.X, startFloorPosition.Y); ++index2) { --startFloorPosition.Y; } int topY1; int bottomY1; Collision.ExpandVertically(startFloorPosition.X, startFloorPosition.Y, out topY1, out bottomY1, height, 2); ++topY1; --bottomY1; if (!WorldGen.SolidTile3(startFloorPosition.X, bottomY1 + 1)) { int topY2; int bottomY2; Collision.ExpandVertically(startFloorPosition.X, bottomY1, out topY2, out bottomY2, 0, 6); if (showDebug) { Dust.QuickBox(new Vector2((float)(startFloorPosition.X * 16 + 8), (float)(topY2 * 16)), new Vector2((float)(startFloorPosition.X * 16 + 8), (float)(bottomY2 * 16)), 1, Color.Blue, (Action <Dust>)null); } if (!WorldGen.SolidTile3(startFloorPosition.X, bottomY2)) { break; } } if (bottomY1 - topY1 >= height - 1) { if (showDebug) { Dust.QuickDust(startFloorPosition, Color.Green).scale = 1f; Dust.QuickBox(new Vector2((float)(startFloorPosition.X * 16 + 8), (float)(topY1 * 16)), new Vector2((float)(startFloorPosition.X * 16 + 8), (float)(bottomY1 * 16 + 16)), 1, Color.Red, (Action <Dust>)null); } distanceCoveredInTiles += direction; startFloorPosition.X += direction; startFloorPosition.Y = bottomY1; lastIteratedFloorSpot = startFloorPosition; if (Math.Abs(distanceCoveredInTiles) >= maxDistance) { break; } } else { break; } } distanceCoveredInTiles = Math.Abs(distanceCoveredInTiles); }
// Token: 0x0600004E RID: 78 RVA: 0x00008328 File Offset: 0x00006528 public static void SendWalker(Point startFloorPosition, int height, int direction, out int distanceCoveredInTiles, out Point lastIteratedFloorSpot, int maxDistance = 100, bool showDebug = false) { distanceCoveredInTiles = 0; startFloorPosition.Y--; lastIteratedFloorSpot = startFloorPosition; for (int i = 0; i < maxDistance; i++) { int num = 0; while (num < 3 && WorldGen.SolidTile3(startFloorPosition.X, startFloorPosition.Y)) { startFloorPosition.Y--; num++; } int num2; int num3; Collision.ExpandVertically(startFloorPosition.X, startFloorPosition.Y, out num2, out num3, height, 2); num2++; num3--; if (!WorldGen.SolidTile3(startFloorPosition.X, num3 + 1)) { int num4; int num5; Collision.ExpandVertically(startFloorPosition.X, num3, out num4, out num5, 0, 6); if (showDebug) { Dust.QuickBox(new Vector2((float)(startFloorPosition.X * 16 + 8), (float)(num4 * 16)), new Vector2((float)(startFloorPosition.X * 16 + 8), (float)(num5 * 16)), 1, Color.Blue, null); } if (!WorldGen.SolidTile3(startFloorPosition.X, num5)) { break; } } if (num3 - num2 < height - 1) { break; } if (showDebug) { Dust.QuickDust(startFloorPosition, Color.Green).scale = 1f; Dust.QuickBox(new Vector2((float)(startFloorPosition.X * 16 + 8), (float)(num2 * 16)), new Vector2((float)(startFloorPosition.X * 16 + 8), (float)(num3 * 16 + 16)), 1, Color.Red, null); } distanceCoveredInTiles += direction; startFloorPosition.X += direction; startFloorPosition.Y = num3; lastIteratedFloorSpot = startFloorPosition; if (Math.Abs(distanceCoveredInTiles) >= maxDistance) { break; } } distanceCoveredInTiles = Math.Abs(distanceCoveredInTiles); }
public static void SendWalker(Point startFloorPosition, int height, int direction, out int distanceCoveredInTiles, out Point lastIteratedFloorSpot, int maxDistance = 100, bool showDebug = false) { distanceCoveredInTiles = 0; startFloorPosition.Y--; lastIteratedFloorSpot = startFloorPosition; for (int i = 0; i < maxDistance; i++) { for (int j = 0; j < 3; j++) { if (!WorldGen.SolidTile3(startFloorPosition.X, startFloorPosition.Y)) { break; } startFloorPosition.Y--; } Collision.ExpandVertically(startFloorPosition.X, startFloorPosition.Y, out var topY, out var bottomY, height, 2); topY++; bottomY--; if (!WorldGen.SolidTile3(startFloorPosition.X, bottomY + 1)) { Collision.ExpandVertically(startFloorPosition.X, bottomY, out var topY2, out var bottomY2, 0, 6); if (showDebug) { Dust.QuickBox(new Vector2(startFloorPosition.X * 16 + 8, topY2 * 16), new Vector2(startFloorPosition.X * 16 + 8, bottomY2 * 16), 1, Color.Blue, null); } if (!WorldGen.SolidTile3(startFloorPosition.X, bottomY2)) { break; } } if (bottomY - topY < height - 1) { break; } if (showDebug) { Dust.QuickDust(startFloorPosition, Color.Green).scale = 1f; Dust.QuickBox(new Vector2(startFloorPosition.X * 16 + 8, topY * 16), new Vector2(startFloorPosition.X * 16 + 8, bottomY * 16 + 16), 1, Color.Red, null); } distanceCoveredInTiles += direction; startFloorPosition.X += direction; startFloorPosition.Y = bottomY; lastIteratedFloorSpot = startFloorPosition; if (Math.Abs(distanceCoveredInTiles) >= maxDistance) { break; } } distanceCoveredInTiles = Math.Abs(distanceCoveredInTiles); }
public static void SendWalker(Point startFloorPosition, int height, int direction, out int distanceCoveredInTiles, out Point lastIteratedFloorSpot, int maxDistance = 100, bool showDebug = false) { distanceCoveredInTiles = 0; // ISSUE: explicit reference operation // ISSUE: variable of a reference type Point& local1 = @startFloorPosition; // ISSUE: explicit reference operation int num1 = (^local1).Y - 1; // ISSUE: explicit reference operation (^local1).Y = (__Null) num1; lastIteratedFloorSpot = startFloorPosition; for (int index1 = 0; index1 < maxDistance; ++index1) { for (int index2 = 0; index2 < 3 && WorldGen.SolidTile3((int) startFloorPosition.X, (int) startFloorPosition.Y); ++index2) { // ISSUE: explicit reference operation // ISSUE: variable of a reference type Point& local2 = @startFloorPosition; // ISSUE: explicit reference operation int num2 = (^local2).Y - 1; // ISSUE: explicit reference operation (^local2).Y = (__Null) num2; } int topY1; int bottomY1; Collision.ExpandVertically((int) startFloorPosition.X, (int) startFloorPosition.Y, out topY1, out bottomY1, height, 2); ++topY1; --bottomY1; if (!WorldGen.SolidTile3((int) startFloorPosition.X, bottomY1 + 1)) { int topY2; int bottomY2; Collision.ExpandVertically((int) startFloorPosition.X, bottomY1, out topY2, out bottomY2, 0, 6); if (showDebug) Dust.QuickBox(new Vector2((float) (startFloorPosition.X * 16 + 8), (float) (topY2 * 16)), new Vector2((float) (startFloorPosition.X * 16 + 8), (float) (bottomY2 * 16)), 1, Color.get_Blue(), (Action<Dust>) null); if (!WorldGen.SolidTile3((int) startFloorPosition.X, bottomY2)) break; } if (bottomY1 - topY1 >= height - 1) { if (showDebug) { Dust.QuickDust(startFloorPosition, Color.get_Green()).scale = 1f; Dust.QuickBox(new Vector2((float) (startFloorPosition.X * 16 + 8), (float) (topY1 * 16)), new Vector2((float) (startFloorPosition.X * 16 + 8), (float) (bottomY1 * 16 + 16)), 1, Color.get_Red(), (Action<Dust>) null); } distanceCoveredInTiles += direction; // ISSUE: explicit reference operation // ISSUE: variable of a reference type Point& local2 = @startFloorPosition; // ISSUE: explicit reference operation int num2 = (^local2).X + direction; // ISSUE: explicit reference operation (^local2).X = (__Null) num2; startFloorPosition.Y = (__Null) bottomY1; lastIteratedFloorSpot = startFloorPosition; if (Math.Abs(distanceCoveredInTiles) >= maxDistance) break; } else break; } distanceCoveredInTiles = Math.Abs(distanceCoveredInTiles); }