diff options
-rw-r--r-- | src/ft_get_map.c | 63 | ||||
-rw-r--r-- | src/ft_print_list.c | 8 |
2 files changed, 68 insertions, 3 deletions
diff --git a/src/ft_get_map.c b/src/ft_get_map.c index a45052c..1c672e6 100644 --- a/src/ft_get_map.c +++ b/src/ft_get_map.c @@ -3,18 +3,75 @@ #include <stddef.h> #include <stdlib.h> +/* static char */ +/* **ft_split_lines(char *line, int count) */ +/* { */ +/* } */ + +static int +ft_linecpy(char *line, char *mapL) +{ + size_t i; + + i = 0; + while (i < ft_strlen(line)) + { + mapL[i] = line[i]; + i += 2; + } + mapL[i + 1] = '\n'; + return (0); +} + +static int +ft_check_err(char *line, size_t size, t_win *wlist) +{ + size_t i; + + i = 1; + if (ft_strlen(line) != size) + return (-1); + while (i < ft_strlen(line) && line[i]) + { + if (line[i] != ' ') + return (ft_map_error(11, wlist)); + i += 2; + } + return (0); +} int ft_get_map(int fd, t_win *wlist) { size_t i; + size_t len; char *line; + char *mapL; - ft_free_words(wlist->clist->map, NULL); - i = 0; - if (!(wlist->clist->map = (char**)malloc(40 * sizeof(char*)))) + /* ft_free_words(wlist->clist->map, NULL); */ + /* if (!(wlist->clist->map = (char**)malloc(40 * sizeof(char*)))) */ + /* return (-1); */ + if (get_next_line(fd, &line) > 0) + { + len = ft_strlen(line); + ft_check_err(line, len, wlist); + if (!(mapL = (char*)malloc((len + 1) * sizeof(char)))) + ft_linecpy(line, mapL); + ft_memdel(line); + } + else return (-1); + i = 1; while (get_next_line(fd, &line) > 0) { + ft_check_err(line, len, wlist); + mapL = (char*)ft_nrealloc(mapL, ((len + 1) * i) * sizeof(char), (((len + 1) * i) + ft_strlen(line) + 1) * sizeof(char)); + ft_linecpy(line, mapL); + ft_memdel(line); + i++; } + mapL[(i * (len + 1)) + 1] = '\0'; + ft_printf("mapL [%s]\n", mapL); + wlist->clist->map = ft_split(mapL, '\n'); + ft_memdel(mapL); return (0); } diff --git a/src/ft_print_list.c b/src/ft_print_list.c index 547bdb2..f038740 100644 --- a/src/ft_print_list.c +++ b/src/ft_print_list.c @@ -4,6 +4,8 @@ void ft_print_list(t_win *wlist) { + size_t i; + ft_printf("x size [%d]\n", wlist->x_size); ft_printf("y size [%d]\n", wlist->y_size); ft_printf("North - [%s]\n", wlist->clist->no_tex_path); @@ -13,4 +15,10 @@ ft_print_list(t_win *wlist) ft_printf("Sprite [%s]\n", wlist->clist->sprite_path); ft_printf("F color [%d]\n", wlist->clist->f_color); ft_printf("C color [%d]\n", wlist->clist->c_color); + i = 0; + while (wlist->clist->map[i]) + { + ft_printf("Map Line %zu [%s]\n", i + 1, wlist->clist->map[i]); + i++; + } } |