/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* map_verify.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: kdx width = 0; map->height = 0; while (*data != '\0') { if (*data++ == '\n') { if (map->width == 0) map->width = prev_newline; if (prev_newline == 0 || map->width != prev_newline) return (1); prev_newline = 0; map->height++; } else prev_newline++; } if (prev_newline != 0 || map->width == 0 || map->height == 0) return (1); return (0); } static t_err valid_borders(t_map *map) { size_t x; size_t y; x = 0; while (x < map->width) { if (map->data[x] != TILE_WALL || map_get(map, x * TSIZE, (map->height - 1) * TSIZE) != TILE_WALL) return (ERR_OPEN_BORDER); x += 1; } y = 0; while (y < map->height) { if (map_get(map, 0, y * TSIZE) != TILE_WALL || map_get(map, (map->width - 1) * TSIZE, y * TSIZE) != TILE_WALL) return (ERR_OPEN_BORDER); y += 1; } return (ERR_NONE); } t_err map_verify(t_map *map, const unsigned char *data) { if (only_chars(data)) return (ERR_INVALID_CHAR); if (find_uniques(data)) return (find_uniques(data)); if (sensible_dimensions(map, data)) return (ERR_WRONG_DIMENSION); if (valid_borders(map)) return (ERR_OPEN_BORDER); if (!map_pathfind(map)) return (ERR_NO_PATH); return (ERR_NONE); }