Exemple #1
0
 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);
 }
Exemple #2
0
 // 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);
 }