From b30dda9c62cdd36796a45bbbf08f160486b71d7c Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Fri, 20 Jun 2025 19:45:40 +0200 Subject: [PATCH] fixed some checking --- includes/maputils.h | 2 + .../wrongmap_invalid_colors.cub | 0 ressources/bad_maps/wrongmap_invalidchars.cub | 22 +++++++ .../{ => bad_maps}/wrongmap_middlemap.cub | 0 ressources/bad_maps/wrongmap_wrongcolors.cub | 23 +++++++ ressources/{ => good_maps}/testmap.cub | 2 +- src/map/map_checker.c | 61 ++++++++++++------- 7 files changed, 87 insertions(+), 23 deletions(-) rename ressources/{ => bad_maps}/wrongmap_invalid_colors.cub (100%) create mode 100644 ressources/bad_maps/wrongmap_invalidchars.cub rename ressources/{ => bad_maps}/wrongmap_middlemap.cub (100%) create mode 100644 ressources/bad_maps/wrongmap_wrongcolors.cub rename ressources/{ => good_maps}/testmap.cub (94%) diff --git a/includes/maputils.h b/includes/maputils.h index 4ae1580..b96fb8d 100644 --- a/includes/maputils.h +++ b/includes/maputils.h @@ -27,6 +27,8 @@ typedef struct s_mapdata char **mapflood; int skipped_lines; bool isvalid; + int startx; + int starty; char error[1024]; } t_mapdata; diff --git a/ressources/wrongmap_invalid_colors.cub b/ressources/bad_maps/wrongmap_invalid_colors.cub similarity index 100% rename from ressources/wrongmap_invalid_colors.cub rename to ressources/bad_maps/wrongmap_invalid_colors.cub diff --git a/ressources/bad_maps/wrongmap_invalidchars.cub b/ressources/bad_maps/wrongmap_invalidchars.cub new file mode 100644 index 0000000..f17dc3a --- /dev/null +++ b/ressources/bad_maps/wrongmap_invalidchars.cub @@ -0,0 +1,22 @@ +NO ./path_to_the_north_texture +SO ./path_to_the_south_texture +WE ./path_to_the_west_texture +EA ./path_to_the_east_texture + +F 220,100,0 +C 225,30,0 + + 1111111111111111111111111 + 1000000000110000000000001 + 1011000001110000000000001 + 1001000000000000000000001 +111111111011000001110000000000001 +100H0000001100000111011111D111111 +11110111111111011100000010001 +11110111111111011101010010001 +11000000110101011100000010001 +10000000000000001100000010001 +10000000000000001101010010001 +11000001110101011111011110N0111 +11110111 1110101 101111010001 +11111111 1111111 111111111111 diff --git a/ressources/wrongmap_middlemap.cub b/ressources/bad_maps/wrongmap_middlemap.cub similarity index 100% rename from ressources/wrongmap_middlemap.cub rename to ressources/bad_maps/wrongmap_middlemap.cub diff --git a/ressources/bad_maps/wrongmap_wrongcolors.cub b/ressources/bad_maps/wrongmap_wrongcolors.cub new file mode 100644 index 0000000..9d6cf1d --- /dev/null +++ b/ressources/bad_maps/wrongmap_wrongcolors.cub @@ -0,0 +1,23 @@ +NO ./path_to_the_north_texture +SO ./path_to_the_south_texture +WE ./path_to_the_west_texture +EA ./path_to_the_east_texture + +F this_color_doesnt_exists_wtf +C 225,30,0 + + 111111111111111111111111 +1000000000110000000000001 +1011000001110000000000001 +1001000000000000000000001 +111111111011000001110000000000001 +100000000011000001110111111111111 +11110111111111011100000010001 +11110111111111011101010010001 +11000000110101011100000010001 +10000000000000001100000010001 +10000000000000001101010010001 +11000001110101011111011110N0111 +11110111 1110101 101111010001 +11111111 1111111 111111111111 + diff --git a/ressources/testmap.cub b/ressources/good_maps/testmap.cub similarity index 94% rename from ressources/testmap.cub rename to ressources/good_maps/testmap.cub index 4660b9f..65aa99e 100644 --- a/ressources/testmap.cub +++ b/ressources/good_maps/testmap.cub @@ -11,7 +11,7 @@ C 225,30,0 1011000001110000000000001 1001000000000000000000001 111111111011000001110000000000001 -10000000001100000111011111D111111 +100000000011000001110111110111111 11110111111111011100000010001 11110111111111011101010010001 11000000110101011100000010001 diff --git a/src/map/map_checker.c b/src/map/map_checker.c index 648d94e..7cc727c 100644 --- a/src/map/map_checker.c +++ b/src/map/map_checker.c @@ -6,7 +6,7 @@ /* By: tchampio map[i])) - return (true); + return (false); i++; } return (true); } -bool check_bare_minimum(char **map) -{ - int i; - - i = 0; -} - -bool flood_fill(char **mapflood) -{ - return (false); -} - void print_map(char **map) { int i; @@ -277,6 +265,35 @@ void print_map(char **map) ft_printf("(%p) %s", map[i], map[i]); } +bool check_bare_minimum(t_mapdata *map) +{ + int i; + int spawncount; + int j; + + i = 0; + spawncount = 0; + while (map->map[i]) + { + j = 0; + while (map->map[i][j]) + { + if (map->map[i][j] == 'N' || map->map[i][j] == 'E' + || map->map[i][j] == 'S' || map->map[i][j] == 'W') + { + spawncount++; + map->startx = j; + map->starty = i; + } + j++; + } + i++; + } + if (spawncount == 1) + return (true); + return (false); +} + bool check_cubfile(char *file, t_mapdata *map) { int fd; @@ -295,10 +312,10 @@ bool check_cubfile(char *file, t_mapdata *map) if (!check_walls(map)) return (close(fd), ft_strlcpy(map->error, "Map is malformed (invalid chars or missing walls)", 51), false); - if (!check_bare_minimum(map->map)) + if (!check_bare_minimum(map)) return (close(fd), false); - if (!flood_fill(map->mapflood)) - return (close(fd), ft_strlcpy(map->error, - "Map is not possible (flood fill failed)", 41), false); + // if (!flood_fill(map->mapflood)) + // return (close(fd), ft_strlcpy(map->error, + // "Map is not possible (flood fill failed)", 41), false); return (true); }