Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void WalkupHalfBricks(Entity codable, ref float gfxOffY, ref float stepSpeed)
- {
- if (codable.velocity.Y >= 0.0f)
- {
- int offset = 0;
- if (codable.velocity.X < 0.0f) offset = -1;
- if (codable.velocity.X > 0.0f) offset = 1;
- Vector2 pos = codable.position;
- pos.X += codable.velocity.X;
- int tileX = (int)(((double)pos.X + (double)(codable.width / 2) + (double)((codable.width / 2 + 1) * offset)) / 16.0);
- int tileY = (int)(((double)pos.Y + (double)codable.height - 1.0) / 16.0);
- if (Main.tile[tileX, tileY] == null) Main.tile[tileX, tileY] = new Tile();
- if (Main.tile[tileX, tileY - 1] == null) Main.tile[tileX, tileY - 1] = new Tile();
- if (Main.tile[tileX, tileY - 2] == null) Main.tile[tileX, tileY - 2] = new Tile();
- if (Main.tile[tileX, tileY - 3] == null) Main.tile[tileX, tileY - 3] = new Tile();
- if (Main.tile[tileX, tileY + 1] == null) Main.tile[tileX, tileY + 1] = new Tile();
- if (Main.tile[tileX - offset, tileY - 3] == null) Main.tile[tileX - offset, tileY - 3] = new Tile();
- 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]))))
- {
- float tileWorldY = (float)(tileY * 16);
- if (Main.tile[tileX, tileY].halfBrick())
- tileWorldY += 8.0f;
- if (Main.tile[tileX, tileY - 1].halfBrick())
- tileWorldY -= 8.0f;
- if ((double)tileWorldY < (double)pos.Y + (double)codable.height)
- {
- float tileWorldYHeight = pos.Y + (float)codable.height - tileWorldY;
- float heightNeeded = 16.1f;
- if ((double)tileWorldYHeight <= (double)heightNeeded)
- {
- gfxOffY += codable.position.Y + (float)codable.height - tileWorldY;
- codable.position.Y = tileWorldY - (float)codable.height;
- stepSpeed = (double)tileWorldYHeight >= 9.0 ? 2.0f : 1.0f;
- }
- }
- else
- gfxOffY = Math.Max(0f, gfxOffY - stepSpeed);
- }
- else
- gfxOffY = Math.Max(0f, gfxOffY - stepSpeed);
- }
- else
- gfxOffY = Math.Max(0f, gfxOffY - stepSpeed);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement