/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* map2.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/06 19:06:48 by erey-bet #+# #+# */ /* Updated: 2023/01/06 19:06:51 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include "../so_long_bonus.h" int init_fd_map(char *argv[], char **tmp_map, char **map, int *i) { int fd; fd = open(argv[1], O_RDONLY); if (fd == -1) return (-1); *tmp_map = NULL; *map = NULL; *i = 0; return (fd); } void read_map(char *argv[], t_data *data) { char *tmp_map; char *map; int i; int fd; i = ft_strlen(argv[1]); if (argv[1][i - 1] != 'r' || argv[1][i - 2] != 'e' || argv[1][i - 3] != 'b' || argv[1][i - 4] != '.') return ; fd = init_fd_map(argv, &tmp_map, &map, &i); if (fd == -1) return ; while (i == 0 || tmp_map != NULL) { tmp_map = get_next_line(fd); if (tmp_map && map) map = ft_strjoin_free(map, tmp_map, 1); else if (tmp_map) map = ft_strdup(tmp_map); free(tmp_map); i++; } data->map = ft_split(map, '\n'); data->h_map = i - 1; free(map); } int too_much(t_data *data) { int i; int y; int nb; nb = 0; i = -1; while (data->map[++i]) { y = -1; while (data->map[i][++y]) { if (data->map[i][y] != 'P' && data->map[i][y] != '1' && data->map[i][y] != 'C' && data->map[i][y] != 'E' && data->map[i][y] != 'e' && data->map[i][y] != '0') return (0); if (data->map[i][y] == 'P' || data->map[i][y] == 'E') nb++; } } if (nb > 2) return (0); return (1); }