parsing_grid_wall_check.c
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* parsing_grid_wall_check.c :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: ll-hotel <ll-hotel@student.42.fr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2024/07/29 19:32:43 by ll-hotel #+# #+# */ 9 /* Updated: 2024/10/20 16:21:10 by ll-hotel ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 #include "cub3D.h" 14 #include "ft_dprintf.h" 15 16 int cell_is_valid(int c); 17 int cell_is_player(int c); 18 static int check_walls(char **grid, u_long y, u_long x); 19 20 int grid_wall_check(char **grid) 21 { 22 u_long y; 23 u_long x; 24 25 y = 0; 26 while (grid[y]) 27 { 28 x = 0; 29 while (grid[y][x]) 30 if (!check_walls(grid, y, x++)) 31 return (0); 32 y += 1; 33 } 34 return (1); 35 } 36 37 static int check_walls(char **grid, u_long y, u_long x) 38 { 39 const char *errors[] = {"on a map edge", "adjacent to empty cell"}; 40 const char cell = grid[y][x]; 41 int error; 42 43 error = 0; 44 if (cell != FLOOR && !cell_is_player(cell)) 45 return (1); 46 else if (y == 0 || x == 0 || !grid[y + 1] || !grid[y][x + 1]) 47 error = 1; 48 else if (grid[y][x - 1] == EMPTY || grid[y][x + 1] == EMPTY || \ 49 grid[y - 1][x] == EMPTY || grid[y + 1][x] == EMPTY) 50 error = 2; 51 if (error) 52 { 53 ft_dprintf(2, "Error\nFloor/player cell %s at y=%u,x=%u\n", \ 54 errors[error - 1], y, x); 55 return (0); 56 } 57 return (1); 58 }