set img in ft_exit to quit_game

This commit is contained in:
kinou-p 2022-06-15 15:30:59 +02:00
parent 8540ddc1ce
commit ff64788b94
7 changed files with 65 additions and 70 deletions

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);

View File

@ -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;

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);
}

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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));

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);

View File

@ -6,44 +6,44 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);