From ff64788b9450a497cb289b7ca611813dcd673f84 Mon Sep 17 00:00:00 2001 From: kinou-p Date: Wed, 15 Jun 2022 15:30:59 +0200 Subject: [PATCH] set img in ft_exit to quit_game --- includes/Cub3D.h | 11 +++----- srcs/cast_ray.c | 4 +-- srcs/get_texture_array.c | 27 +++++++++---------- srcs/main.c | 10 +++---- srcs/parsing/check_color_texture.c | 32 +++++++++++------------ srcs/parsing/parse_map.c | 42 +++++++++++++++--------------- srcs/utils.c | 9 ++++--- 7 files changed, 65 insertions(+), 70 deletions(-) diff --git a/includes/Cub3D.h b/includes/Cub3D.h index b7d51a1..2a19225 100644 --- a/includes/Cub3D.h +++ b/includes/Cub3D.h @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/02/13 16:30:59 by apommier #+# #+# */ -/* Updated: 2022/06/15 14:40:14 by apommier ### ########.fr */ +/* Updated: 2022/06/15 15:29:25 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,7 +48,6 @@ typedef struct all_wall_texture{ unsigned char *east; unsigned char *west; unsigned char *south; - unsigned char *basic; } sprite; typedef struct s_color{ @@ -86,10 +85,8 @@ typedef struct player_position typedef struct need_to_be_free { - char **one_tab; - char **two_tab; - char *one_str; - int fd_one; + char **tab; + int fd; } to_free; typedef struct s_data { @@ -112,7 +109,7 @@ int update_pos(t_data *img); char *transform_map(char **double_map, t_data *img); int check_texture_color(char **tab, t_data *img); int check_map(char **av, t_data *img); -void ft_exit(char *str); +void ft_exit(char *str, t_data *img); void set_back(t_data *img); unsigned char *get_texture(char type, char *path, t_data *img); int get_color(char one, char two, char three); diff --git a/srcs/cast_ray.c b/srcs/cast_ray.c index 4c34a28..709680e 100644 --- a/srcs/cast_ray.c +++ b/srcs/cast_ray.c @@ -134,8 +134,6 @@ void draw_ray3d(t_data *img, ray ray) color = get_color(img->map.texture.west[ray.pixel], img->map.texture.west[ray.pixel + 1], img->map.texture.west[ray.pixel + 2]); else if (ray.texture_type == 'E' && img->map.texture.east) color = get_color(img->map.texture.east[ray.pixel], img->map.texture.east[ray.pixel + 1], img->map.texture.east[ray.pixel + 2]); - else - color = get_color(img->map.texture.basic[ray.pixel], img->map.texture.basic[ray.pixel + 1], img->map.texture.basic[ray.pixel + 2]);//here read } else color = 0; @@ -177,7 +175,7 @@ void draw_ray(t_data *img) new_img = mlx_new_image(img->mlx, 960, 512); if (!new_img) - ft_exit("Error\nmlx_new_image failed\n"); + ft_exit("Error\nmlx_new_image failed\n", img); //printf("newimg= %p\n", new_img); img->buffer = mlx_get_data_addr(new_img, &bits_per_pixel, &size_line, &endian); //img->buffer// = (char*)new_img; diff --git a/srcs/get_texture_array.c b/srcs/get_texture_array.c index ac858ac..c54c93c 100644 --- a/srcs/get_texture_array.c +++ b/srcs/get_texture_array.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/06 16:10:11 by apommier #+# #+# */ -/* Updated: 2022/06/15 14:36:04 by apommier ### ########.fr */ +/* Updated: 2022/06/15 15:30:23 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,25 +17,25 @@ void put_texture_in_struct(char type, unsigned char *texture, t_data *img) if (type == 'N') { if (img->map.texture.north) - ft_exit("Error\nMultiple declaration of texture\n"); + ft_exit("Error\nMultiple declaration of texture\n", img); img->map.texture.north = texture; } if (type == 'S') { if (img->map.texture.south) - ft_exit("Error\nMultiple declaration of texture\n"); + ft_exit("Error\nMultiple declaration of texture\n", img); img->map.texture.south = texture; } if (type == 'W') { if (img->map.texture.west) - ft_exit("Error\nMultiple declaration of texture\n"); + ft_exit("Error\nMultiple declaration of texture\n", img); img->map.texture.west = texture; } if (type == 'E') { if (img->map.texture.east) - ft_exit("Error\nMultiple declaration of texture\n"); + ft_exit("Error\nMultiple declaration of texture\n", img); img->map.texture.east = texture; } } @@ -69,12 +69,12 @@ unsigned char *get_texture(char type, char *path, t_data *img)//change in list if (fd >= 0) { close(fd); - ft_exit("Error\nTexture path is a directory\n"); + ft_exit("Error\nTexture path is a directory\n", img); } fd = open(path, O_RDONLY); if (fd == -1) quit_game(img); - img->to_be_free.fd_one = fd; + img->to_be_free.fd = fd; while (swap || !count) { if (swap) @@ -83,17 +83,16 @@ unsigned char *get_texture(char type, char *path, t_data *img)//change in list swap = get_next_line(fd); } close(fd); - img->to_be_free.fd_one = -1; - printf("count= %d\n", count); + img->to_be_free.fd = -1; if (count != 12291) - ft_exit("Error\n Bad texture file\n"); + ft_exit("Error\n Bad texture file\n", img); ret = ft_calloc(sizeof(char), count); if (!ret) quit_game(img); fd = open(path, O_RDONLY); if (fd == -1) - ft_exit("Error\nBad texture file"); - img->to_be_free.fd_one = fd; + ft_exit("Error\nBad texture file", img); + img->to_be_free.fd = fd; count = 0; while (swap || !count) { @@ -115,12 +114,12 @@ unsigned char *get_texture(char type, char *path, t_data *img)//change in list { //printf("isnbr= %d swap= %s ft_atoi(swap)= ---%ld--- strlen= %ld\n",is_nbr(swap) ,swap , ft_atoi(swap), ft_strlen(swap) ); free(ret); - ft_exit("Error\nBad texture file\n"); + ft_exit("Error\nBad texture file\n", img); } count++; } close(fd); - img->to_be_free.fd_one = -1; + img->to_be_free.fd = -1; put_texture_in_struct(type, ret, img); return (ret); } diff --git a/srcs/main.c b/srcs/main.c index 7aa3a57..7fa9c00 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/02/13 16:42:55 by apommier #+# #+# */ -/* Updated: 2022/06/15 15:19:08 by apommier ### ########.fr */ +/* Updated: 2022/06/15 15:25:12 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,8 +27,8 @@ void set_map(t_data *img) img->player.side = 0; img->player.angle_side = 0; img->player.shift = 0; - img->to_be_free.one_tab = NULL; - img->to_be_free.fd_one = -1; + img->to_be_free.tab = NULL; + img->to_be_free.fd = -1; } int key_pressed(int type, t_data *img) @@ -83,7 +83,7 @@ int main(int argc, char **argv) t_data img; if (argc != 2) - ft_error("Error: bad number of arguments, only need a map"); + ft_error("Error\nBad number of arguments, only need a map\n"); set_map(&img); img.player.x = 0; img.player.y = 0; @@ -91,7 +91,7 @@ int main(int argc, char **argv) return (0); img.mlx = mlx_init(); if (!img.mlx) - ft_error("Error: mlx_init fail"); + ft_exit("Error\nmlx_init fail\n", &img); img.mlx_win = mlx_new_window(img.mlx, 960, 512, "Cub3D"); img.player.vx = cos(deg_to_rad(img.player.angle)); img.player.vy = sin(deg_to_rad(img.player.angle)); diff --git a/srcs/parsing/check_color_texture.c b/srcs/parsing/check_color_texture.c index 2f2679c..b2ca5e3 100644 --- a/srcs/parsing/check_color_texture.c +++ b/srcs/parsing/check_color_texture.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/11 01:00:17 by apommier #+# #+# */ -/* Updated: 2022/06/15 12:40:19 by apommier ### ########.fr */ +/* Updated: 2022/06/15 15:27:14 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -75,28 +75,28 @@ void set_texture_file(char *str, t_data *img, char c) if (c == 'N') { if (str[index + 1] != 'O' || str[index + 2] != ' ') - ft_exit("Error\nBad syntax in map file\n"); + ft_exit("Error\nBad syntax in map file\n", img); } if (c == 'S') { if (str[index + 1] != 'O' || str[index + 2] != ' ') - ft_exit("Error\nBad syntax in map file\n"); + ft_exit("Error\nBad syntax in map file\n", img); } if (c == 'W') { if (str[index + 1] != 'E' || str[index + 2] != ' ') - ft_exit("Error\nBad syntax in map file\n"); + ft_exit("Error\nBad syntax in map file\n", img); } if (c == 'E') { if (str[index + 1] != 'A' || str[index + 2] != ' ') - ft_exit("Error\nBad syntax in map file\n"); + ft_exit("Error\nBad syntax in map file\n", img); } //printf("path= -%s-\n", str + index + 3); get_texture(c, str + index + 3, img); } -void check_value(char **tab) +void check_value(char **tab, t_data *img) { int i; int j; @@ -108,22 +108,22 @@ void check_value(char **tab) while (tab[i][j]) { if (!ft_isdigit(tab[i][j])) - ft_exit("Error\nBad syntax in map file (RGB)2\n"); + ft_exit("Error\nBad syntax in map file (RGB)2\n", img); j++; } i++; } } -void set_color_utils(char **tab, color *rgb) +void set_color_utils(char **tab, color *rgb, t_data *img) { if (ft_strlen(tab[0]) > 3 || !(ft_atoi(tab[0]) >= 0 && ft_atoi(tab[0]) <= 255)) - ft_exit("Error\nBad syntax in map file (RGB)\n"); + ft_exit("Error\nBad syntax in map file (RGB)\n", img); if (ft_strlen(tab[0]) > 3 || !(ft_atoi(tab[1]) >= 0 && ft_atoi(tab[1]) <= 255)) - ft_exit("Error\nBad syntax in map file (RGB)\n"); + ft_exit("Error\nBad syntax in map file (RGB)\n", img); if (ft_strlen(tab[0]) > 3 || !(ft_atoi(tab[2]) >= 0 && ft_atoi(tab[2]) <= 255)) - ft_exit("Error\nBad syntax in map file (RGB)\n"); - check_value(tab); + ft_exit("Error\nBad syntax in map file (RGB)\n", img); + check_value(tab, img); rgb->r = (unsigned char)ft_atoi(tab[0]); rgb->g = (unsigned char)ft_atoi(tab[1]); rgb->b = (unsigned char)ft_atoi(tab[2]); @@ -148,9 +148,9 @@ void set_color(char *str, t_data *img) // ft_exit("Error\nBad syntax in map file (RGB) 1\n"); //print_double_fd(tab, 1); if (c == 'F') - set_color_utils(tab, &img->map.floor); + set_color_utils(tab, &img->map.floor, img); if (c == 'C') - set_color_utils(tab, &img->map.sky); + set_color_utils(tab, &img->map.sky, img); free_double(tab); } @@ -168,7 +168,7 @@ int check_texture_color(char **tab, t_data *img) while (next_space(tab[next], 0) != '1' && tab[next]) next++; if (!tab[next]) - ft_exit("Error\nBad syntax in map file\n"); + ft_exit("Error\nBad syntax in map file\n", img); while (index < next) { if (next_space(tab[index], 0) == 'N' || next_space(tab[index], 0) == 'S' || next_space(tab[index], 0) == 'W' || next_space(tab[index], 0) == 'E') @@ -179,7 +179,7 @@ int check_texture_color(char **tab, t_data *img) } else if (next_space(tab[index], 0)) - ft_exit("Error\nBad syntax in map file\n"); + ft_exit("Error\nBad syntax in map file\n", img); index++; } return (next); diff --git a/srcs/parsing/parse_map.c b/srcs/parsing/parse_map.c index a602887..b959f0c 100644 --- a/srcs/parsing/parse_map.c +++ b/srcs/parsing/parse_map.c @@ -6,44 +6,44 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/05/10 17:54:25 by sadjigui #+# #+# */ -/* Updated: 2022/06/15 15:19:20 by apommier ### ########.fr */ +/* Updated: 2022/06/15 15:26:12 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../includes/Cub3D.h" -void ft_exit(char *str) +void ft_exit(char *str, t_data *img) { ft_putstr_fd(str, 2); - exit(1); + quit_game(img); } void verifie_texture_color(t_data *img) { if (img->map.texture.north == NULL) - ft_exit("Error\nTexture isn't loaded properly\n"); + ft_exit("Error\nTexture isn't loaded properly\n", img); if (img->map.texture.east == NULL) - ft_exit("Error\nTexture isn't loaded properly\n"); + ft_exit("Error\nTexture isn't loaded properly\n", img); if (img->map.texture.south == NULL) - ft_exit("Error\nTexture isn't loaded properly\n"); + ft_exit("Error\nTexture isn't loaded properly\n", img); if (img->map.texture.west == NULL) - ft_exit("Error\nTexture isn't loaded properly\n"); + ft_exit("Error\nTexture isn't loaded properly\n", img); if (img->map.floor.set != 1) - ft_exit("Error\nColor not set properly\n"); + ft_exit("Error\nColor not set properly\n", img); if (img->map.sky.set != 1) - ft_exit("Error\nColor not set properly\n"); + ft_exit("Error\nColor not set properly\n", img); } void error_msg(t_data *img) { if (img->map.error == 1) - ft_exit("Error: Map isn't closed\n"); + ft_exit("Error: Map isn't closed\n", img); if (img->map.error == 2) - ft_exit("Error: Missing player\n"); + ft_exit("Error: Missing player\n", img); if (img->map.error == 3) - ft_exit("Error: Too many players\n"); + ft_exit("Error: Too many players\n", img); if (img->map.error == -1) - ft_exit("Error: Bad character in map\n"); + ft_exit("Error: Bad character in map\n", img); } void size_line(char *str, t_data *img) @@ -285,11 +285,11 @@ char **isafile(char **av, t_data *img) img->err = 0; fd = open(av[1], O_RDONLY); - img->to_be_free.fd_one = fd; + img->to_be_free.fd = fd; str = NULL; tmp = NULL; if (fd == - 1) - ft_exit("Error: File doesn't exist\n"); + ft_exit("Error: File doesn't exist\n", img); while ((line = get_next_line(fd)) != NULL) { if (line[0] != '\n' && img->err == 0) @@ -311,21 +311,21 @@ char **isafile(char **av, t_data *img) if (img->err == 2) { free(str); - ft_exit("Error\nBad texture file\n"); + ft_exit("Error\nBad texture file\n", img); } split = ft_split(str, '\n'); - img->to_be_free.one_tab = split; + img->to_be_free.tab = split; free(str); free(line); close(fd); - img->to_be_free.fd_one = -1; + img->to_be_free.fd = -1; int pass = 0; pass = check_texture_color(split, img); check_zero_one(split + pass, img); //leaks here -- normalement c bon transform_map(split + pass, img); free_double(split); - img->to_be_free.one_tab = 0; + img->to_be_free.tab = 0; return (0); } @@ -337,7 +337,7 @@ int check_map(char **av, t_data *img) if (reverse_comp(av[1], ".cub") || (ft_strlen(av[1]) == ft_strlen(".cub"))) { - ft_putstr_fd("Error: Not a valid file \".cub\"\n", 2); + ft_exit("Error: Not a valid file \".cub\"\n", img); return (1); } isafile(av, img); @@ -348,7 +348,7 @@ int check_map(char **av, t_data *img) if (img->map.error != 0) { error_msg(img); - exit(1);//surely leak + quit_game(img);//surely leak??? } verifie_texture_color(img); return (0); diff --git a/srcs/utils.c b/srcs/utils.c index bee3838..dfe65fe 100644 --- a/srcs/utils.c +++ b/srcs/utils.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/02/13 23:37:02 by apommier #+# #+# */ -/* Updated: 2022/06/15 14:40:49 by apommier ### ########.fr */ +/* Updated: 2022/06/15 15:29:19 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,8 +22,6 @@ void free_texture(t_data *img) free(img->map.texture.east); if (img->map.texture.west) free(img->map.texture.west); - if (img->map.texture.basic) - free(img->map.texture.basic); } int quit_game(t_data *img) @@ -34,7 +32,10 @@ int quit_game(t_data *img) free(img->mlx); free_texture(img); free(img->map.simple_map); - if () + if (img->to_be_free.tab) + free_double(img->to_be_free.tab); + if (img->to_be_free.fd != -1) + close(img->to_be_free.fd); //free(img->map.texture.north); //free_double(img->map);