Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.14 KB | None | 0 0
  1. public static void WalkupHalfBricks(Entity codable, ref float gfxOffY, ref float stepSpeed)
  2.         {
  3.             if (codable.velocity.Y >= 0.0f)
  4.             {
  5.                 int offset = 0;
  6.                 if (codable.velocity.X < 0.0f) offset = -1;
  7.                 if (codable.velocity.X > 0.0f) offset = 1;
  8.                 Vector2 pos = codable.position;
  9.                 pos.X += codable.velocity.X;
  10.                 int tileX = (int)(((double)pos.X + (double)(codable.width / 2) + (double)((codable.width / 2 + 1) * offset)) / 16.0);
  11.                 int tileY = (int)(((double)pos.Y + (double)codable.height - 1.0) / 16.0);
  12.                 if (Main.tile[tileX, tileY] == null) Main.tile[tileX, tileY] = new Tile();
  13.                 if (Main.tile[tileX, tileY - 1] == null) Main.tile[tileX, tileY - 1] = new Tile();
  14.                 if (Main.tile[tileX, tileY - 2] == null) Main.tile[tileX, tileY - 2] = new Tile();
  15.                 if (Main.tile[tileX, tileY - 3] == null) Main.tile[tileX, tileY - 3] = new Tile();
  16.                 if (Main.tile[tileX, tileY + 1] == null) Main.tile[tileX, tileY + 1] = new Tile();
  17.                 if (Main.tile[tileX - offset, tileY - 3] == null) Main.tile[tileX - offset, tileY - 3] = new Tile();
  18.                 if ((double)(tileX * 16) < (double)pos.X + (double)codable.width && (double)(tileX * 16 + 16) > (double)pos.X && (Main.tile[tileX, tileY].nactive() && (int)Main.tile[tileX, tileY].slope() == 0 && ((int)Main.tile[tileX, tileY - 1].slope() == 0 && Main.tileSolid[(int)Main.tile[tileX, tileY].type]) && !Main.tileSolidTop[(int)Main.tile[tileX, tileY].type] || Main.tile[tileX, tileY - 1].halfBrick() && Main.tile[tileX, tileY - 1].nactive()) && ((!Main.tile[tileX, tileY - 1].nactive() || !Main.tileSolid[(int)Main.tile[tileX, tileY - 1].type] || Main.tileSolidTop[(int)Main.tile[tileX, tileY - 1].type] || Main.tile[tileX, tileY - 1].halfBrick() && (!Main.tile[tileX, tileY - 4].nactive() || !Main.tileSolid[(int)Main.tile[tileX, tileY - 4].type] || Main.tileSolidTop[(int)Main.tile[tileX, tileY - 4].type])) && ((!Main.tile[tileX, tileY - 2].nactive() || !Main.tileSolid[(int)Main.tile[tileX, tileY - 2].type] || Main.tileSolidTop[(int)Main.tile[tileX, tileY - 2].type]) && (!Main.tile[tileX, tileY - 3].nactive() || !Main.tileSolid[(int)Main.tile[tileX, tileY - 3].type] || Main.tileSolidTop[(int)Main.tile[tileX, tileY - 3].type]) && (!Main.tile[tileX - offset, tileY - 3].nactive() || !Main.tileSolid[(int)Main.tile[tileX - offset, tileY - 3].type]))))
  19.                 {
  20.                     float tileWorldY = (float)(tileY * 16);
  21.                     if (Main.tile[tileX, tileY].halfBrick())
  22.                         tileWorldY += 8.0f;
  23.                     if (Main.tile[tileX, tileY - 1].halfBrick())
  24.                         tileWorldY -= 8.0f;
  25.                     if ((double)tileWorldY < (double)pos.Y + (double)codable.height)
  26.                     {
  27.                         float tileWorldYHeight = pos.Y + (float)codable.height - tileWorldY;
  28.                         float heightNeeded = 16.1f;
  29.                         if ((double)tileWorldYHeight <= (double)heightNeeded)
  30.                         {
  31.                             gfxOffY += codable.position.Y + (float)codable.height - tileWorldY;
  32.                             codable.position.Y = tileWorldY - (float)codable.height;
  33.                             stepSpeed = (double)tileWorldYHeight >= 9.0 ? 2.0f : 1.0f;
  34.                         }
  35.                     }
  36.                     else
  37.                         gfxOffY = Math.Max(0f, gfxOffY - stepSpeed);
  38.                 }
  39.                 else
  40.                     gfxOffY = Math.Max(0f, gfxOffY - stepSpeed);
  41.             }
  42.             else
  43.                 gfxOffY = Math.Max(0f, gfxOffY - stepSpeed);
  44.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement