fix: Fixed inversion of x and y for blocking checks functions

This commit is contained in:
Theo Champion 2025-08-20 12:48:48 +02:00
parent b138fe8100
commit c643d9f22a
3 changed files with 31 additions and 31 deletions

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */ /* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/08/06 11:25:05 by kcolin #+# #+# */ /* Created: 2025/08/06 11:25:05 by kcolin #+# #+# */
/* Updated: 2025/08/06 11:49:00 by kcolin ### ########.fr */ /* Updated: 2025/08/20 12:47:52 by tchampio ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -17,22 +17,22 @@ static bool out_of_bounds(t_mapdata *data, int x, int y)
{ {
if (x < 0 if (x < 0
|| y < 0 || y < 0
|| x >= data->mapheight || y >= data->mapheight
|| y > (int)ft_strlen(data->map[x])) || x > (int)ft_strlen(data->map[y]))
return (true); return (true);
return (false); return (false);
} }
bool blocks_movement(t_mapdata *data, int x, int y) bool blocks_movement(t_mapdata *data, int x, int y)
{ {
if (out_of_bounds(data, x, y) || data->map[x][y] == '1') if (out_of_bounds(data, x, y) || data->map[y][x] == '1')
return (true); return (true);
return (false); return (false);
} }
bool blocks_view(t_mapdata *data, int x, int y) bool blocks_view(t_mapdata *data, int x, int y)
{ {
if (out_of_bounds(data, x, y) || data->map[x][y] == '1') if (out_of_bounds(data, x, y) || data->map[y][x] == '1')
return (true); return (true);
return (false); return (false);
} }

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */ /* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/08/08 14:06:37 by kcolin #+# #+# */ /* Created: 2025/08/08 14:06:37 by kcolin #+# #+# */
/* Updated: 2025/08/12 12:16:17 by kcolin ### ########.fr */ /* Updated: 2025/08/20 12:43:23 by tchampio ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -42,16 +42,16 @@ bool move_forward_step(t_cub3d_data *data, double mov_x, double mov_y)
blocks = 2; blocks = 2;
x_step = calc_step(mov_x); x_step = calc_step(mov_x);
y_step = calc_step(mov_y); y_step = calc_step(mov_y);
if (!blocks_movement(data->map, (int)data->player.y, if (!blocks_movement(data->map, (int)data->player.x,
(int)(data->player.x + x_step))) (int)(data->player.y + y_step)))
{ {
data->player.x += x_step; data->player.y += y_step;
blocks--; blocks--;
} }
if (!blocks_movement(data->map, if (!blocks_movement(data->map,
(int)(data->player.y + y_step), (int)data->player.x)) (int)(data->player.x + x_step), (int)data->player.y))
{ {
data->player.y += y_step; data->player.x += x_step;
blocks--; blocks--;
} }
return (blocks < 2); return (blocks < 2);
@ -66,16 +66,16 @@ bool move_backward_step(t_cub3d_data *data, double mov_x, double mov_y)
blocks = 2; blocks = 2;
x_step = calc_step(mov_x); x_step = calc_step(mov_x);
y_step = calc_step(mov_y); y_step = calc_step(mov_y);
if (!blocks_movement(data->map, (int)data->player.y, if (!blocks_movement(data->map, (int)data->player.x,
(int)(data->player.x - x_step))) (int)(data->player.y - y_step)))
{ {
data->player.x -= x_step; data->player.y -= y_step;
blocks--; blocks--;
} }
if (!blocks_movement(data->map, if (!blocks_movement(data->map,
(int)(data->player.y - y_step), (int)data->player.x)) (int)(data->player.x - x_step), (int)data->player.y))
{ {
data->player.y -= y_step; data->player.x -= x_step;
blocks--; blocks--;
} }
return (blocks < 2); return (blocks < 2);
@ -90,16 +90,16 @@ bool move_strafe_left_step(t_cub3d_data *data, double mov_x, double mov_y)
blocks = 2; blocks = 2;
x_step = calc_step(mov_x); x_step = calc_step(mov_x);
y_step = calc_step(mov_y); y_step = calc_step(mov_y);
if (!blocks_movement(data->map, (int)data->player.y, if (!blocks_movement(data->map, (int)data->player.x,
(int)(data->player.x - x_step))) (int)(data->player.y - y_step)))
{ {
data->player.x -= x_step; data->player.y -= y_step;
blocks--; blocks--;
} }
if (!blocks_movement(data->map, if (!blocks_movement(data->map,
(int)(data->player.y - y_step), (int)data->player.x)) (int)(data->player.x - x_step), (int)data->player.y))
{ {
data->player.y -= y_step; data->player.x -= x_step;
blocks--; blocks--;
} }
return (blocks < 2); return (blocks < 2);
@ -114,17 +114,17 @@ bool move_strafe_right_step(t_cub3d_data *data, double mov_x, double mov_y)
blocks = 2; blocks = 2;
x_step = calc_step(mov_x); x_step = calc_step(mov_x);
y_step = calc_step(mov_y); y_step = calc_step(mov_y);
if (!blocks_movement(data->map, (int)data->player.y, if (!blocks_movement(data->map, (int)data->player.x,
(int)(data->player.x + x_step))) (int)(data->player.y + y_step)))
{
data->player.x += x_step;
blocks--;
}
if (!blocks_movement(data->map,
(int)(data->player.y + y_step), (int)data->player.x))
{ {
data->player.y += y_step; data->player.y += y_step;
blocks--; blocks--;
} }
if (!blocks_movement(data->map,
(int)(data->player.x + x_step), (int)data->player.y))
{
data->player.x += x_step;
blocks--;
}
return (blocks < 2); return (blocks < 2);
} }

View file

@ -6,7 +6,7 @@
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */ /* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/07/31 11:55:41 by kcolin #+# #+# */ /* Created: 2025/07/31 11:55:41 by kcolin #+# #+# */
/* Updated: 2025/08/06 14:02:40 by tchampio ### ########.fr */ /* Updated: 2025/08/20 12:48:06 by tchampio ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -70,7 +70,7 @@ void calculate_wall_dist(t_ray *ray, t_mapdata *map)
ray->map_y += ray->step_y; ray->map_y += ray->step_y;
ray->side = SOUTH; ray->side = SOUTH;
} }
if (blocks_view(map, ray->map_y, ray->map_x)) if (blocks_view(map, ray->map_x, ray->map_y))
break ; break ;
} }
if (ray->side == NORTH) if (ray->side == NORTH)