From ce43b1cd1caa539af687425f58a6999a20807878 Mon Sep 17 00:00:00 2001
From: JozanLeClerc <bousset.rudy@gmail.com>
Date: Tue, 3 Mar 2020 16:14:26 +0100
Subject: Going full stack is bav

---
 inc/cub3d.h                |   4 +-
 inc/cub3d_structs.h        |   6 +-
 src/ft_basic_keys.c        |  24 ++++----
 src/ft_check_map_line.c    |  22 ++++----
 src/ft_check_missing.c     |  26 ++++-----
 src/ft_detect.c            |  64 ++++++++++-----------
 src/ft_draw_circle.c       |   6 +-
 src/ft_draw_hud.c          |  48 ++++++++--------
 src/ft_draw_map.c          |  16 +++---
 src/ft_draw_scene.c        |  26 ++++-----
 src/ft_draw_sprite.c       |  30 +++++-----
 src/ft_draw_square.c       |   4 +-
 src/ft_draw_textures.c     |  40 ++++++-------
 src/ft_draw_verline.c      |  40 ++++++-------
 src/ft_exit.c              |  68 +++++++++++-----------
 src/ft_extra_keys.c        |  36 ++++++------
 src/ft_get_colors.c        |  26 ++++-----
 src/ft_get_map.c           |  32 +++++------
 src/ft_get_music.c         |  28 ++++-----
 src/ft_get_nlvl_pos.c      |  10 ++--
 src/ft_get_path_nl.c       |  14 ++---
 src/ft_get_player_spawn.c  |  48 ++++++++--------
 src/ft_get_res.c           |  26 ++++-----
 src/ft_get_screen_size.c   |  12 ++--
 src/ft_get_sprite.c        |  24 ++++----
 src/ft_get_tex.c           |  56 +++++++++---------
 src/ft_get_tex_nl.c        |  14 ++---
 src/ft_hooks_and_loops.c   |  10 ++--
 src/ft_init_funptr.c       |  34 +++++------
 src/ft_init_lists.c        |  92 ++++++++++++++----------------
 src/ft_init_map.c          |  62 ++++++++++----------
 src/ft_init_winlx.c        |  10 ++--
 src/ft_key_events.c        |   4 +-
 src/ft_key_loop.c          |  38 ++++++-------
 src/ft_key_release.c       |  10 ++--
 src/ft_map_error.c         |   2 +-
 src/ft_music.c             |   4 +-
 src/ft_parse_map.c         |  20 +++----
 src/ft_raycasting.c        | 138 ++++++++++++++++++++++-----------------------
 src/ft_select_get.c        |  30 +++++-----
 src/ft_set_minimap_scale.c |  12 ++--
 src/ft_tex_init.c          |  52 ++++++++---------
 src/ft_treat_args.c        |   6 +-
 src/ft_warp_level.c        |  89 +++++++++++++++--------------
 src/main.c                 |  12 ++--
 45 files changed, 679 insertions(+), 696 deletions(-)

diff --git a/inc/cub3d.h b/inc/cub3d.h
index 1f8abd4..edc462f 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -23,12 +23,12 @@
 */
 
 void		ft_init_funptr(t_cub *clist);
-int8_t		ft_init_cub3d(t_cub **clist);
+int8_t		ft_init_cub3d(t_cub *clist);
 int			ft_init_winlx(t_cub *clist);
 int			ft_init_winptr(t_cub *clist);
 t_ray		ft_init_s_ray(void);
 t_rgb		ft_init_rgb(void);
-t_map		*ft_init_map(void);
+int8_t		ft_init_map(t_map *mlist);
 
 /*
 ** ====== HOOKS ======
diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index b7d49a7..b19eae6 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -144,9 +144,9 @@ typedef struct		s_cub
 	pthread_t		tid;
 	int				(*key_ptr[6])(struct s_cub*);
 	int8_t			(*get_ptr[11])(char**, struct s_cub*);
-	struct s_win	*wlist;
-	struct s_player	*plist;
-	struct s_map	*mlist;
+	struct s_win	wlist;
+	struct s_player	plist;
+	struct s_map	mlist;
 	struct s_ray	rlist;
 	struct s_img	img;
 	struct s_rgb	f_rgb;
diff --git a/src/ft_basic_keys.c b/src/ft_basic_keys.c
index 1bc9821..29044d9 100644
--- a/src/ft_basic_keys.c
+++ b/src/ft_basic_keys.c
@@ -19,9 +19,9 @@ int
 	t_player	*pl;
 	const float	move_speed = FT_MOVE_SPEED;
 
-	pl = clist.plist;
-	pl.pos_y += move_speed * pl.dir_x;
-	pl.pos_x += move_speed * pl.dir_y;
+	pl = &clist->plist;
+	pl->pos_y += move_speed * pl->dir_x;
+	pl->pos_x += move_speed * pl->dir_y;
 	return (0);
 }
 
@@ -31,9 +31,9 @@ int
 	t_player	*pl;
 	const float	move_speed = FT_STRAFE_SPEED;
 
-	pl = clist.plist;
-	pl.pos_y += move_speed * -pl.dir_y;
-	pl.pos_x += move_speed * pl.dir_x;
+	pl = &clist->plist;
+	pl->pos_y += move_speed * -pl->dir_y;
+	pl->pos_x += move_speed * pl->dir_x;
 	return (0);
 }
 
@@ -43,9 +43,9 @@ int
 	t_player	*pl;
 	const float	move_speed = FT_MOVE_SPEED;
 
-	pl = clist.plist;
-	pl.pos_y += move_speed * -pl.dir_x;
-	pl.pos_x += move_speed * -pl.dir_y;
+	pl = &clist->plist;
+	pl->pos_y += move_speed * -pl->dir_x;
+	pl->pos_x += move_speed * -pl->dir_y;
 	return (0);
 }
 
@@ -55,8 +55,8 @@ int
 	t_player	*pl;
 	const float	move_speed = FT_STRAFE_SPEED;
 
-	pl = clist.plist;
-	pl.pos_y += move_speed * pl.dir_y;
-	pl.pos_x += move_speed * -pl.dir_x;
+	pl = &clist->plist;
+	pl->pos_y += move_speed * pl->dir_y;
+	pl->pos_x += move_speed * -pl->dir_x;
 	return (0);
 }
diff --git a/src/ft_check_map_line.c b/src/ft_check_map_line.c
index 4368a18..a3e60f5 100644
--- a/src/ft_check_map_line.c
+++ b/src/ft_check_map_line.c
@@ -20,21 +20,21 @@ static int8_t
 {
 	if (!ft_ischarset("012NSEWL ", line[i]))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ILL_MAP);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ILL_MAP);
 		return (-1);
 	}
 	if (ft_ischarset("NSEW", line[i]))
-		clist.mlist.isspawn += 1;
-	if (clist.mlist.isspawn > 1)
+		clist->mlist.isspawn += 1;
+	if (clist->mlist.isspawn > 1)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_MULT_SPAWN);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_MULT_SPAWN);
 		return (-1);
 	}
 	if (line[i] == 'L')
-		clist.mlist.isnlvl += 1;
-	if (clist.mlist.isnlvl > 1)
+		clist->mlist.isnlvl += 1;
+	if (clist->mlist.isnlvl > 1)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_MULT_NLVL);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_MULT_NLVL);
 		return (-1);
 	}
 	return (0);
@@ -45,7 +45,7 @@ static int8_t
 {
 	if (!ft_ischarset("1 ", line[i]))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ILL_MAP);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ILL_MAP);
 		return (-1);
 	}
 	return (0);
@@ -73,7 +73,7 @@ static int8_t
 {
 	if (line[0] != '1' || line[i - 1] != '1')
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ILL_ENTRY);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ILL_ENTRY);
 		return (-1);
 	}
 	return (0);
@@ -100,9 +100,9 @@ int8_t
 	}
 	if (ft_check_side_walls(line, i, clist) < 0)
 		return (-1);
-	if (ft_get_line_len(line) != clist.mlist.map_w)
+	if (ft_get_line_len(line) != clist->mlist.map_w)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_MAP_LEN);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_MAP_LEN);
 		return (-1);
 	}
 	return (0);
diff --git a/src/ft_check_missing.c b/src/ft_check_missing.c
index caaca9e..02893bf 100644
--- a/src/ft_check_missing.c
+++ b/src/ft_check_missing.c
@@ -26,29 +26,29 @@ int
 int
 	ft_check_missing(t_cub *clist)
 {
-	if (!clist.mlist.no_tex_path[0])
+	if (!clist->mlist.no_tex_path[0])
 		return (ft_missing_error(FT_ERR_MISS_NORTH, clist));
-	else if (!clist.mlist.so_tex_path[0])
+	else if (!clist->mlist.so_tex_path[0])
 		return (ft_missing_error(FT_ERR_MISS_SOUTH, clist));
-	else if (!clist.mlist.ea_tex_path[0])
+	else if (!clist->mlist.ea_tex_path[0])
 		return (ft_missing_error(FT_ERR_MISS_EAST, clist));
-	else if (!clist.mlist.we_tex_path[0])
+	else if (!clist->mlist.we_tex_path[0])
 		return (ft_missing_error(FT_ERR_MISS_WEST, clist));
-	else if (!clist.mlist.sprite_path[0])
+	else if (!clist->mlist.sprite_path[0])
 		return (ft_missing_error(FT_ERR_MISS_SPRITE, clist));
-	else if (clist.wlist.x_size == 0 || clist.wlist.y_size == 0)
+	else if (clist->wlist.x_size == 0 || clist->wlist.y_size == 0)
 		return (ft_missing_error(FT_ERR_MISS_RESOLUTION, clist));
-	else if (clist.f_rgb.r == -1 || clist.f_rgb.g == -1
-				|| clist.f_rgb.b == -1)
+	else if (clist->f_rgb.r == -1 || clist->f_rgb.g == -1
+				|| clist->f_rgb.b == -1)
 		return (ft_missing_error(FT_ERR_MISS_FLOOR_C, clist));
-	else if (clist.c_rgb.r == -1 || clist.c_rgb.g == -1
-				|| clist.c_rgb.b == -1)
+	else if (clist->c_rgb.r == -1 || clist->c_rgb.g == -1
+				|| clist->c_rgb.b == -1)
 		return (ft_missing_error(FT_ERR_MISS_CEIL_C, clist));
-	else if (clist.plist.pos_x == 0 || clist.plist.pos_y == 0)
+	else if (clist->plist.pos_x == 0 || clist->plist.pos_y == 0)
 		return (ft_missing_error(FT_ERR_MISS_PLAYER_SPAWN, clist));
-	else if (clist.mlist.isnlvl && !clist.mlist.nl_tex_path[0])
+	else if (clist->mlist.isnlvl && !clist->mlist.nl_tex_path[0])
 		return (ft_missing_error(FT_ERR_MISS_NLVL, clist));
-	else if (clist.mlist.isnlvl && !clist.mlist.nlevel_path[0])
+	else if (clist->mlist.isnlvl && !clist->mlist.nlevel_path[0])
 		return (ft_missing_error(FT_ERR_MISS_NLVL_PATH, clist));
 	return (0);
 }
diff --git a/src/ft_detect.c b/src/ft_detect.c
index 864b2b2..8ab3d57 100644
--- a/src/ft_detect.c
+++ b/src/ft_detect.c
@@ -17,40 +17,40 @@
 static void
 	ft_detection_init_y(t_cub *cl)
 {
-	cl.rlist.y_delta_dist = sqrt(1 + (cl.rlist.x_ray_dir *
-		cl.rlist.x_ray_dir) / (cl.rlist.y_ray_dir *
-		cl.rlist.y_ray_dir));
-	if (cl.rlist.y_ray_dir < 0)
+	cl->rlist.y_delta_dist = sqrt(1 + (cl->rlist.x_ray_dir *
+		cl->rlist.x_ray_dir) / (cl->rlist.y_ray_dir *
+		cl->rlist.y_ray_dir));
+	if (cl->rlist.y_ray_dir < 0)
 	{
-		cl.mlist.y_step = -1;
-		cl.rlist.y_side_dist = (cl.rlist.y_ray_pos -
-			cl.rlist.sqy) * cl.rlist.y_delta_dist;
+		cl->mlist.y_step = -1;
+		cl->rlist.y_side_dist = (cl->rlist.y_ray_pos -
+			cl->rlist.sqy) * cl->rlist.y_delta_dist;
 	}
 	else
 	{
-		cl.mlist.y_step = 1;
-		cl.rlist.y_side_dist = (cl.rlist.sqy + 1.0 -
-			cl.rlist.y_ray_pos) * cl.rlist.y_delta_dist;
+		cl->mlist.y_step = 1;
+		cl->rlist.y_side_dist = (cl->rlist.sqy + 1.0 -
+			cl->rlist.y_ray_pos) * cl->rlist.y_delta_dist;
 	}
 }
 
 static void
 	ft_detection_init_x(t_cub *cl)
 {
-	cl.rlist.x_delta_dist = sqrt(1 + (cl.rlist.y_ray_dir *
-		cl.rlist.y_ray_dir) / (cl.rlist.x_ray_dir *
-		cl.rlist.x_ray_dir));
-	if (cl.rlist.x_ray_dir < 0)
+	cl->rlist.x_delta_dist = sqrt(1 + (cl->rlist.y_ray_dir *
+		cl->rlist.y_ray_dir) / (cl->rlist.x_ray_dir *
+		cl->rlist.x_ray_dir));
+	if (cl->rlist.x_ray_dir < 0)
 	{
-		cl.mlist.x_step = -1;
-		cl.rlist.x_side_dist = (cl.rlist.x_ray_pos -
-			cl.rlist.sqx) * cl.rlist.x_delta_dist;
+		cl->mlist.x_step = -1;
+		cl->rlist.x_side_dist = (cl->rlist.x_ray_pos -
+			cl->rlist.sqx) * cl->rlist.x_delta_dist;
 	}
 	else
 	{
-		cl.mlist.x_step = 1;
-		cl.rlist.x_side_dist = (cl.rlist.sqx + 1.0 -
-			cl.rlist.x_ray_pos) * cl.rlist.x_delta_dist;
+		cl->mlist.x_step = 1;
+		cl->rlist.x_side_dist = (cl->rlist.sqx + 1.0 -
+			cl->rlist.x_ray_pos) * cl->rlist.x_delta_dist;
 	}
 }
 
@@ -59,23 +59,23 @@ void
 {
 	ft_detection_init_x(cl);
 	ft_detection_init_y(cl);
-	cl.rlist.hit = 0;
-	while (cl.rlist.hit == 0)
+	cl->rlist.hit = 0;
+	while (cl->rlist.hit == 0)
 	{
-		if (cl.rlist.x_side_dist < cl.rlist.y_side_dist)
+		if (cl->rlist.x_side_dist < cl->rlist.y_side_dist)
 		{
-			cl.rlist.x_side_dist += cl.rlist.x_delta_dist;
-			cl.rlist.sqx += cl.mlist.x_step;
-			cl.rlist.side = 0;
+			cl->rlist.x_side_dist += cl->rlist.x_delta_dist;
+			cl->rlist.sqx += cl->mlist.x_step;
+			cl->rlist.side = 0;
 		}
 		else
 		{
-			cl.rlist.y_side_dist += cl.rlist.y_delta_dist;
-			cl.rlist.sqy += cl.mlist.y_step;
-			cl.rlist.side = 1;
+			cl->rlist.y_side_dist += cl->rlist.y_delta_dist;
+			cl->rlist.sqy += cl->mlist.y_step;
+			cl->rlist.side = 1;
 		}
-		if (cl.mlist.map[cl.rlist.sqx][cl.rlist.sqy] == '1' ||
-			cl.mlist.map[cl.rlist.sqx][cl.rlist.sqy] == 'L')
-			cl.rlist.hit = 1;
+		if (cl->mlist.map[cl->rlist.sqx][cl->rlist.sqy] == '1' ||
+			cl->mlist.map[cl->rlist.sqx][cl->rlist.sqy] == 'L')
+			cl->rlist.hit = 1;
 	}
 }
diff --git a/src/ft_draw_circle.c b/src/ft_draw_circle.c
index eba6869..249b2e9 100644
--- a/src/ft_draw_circle.c
+++ b/src/ft_draw_circle.c
@@ -25,7 +25,7 @@ void
 	float	y1;
 
 	i = 0;
-	scale = cl.mlist.scale / 2.5;
+	scale = cl->mlist.scale / 2.5;
 	while (scale > 0)
 	{
 		while (i < 360)
@@ -33,8 +33,8 @@ void
 			angle = i;
 			x1 = scale * cos(angle * 3.14159265358979323846 / 180);
 			y1 = scale * sin(angle * 3.14159265358979323846 / 180);
-			*(int*)(cl.img.ptr + ((int)a + (int)x1) * 4 +
-					(((int)b + (int)y1) * cl.img.sizeline)) = color;
+			*(int*)(cl->img.ptr + ((int)a + (int)x1) * 4 +
+					(((int)b + (int)y1) * cl->img.sizeline)) = color;
 			i += 0.1;
 		}
 		i = 0;
diff --git a/src/ft_draw_hud.c b/src/ft_draw_hud.c
index b54e9e5..e1439ae 100644
--- a/src/ft_draw_hud.c
+++ b/src/ft_draw_hud.c
@@ -17,19 +17,19 @@
 static void
 	ft_draw_hud_back(t_win *wl, t_cub *cl)
 {
-	const uint16_t	scl = cl.mlist.scale;
+	const uint16_t	scl = cl->mlist.scale;
 	uint32_t		x;
 	uint32_t		y;
 	int32_t			col;
 
 	col = 0x00404040;
 	x = 0;
-	y = wl.y_size - ((cl.mlist.map_h * scl));
-	while (x < wl.x_size)
+	y = wl->y_size - ((cl->mlist.map_h * scl));
+	while (x < wl->x_size)
 	{
-		while (y < wl.y_size)
+		while (y < wl->y_size)
 		{
-			*(int*)(cl.img.ptr + (x * 4 + (y * cl.img.sizeline))) = col;
+			*(int*)(cl->img.ptr + (x * 4 + (y * cl->img.sizeline))) = col;
 			if (!(y % 3))
 			{
 				if (col < 0x00909090)
@@ -38,7 +38,7 @@ static void
 			y++;
 		}
 		col = 0x00404040;
-		y = wl.y_size - ((cl.mlist.map_h * scl));
+		y = wl->y_size - ((cl->mlist.map_h * scl));
 		x++;
 	}
 }
@@ -46,19 +46,19 @@ static void
 static void
 	ft_draw_hud_back_top_l(size_t map_h, size_t map_w, t_win *wl, t_cub *cl)
 {
-	const uint16_t	scl = cl.mlist.scale;
+	const uint16_t	scl = cl->mlist.scale;
 	uint32_t		x;
 	uint32_t		y;
 	int32_t			col;
 
 	col = 0x00373737;
 	x = 0;
-	y = wl.y_size - (map_h * scl) - 20;
+	y = wl->y_size - (map_h * scl) - 20;
 	while (x < (map_w * scl) + 20)
 	{
-		while (y < wl.y_size - (map_h * scl))
+		while (y < wl->y_size - (map_h * scl))
 		{
-			*(int*)(cl.img.ptr + (x * 4 + (y * cl.img.sizeline))) = col;
+			*(int*)(cl->img.ptr + (x * 4 + (y * cl->img.sizeline))) = col;
 			if (!(y % 3))
 			{
 				if (col < 0x00aaaaaa)
@@ -67,7 +67,7 @@ static void
 			y++;
 		}
 		col = 0x00353535;
-		y = wl.y_size - (map_h * scl) - 20;
+		y = wl->y_size - (map_h * scl) - 20;
 		x++;
 	}
 }
@@ -75,19 +75,19 @@ static void
 static void
 	ft_draw_hud_back_top_r(size_t map_h, size_t map_w, t_win *wl, t_cub *cl)
 {
-	const uint16_t	scl = cl.mlist.scale;
+	const uint16_t	scl = cl->mlist.scale;
 	uint32_t		x;
 	uint32_t		y;
 	int32_t			col;
 
 	col = 0x00373737;
-	x = wl.x_size - (map_w * scl) + 20;
-	y = wl.y_size - (map_h * scl) - 20;
-	while (x < wl.x_size)
+	x = wl->x_size - (map_w * scl) + 20;
+	y = wl->y_size - (map_h * scl) - 20;
+	while (x < wl->x_size)
 	{
-		while (y < wl.y_size - (map_h * scl))
+		while (y < wl->y_size - (map_h * scl))
 		{
-			*(int*)(cl.img.ptr + (x * 4 + (y * cl.img.sizeline))) = col;
+			*(int*)(cl->img.ptr + (x * 4 + (y * cl->img.sizeline))) = col;
 			if (!(y % 2))
 			{
 				if (col < 0x00aaaaaa)
@@ -96,7 +96,7 @@ static void
 			y++;
 		}
 		col = 0x00353535;
-		y = wl.y_size - (map_h * scl) - 20;
+		y = wl->y_size - (map_h * scl) - 20;
 		x++;
 	}
 }
@@ -104,10 +104,10 @@ static void
 void
 	ft_draw_hud(t_cub *clist)
 {
-	ft_draw_hud_back(clist.wlist, clist);
-	ft_draw_hud_back_top_l(clist.mlist.map_h,
-		clist.mlist.map_w, clist.wlist, clist);
-	ft_draw_hud_back_top_r(clist.mlist.map_h,
-		clist.mlist.map_w, clist.wlist, clist);
-	ft_draw_map(clist.mlist.map, clist);
+	ft_draw_hud_back(&clist->wlist, clist);
+	ft_draw_hud_back_top_l(clist->mlist.map_h,
+		clist->mlist.map_w, &clist->wlist, clist);
+	ft_draw_hud_back_top_r(clist->mlist.map_h,
+		clist->mlist.map_w, &clist->wlist, clist);
+	ft_draw_map(clist->mlist.map, clist);
 }
diff --git a/src/ft_draw_map.c b/src/ft_draw_map.c
index 42f324b..acf671a 100644
--- a/src/ft_draw_map.c
+++ b/src/ft_draw_map.c
@@ -16,17 +16,17 @@
 static uint16_t
 	ft_y_offset(t_cub *clist)
 {
-	return (clist.wlist.y_size
-				- (clist.mlist.map_h * clist.mlist.scale)
-				+ clist.mlist.scale - 1);
+	return (clist->wlist.y_size
+				- (clist->mlist.map_h * clist->mlist.scale)
+				+ clist->mlist.scale - 1);
 }
 
 static void
 	ft_draw_player(t_player *plist, t_cub *clist)
 {
-	const uint16_t	scale = clist.mlist.scale;
-	const float		x = plist.pos_x;
-	const float		y = plist.pos_y;
+	const uint16_t	scale = clist->mlist.scale;
+	const float		x = plist->pos_x;
+	const float		y = plist->pos_y;
 
 	ft_draw_circle(
 				(scale / 2) + (x * (scale)),
@@ -38,7 +38,7 @@ static void
 void
 	ft_draw_map(char **map, t_cub *clist)
 {
-	const uint8_t	scale = clist.mlist.scale;
+	const uint8_t	scale = clist->mlist.scale;
 	size_t			x;
 	size_t			y;
 
@@ -62,5 +62,5 @@ void
 		x = 0;
 		y++;
 	}
-	ft_draw_player(clist.plist, clist);
+	ft_draw_player(&clist->plist, clist);
 }
diff --git a/src/ft_draw_scene.c b/src/ft_draw_scene.c
index 9c14612..345c66b 100644
--- a/src/ft_draw_scene.c
+++ b/src/ft_draw_scene.c
@@ -18,26 +18,26 @@
 void
 	ft_draw_scene(t_cub *clist)
 {
-	clist.img.img = mlx_new_image(clist.wlist.wlx,
-				clist.wlist.x_size, clist.wlist.y_size);
-	clist.img.ptr = mlx_get_data_addr(clist.img.img, &clist.img.bpp,
-				&clist.img.sizeline, &clist.img.endian);
+	clist->img.img = mlx_new_image(clist->wlist.wlx,
+				clist->wlist.x_size, clist->wlist.y_size);
+	clist->img.ptr = mlx_get_data_addr(clist->img.img, &clist->img.bpp,
+				&clist->img.sizeline, &clist->img.endian);
 	ft_castray(clist);
-	if (clist.ishud)
+	if (clist->ishud)
 		ft_draw_hud(clist);
-	mlx_put_image_to_window(clist.wlist.wlx,
-							clist.wlist.winptr, clist.img.img, 0, 0);
-	mlx_destroy_image(clist.wlist.wlx, clist.img.img);
+	mlx_put_image_to_window(clist->wlist.wlx,
+							clist->wlist.winptr, clist->img.img, 0, 0);
+	mlx_destroy_image(clist->wlist.wlx, clist->img.img);
 }
 
 void
 	ft_draw_scene_bmp(t_cub *clist)
 {
-	clist.img.img = mlx_new_image(clist.wlist.wlx,
-				clist.wlist.x_size, clist.wlist.y_size);
-	clist.img.ptr = mlx_get_data_addr(clist.img.img, &clist.img.bpp,
-				&clist.img.sizeline, &clist.img.endian);
+	clist->img.img = mlx_new_image(clist->wlist.wlx,
+				clist->wlist.x_size, clist->wlist.y_size);
+	clist->img.ptr = mlx_get_data_addr(clist->img.img, &clist->img.bpp,
+				&clist->img.sizeline, &clist->img.endian);
 	ft_castray(clist);
-	mlx_destroy_image(clist.wlist.wlx, clist.img.img);
+	mlx_destroy_image(clist->wlist.wlx, clist->img.img);
 	ft_save_to_bmp();
 }
diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c
index 4570905..9dc1b63 100644
--- a/src/ft_draw_sprite.c
+++ b/src/ft_draw_sprite.c
@@ -20,17 +20,17 @@
 void
 	ft_draw_verline_sprite(t_cub *cl, int x, int y, int tex_y)
 {
-	if (cl.tlist[4].tex_x)
-		cl.img.ptr[x * 4 + (cl.img.sizeline * y)] =
-			(char)cl.tlist[4].ptr[cl.tlist[4].tex_x * 4 + 4 *
-									cl.tlist[4].img_h * tex_y];
-	cl.img.ptr[x * 4 + (cl.img.sizeline * y) + 1] =
-			(char)cl.tlist[4].ptr[cl.tlist[4].tex_x * 4 + 4 *
-									cl.tlist[4].img_h * tex_y + 1];
-	cl.img.ptr[x * 4 + (cl.img.sizeline * y) + 2] =
-			(char)cl.tlist[4].ptr[cl.tlist[4].tex_x * 4 + 4 *
-									cl.tlist[4].img_h * tex_y + 2];
-	cl.img.ptr[x * 4 + cl.wlist.x_size * y + 3] = (char)0;
+	if (cl->tlist[4].tex_x)
+		cl->img.ptr[x * 4 + (cl->img.sizeline * y)] =
+			(char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 *
+									cl->tlist[4].img_h * tex_y];
+	cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 1] =
+			(char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 *
+									cl->tlist[4].img_h * tex_y + 1];
+	cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 2] =
+			(char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 *
+									cl->tlist[4].img_h * tex_y + 2];
+	cl->img.ptr[x * 4 + cl->wlist.x_size * y + 3] = (char)0;
 }
 
 void
@@ -40,12 +40,12 @@ void
 	int d;
 	int tex_y;
 
-	hor_it = cl.sp_list.s_start_y;
-	while (hor_it < cl.sp_list.s_end_y)
+	hor_it = cl->sp_list.s_start_y;
+	while (hor_it < cl->sp_list.s_end_y)
 	{
-		d = hor_it * 256 - cl.wlist.y_size * 128 + cl.rlist.line_h * 128;
+		d = hor_it * 256 - cl->wlist.y_size * 128 + cl->rlist.line_h * 128;
 		d = (d <= 0) ? (-d) : (d);
-		tex_y = ((d * cl.tlist[4].img_h) / cl.rlist.line_h) / 256;
+		tex_y = ((d * cl->tlist[4].img_h) / cl->rlist.line_h) / 256;
 		(tex_y < 0) ? (tex_y = 0) : 0;
 		ft_draw_verline_sprite(cl, x, hor_it, tex_y);
 		hor_it++;
diff --git a/src/ft_draw_square.c b/src/ft_draw_square.c
index 793bb8c..4223f26 100644
--- a/src/ft_draw_square.c
+++ b/src/ft_draw_square.c
@@ -17,7 +17,7 @@
 void
 	ft_draw_square(int a, int b, int rgb, t_cub *clist)
 {
-	const uint16_t	scale = clist.mlist.scale;
+	const uint16_t	scale = clist->mlist.scale;
 	int				x;
 	int				y;
 
@@ -27,7 +27,7 @@ void
 	{
 		while (y >= b - scale)
 		{
-			*(int*)(clist.img.ptr + (x * 4 + (y * clist.img.sizeline))) = rgb;
+			*(int*)(clist->img.ptr + (x * 4 + (y * clist->img.sizeline))) = rgb;
 			y--;
 		}
 		y = b;
diff --git a/src/ft_draw_textures.c b/src/ft_draw_textures.c
index 73dda23..00f8e5a 100644
--- a/src/ft_draw_textures.c
+++ b/src/ft_draw_textures.c
@@ -24,34 +24,34 @@
 
 void	ft_draw_texture(t_cub *cl, int x, int y, int tex_y)
 {
-	cl.img.ptr[x * 4 + (cl.img.sizeline * y)] =
-		(char)cl.tlist[cl.w_side].ptr[cl.tlist[cl.w_side].tex_x * 4 + 4 *
-		cl.tlist[cl.w_side].img_h * tex_y];
-	cl.img.ptr[x * 4 + (cl.img.sizeline * y) + 1] =
-		(char)cl.tlist[cl.w_side].ptr[cl.tlist[cl.w_side].tex_x * 4 + 4 *
-		cl.tlist[cl.w_side].img_h * tex_y + 1];
-	cl.img.ptr[x * 4 + (cl.img.sizeline * y) + 2] =
-		(char)cl.tlist[cl.w_side].ptr[cl.tlist[cl.w_side].tex_x * 4 + 4 *
-		cl.tlist[cl.w_side].img_h * tex_y + 2];
-	cl.img.ptr[x * 4 + cl.wlist.x_size * y + 3] = (char)0;
+	cl->img.ptr[x * 4 + (cl->img.sizeline * y)] =
+		(char)cl->tlist[cl->w_side].ptr[cl->tlist[cl->w_side].tex_x * 4 + 4 *
+		cl->tlist[cl->w_side].img_h * tex_y];
+	cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 1] =
+		(char)cl->tlist[cl->w_side].ptr[cl->tlist[cl->w_side].tex_x * 4 + 4 *
+		cl->tlist[cl->w_side].img_h * tex_y + 1];
+	cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 2] =
+		(char)cl->tlist[cl->w_side].ptr[cl->tlist[cl->w_side].tex_x * 4 + 4 *
+		cl->tlist[cl->w_side].img_h * tex_y + 2];
+	cl->img.ptr[x * 4 + cl->wlist.x_size * y + 3] = (char)0;
 }
 
 void	ft_choose_tex(t_cub *clist)
 {
-	if (clist.rlist.sqy == clist.mlist.nlx
-		&& clist.rlist.sqx == clist.mlist.nly)
+	if (clist->rlist.sqy == clist->mlist.nlx
+		&& clist->rlist.sqx == clist->mlist.nly)
 	{
-		clist.w_side = 5;
+		clist->w_side = 5;
 	}
 	else
 	{
-		if (clist.rlist.side == 0 && clist.rlist.x_ray_dir < 0)
-			clist.w_side = 1;
-		else if (clist.rlist.side == 0 && clist.rlist.x_ray_dir > 0)
-			clist.w_side = 0;
-		else if (clist.rlist.side == 1 && clist.rlist.y_ray_dir > 0)
-			clist.w_side = 3;
+		if (clist->rlist.side == 0 && clist->rlist.x_ray_dir < 0)
+			clist->w_side = 1;
+		else if (clist->rlist.side == 0 && clist->rlist.x_ray_dir > 0)
+			clist->w_side = 0;
+		else if (clist->rlist.side == 1 && clist->rlist.y_ray_dir > 0)
+			clist->w_side = 3;
 		else
-			clist.w_side = 2;
+			clist->w_side = 2;
 	}
 }
diff --git a/src/ft_draw_verline.c b/src/ft_draw_verline.c
index 7b74d4a..d9a35cc 100644
--- a/src/ft_draw_verline.c
+++ b/src/ft_draw_verline.c
@@ -15,10 +15,10 @@
 static void
 	ft_draw_floor(t_cub *cl, int32_t y, int32_t x)
 {
-	while ((uint32_t)y < cl.wlist.y_size)
+	while ((uint32_t)y < cl->wlist.y_size)
 	{
-		*(int*)(cl.img.ptr +
-				(x * 4 + (y * cl.img.sizeline))) = ft_rgb_to_hex(cl.f_rgb);
+		*(int*)(cl->img.ptr +
+				(x * 4 + (y * cl->img.sizeline))) = ft_rgb_to_hex(cl->f_rgb);
 		y++;
 	}
 }
@@ -31,8 +31,8 @@ static void
 	i = 0;
 	while (i <= y)
 	{
-		*(int*)(cl.img.ptr +
-			(x * 4 + (i * cl.img.sizeline))) = ft_rgb_to_hex(cl.c_rgb);
+		*(int*)(cl->img.ptr +
+			(x * 4 + (i * cl->img.sizeline))) = ft_rgb_to_hex(cl->c_rgb);
 		i++;
 	}
 }
@@ -49,21 +49,21 @@ static void
 ** 	i = 0;
 ** 	while (i < y)
 ** 	{
-** 		d = i * 256 - cl.wlist.y_size * 128 + cl.rlist.line_h * 128;
+** 		d = i * 256 - cl->wlist.y_size * 128 + cl->rlist.line_h * 128;
 ** 		d = (d <= 0) ? (-d) : (d);
 ** 		ft_printf("%d\n", d);
-** 		tex_y = ((d * cl.tlist[1].img_h) / cl.rlist.line_h) / 256;
+** 		tex_y = ((d * cl->tlist[1].img_h) / cl->rlist.line_h) / 256;
 ** 		(tex_y <= 0) ? (tex_y = 1) : 0;
-** 		cl.img.ptr[x * 4 + (cl.img.sizeline * i)] =
-** 			(int8_t)cl.tlist[1].ptr[cl.tlist[1].tex_x * 4 + 4 *
-** 						cl.tlist[1].img_h * tex_y];
-** 		cl.img.ptr[x * 4 + (cl.img.sizeline * i) + 1] =
-** 			(int8_t)cl.tlist[1].ptr[cl.tlist[1].tex_x * 4 + 4 *
-** 						cl.tlist[1].img_h * tex_y + 1];
-** 		cl.img.ptr[x * 4 + (cl.img.sizeline * i) + 2] =
-** 			(int8_t)cl.tlist[1].ptr[cl.tlist[1].tex_x * 4 + 4 *
-** 						cl.tlist[1].img_h * tex_y + 2];
-** 		cl.img.ptr[x * 4 + cl.wlist.x_size * i + 3] = (char)0;
+** 		cl->img.ptr[x * 4 + (cl->img.sizeline * i)] =
+** 			(int8_t)cl->tlist[1].ptr[cl->tlist[1].tex_x * 4 + 4 *
+** 						cl->tlist[1].img_h * tex_y];
+** 		cl->img.ptr[x * 4 + (cl->img.sizeline * i) + 1] =
+** 			(int8_t)cl->tlist[1].ptr[cl->tlist[1].tex_x * 4 + 4 *
+** 						cl->tlist[1].img_h * tex_y + 1];
+** 		cl->img.ptr[x * 4 + (cl->img.sizeline * i) + 2] =
+** 			(int8_t)cl->tlist[1].ptr[cl->tlist[1].tex_x * 4 + 4 *
+** 						cl->tlist[1].img_h * tex_y + 2];
+** 		cl->img.ptr[x * 4 + cl->wlist.x_size * i + 3] = (char)0;
 ** 		i++;
 ** 	}
 ** }
@@ -78,12 +78,12 @@ int8_t
 	(y < 0) ? (y = 0) : 0;
 	(y2 < 0) ? (y2 = 0) : 0;
 	ft_draw_ceil(cl, y, x);
-	(cl.rlist.line_h <= 0) ? (cl.rlist.line_h = 1) : 0;
+	(cl->rlist.line_h <= 0) ? (cl->rlist.line_h = 1) : 0;
 	while (y < y2)
 	{
-		d = y * 256 - cl.wlist.y_size * 128 + cl.rlist.line_h * 128;
+		d = y * 256 - cl->wlist.y_size * 128 + cl->rlist.line_h * 128;
 		d = (d <= 0) ? (-d) : (d);
-		tex_y = ((d * cl.tlist[cl.w_side].img_h) / cl.rlist.line_h) / 256;
+		tex_y = ((d * cl->tlist[cl->w_side].img_h) / cl->rlist.line_h) / 256;
 		(tex_y <= 0) ? (tex_y = 1) : 0;
 		ft_draw_texture(cl, x, y, tex_y);
 		y++;
diff --git a/src/ft_exit.c b/src/ft_exit.c
index 6622eb1..1be7a32 100644
--- a/src/ft_exit.c
+++ b/src/ft_exit.c
@@ -21,52 +21,48 @@
 static void
 	ft_free_lists(t_cub *clist)
 {
-	ft_memdel((void**)&clist.mlist.no_tex_path);
-	ft_memdel((void**)&clist.mlist.so_tex_path);
-	ft_memdel((void**)&clist.mlist.ea_tex_path);
-	ft_memdel((void**)&clist.mlist.we_tex_path);
-	ft_memdel((void**)&clist.mlist.sprite_path);
-	ft_memdel((void**)&clist.mlist.nl_tex_path);
-	ft_memdel((void**)&clist.mlist.nlevel_path);
-	ft_memdel((void**)&clist.mlist.music_path);
-	ft_memdel((void**)&clist.mlist.music_cmd);
-	ft_memdel((void**)&clist.mlist.mapl);
-	ft_free_words(clist.mlist.map);
-	ft_memdel((void**)&clist.mlist);
-	ft_memdel((void**)&clist.plist);
-	if (!clist.wlist.inited)
-		ft_memdel((void**)&clist.wlist.winptr);
-	ft_memdel((void**)&clist.wlist);
-	ft_memdel((void**)&clist);
+	ft_memdel((void**)&clist->mlist.no_tex_path);
+	ft_memdel((void**)&clist->mlist.so_tex_path);
+	ft_memdel((void**)&clist->mlist.ea_tex_path);
+	ft_memdel((void**)&clist->mlist.we_tex_path);
+	ft_memdel((void**)&clist->mlist.sprite_path);
+	ft_memdel((void**)&clist->mlist.nl_tex_path);
+	ft_memdel((void**)&clist->mlist.nlevel_path);
+	ft_memdel((void**)&clist->mlist.music_path);
+	ft_memdel((void**)&clist->mlist.music_cmd);
+	ft_memdel((void**)&clist->mlist.mapl);
+	ft_free_words(clist->mlist.map);
+	if (!clist->wlist.inited)
+		ft_memdel((void**)&clist->wlist.winptr);
 }
 
 int
 	ft_exit(uint8_t exit_code, t_cub *clist)
 {
-	if (clist.walltexgood)
+	if (clist->walltexgood)
 	{
-		if (clist.tlist[0].img)
-			mlx_destroy_image(clist.wlist.wlx, clist.tlist[0].img);
-		if (clist.tlist[1].img)
-			mlx_destroy_image(clist.wlist.wlx, clist.tlist[1].img);
-		if (clist.tlist[2].img)
-			mlx_destroy_image(clist.wlist.wlx, clist.tlist[2].img);
-		if (clist.tlist[3].img)
-			mlx_destroy_image(clist.wlist.wlx, clist.tlist[3].img);
-		if (clist.tlist[4].img)
-			mlx_destroy_image(clist.wlist.wlx, clist.tlist[4].img);
-		if (clist.mlist.isnlvl && clist.tlist[5].img)
-			mlx_destroy_image(clist.wlist.wlx, clist.tlist[5].img);
+		if (clist->tlist[0].img)
+			mlx_destroy_image(clist->wlist.wlx, clist->tlist[0].img);
+		if (clist->tlist[1].img)
+			mlx_destroy_image(clist->wlist.wlx, clist->tlist[1].img);
+		if (clist->tlist[2].img)
+			mlx_destroy_image(clist->wlist.wlx, clist->tlist[2].img);
+		if (clist->tlist[3].img)
+			mlx_destroy_image(clist->wlist.wlx, clist->tlist[3].img);
+		if (clist->tlist[4].img)
+			mlx_destroy_image(clist->wlist.wlx, clist->tlist[4].img);
+		if (clist->mlist.isnlvl && clist->tlist[5].img)
+			mlx_destroy_image(clist->wlist.wlx, clist->tlist[5].img);
 	}
-	if (clist.wlist.inited)
+	if (clist->wlist.inited)
 	{
-		mlx_destroy_window(clist.wlist.wlx, clist.wlist.winptr);
-		clist.wlist.winptr = NULL;
+		mlx_destroy_window(clist->wlist.wlx, clist->wlist.winptr);
+		clist->wlist.winptr = NULL;
 	}
-	if (clist.isoldmus && clist.wlist.inited)
+	if (clist->isoldmus && clist->wlist.inited)
 	{
-		pthread_cancel(clist.tid);
-		pthread_join(clist.tid, NULL);
+		pthread_cancel(clist->tid);
+		pthread_join(clist->tid, NULL);
 	}
 	ft_free_lists(clist);
 	ft_printf("Exiting program\n");
diff --git a/src/ft_extra_keys.c b/src/ft_extra_keys.c
index f02d298..e694667 100644
--- a/src/ft_extra_keys.c
+++ b/src/ft_extra_keys.c
@@ -22,13 +22,13 @@ int
 	float			sav_plane_x;
 	const float		rot_speed = FT_ROT_SPEED;
 
-	pl = clist.plist;
-	sav_dir_x = pl.dir_x;
-	pl.dir_x = pl.dir_x * cos(rot_speed) - pl.dir_y * sin(rot_speed);
-	pl.dir_y = sav_dir_x * sin(rot_speed) + pl.dir_y * cos(rot_speed);
-	sav_plane_x = pl.plane_x;
-	pl.plane_x = pl.plane_x * cos(rot_speed) - pl.plane_y * sin(rot_speed);
-	pl.plane_y = sav_plane_x * sin(rot_speed) + pl.plane_y * cos(rot_speed);
+	pl = &clist->plist;
+	sav_dir_x = pl->dir_x;
+	pl->dir_x = pl->dir_x * cos(rot_speed) - pl->dir_y * sin(rot_speed);
+	pl->dir_y = sav_dir_x * sin(rot_speed) + pl->dir_y * cos(rot_speed);
+	sav_plane_x = pl->plane_x;
+	pl->plane_x = pl->plane_x * cos(rot_speed) - pl->plane_y * sin(rot_speed);
+	pl->plane_y = sav_plane_x * sin(rot_speed) + pl->plane_y * cos(rot_speed);
 	return (0);
 }
 
@@ -40,27 +40,27 @@ int
 	float			sav_plane_x;
 	const float		rot_speed = FT_ROT_SPEED;
 
-	pl = clist.plist;
-	sav_dir_x = pl.dir_x;
-	pl.dir_x = pl.dir_x * cos(-rot_speed) - pl.dir_y * sin(-rot_speed);
-	pl.dir_y = sav_dir_x * sin(-rot_speed) + pl.dir_y * cos(-rot_speed);
-	sav_plane_x = pl.plane_x;
-	pl.plane_x = pl.plane_x * cos(-rot_speed) - pl.plane_y * sin(-rot_speed);
-	pl.plane_y = sav_plane_x * sin(-rot_speed) + pl.plane_y * cos(-rot_speed);
+	pl = &clist->plist;
+	sav_dir_x = pl->dir_x;
+	pl->dir_x = pl->dir_x * cos(-rot_speed) - pl->dir_y * sin(-rot_speed);
+	pl->dir_y = sav_dir_x * sin(-rot_speed) + pl->dir_y * cos(-rot_speed);
+	sav_plane_x = pl->plane_x;
+	pl->plane_x = pl->plane_x * cos(-rot_speed) - pl->plane_y * sin(-rot_speed);
+	pl->plane_y = sav_plane_x * sin(-rot_speed) + pl->plane_y * cos(-rot_speed);
 	return (0);
 }
 
 int
 	ft_f1_key(t_cub *clist)
 {
-	if (clist.ishud == 0)
+	if (clist->ishud == 0)
 	{
-		clist.ishud = 1;
+		clist->ishud = 1;
 		ft_draw_scene(clist);
 	}
-	else if (clist.ishud == 1)
+	else if (clist->ishud == 1)
 	{
-		clist.ishud = 0;
+		clist->ishud = 0;
 		ft_draw_scene(clist);
 	}
 	return (0);
diff --git a/src/ft_get_colors.c b/src/ft_get_colors.c
index 417608b..69eb8f8 100644
--- a/src/ft_get_colors.c
+++ b/src/ft_get_colors.c
@@ -30,7 +30,7 @@ static int8_t
 		if (i != ft_strlen(num[j]))
 		{
 			ft_free_words(num);
-			ft_sprintf(clist.errmsg, FT_ERR_COLOR_ALPHA);
+			ft_sprintf(clist->errmsg, FT_ERR_COLOR_ALPHA);
 			return (-1);
 		}
 		i = 0;
@@ -45,7 +45,7 @@ static int8_t
 	if (ft_atoi(num[0]) > 255 || ft_atoi(num[1]) > 255
 		|| ft_atoi(num[2]) > 255)
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_COLOR_MAX);
+		ft_sprintf(clist->errmsg, FT_ERR_COLOR_MAX);
 		ft_free_words(num);
 		return (-1);
 	}
@@ -57,7 +57,7 @@ static int8_t
 {
 	if (!num[0] || !num[1] || !num[2] || num[3])
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_COLOR_ARGS);
+		ft_sprintf(clist->errmsg, FT_ERR_COLOR_ARGS);
 		ft_free_words(num);
 		return (-1);
 	}
@@ -71,12 +71,12 @@ int8_t
 
 	if (!(*words) || !words[1] || words[2])
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_ARGS);
+		ft_sprintf(clist->errmsg, FT_ERR_ARGS);
 		return (-1);
 	}
 	if (!(num = ft_split(words[1], ',')))
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_ALLOCATE);
+		ft_sprintf(clist->errmsg, FT_ERR_ALLOCATE);
 		return (-1);
 	}
 	if (ft_check_nums_amount(num, clist) < 0)
@@ -85,9 +85,9 @@ int8_t
 		return (-1);
 	if (ft_check_max_int(num, clist) < 0)
 		return (-1);
-	clist.f_rgb.r = ft_atoi(num[0]);
-	clist.f_rgb.g = ft_atoi(num[1]);
-	clist.f_rgb.b = ft_atoi(num[2]);
+	clist->f_rgb.r = ft_atoi(num[0]);
+	clist->f_rgb.g = ft_atoi(num[1]);
+	clist->f_rgb.b = ft_atoi(num[2]);
 	ft_free_words(num);
 	return (0);
 }
@@ -99,12 +99,12 @@ int8_t
 
 	if (!(*words) || !words[1] || words[2])
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_ARGS);
+		ft_sprintf(clist->errmsg, FT_ERR_ARGS);
 		return (-1);
 	}
 	if (!(num = ft_split(words[1], ',')))
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_ALLOCATE);
+		ft_sprintf(clist->errmsg, FT_ERR_ALLOCATE);
 		return (-1);
 	}
 	if (ft_check_nums_amount(num, clist) < 0)
@@ -113,9 +113,9 @@ int8_t
 		return (-1);
 	if (ft_check_max_int(num, clist) < 0)
 		return (-1);
-	clist.c_rgb.r = ft_atoi(num[0]);
-	clist.c_rgb.g = ft_atoi(num[1]);
-	clist.c_rgb.b = ft_atoi(num[2]);
+	clist->c_rgb.r = ft_atoi(num[0]);
+	clist->c_rgb.g = ft_atoi(num[1]);
+	clist->c_rgb.b = ft_atoi(num[2]);
 	ft_free_words(num);
 	return (0);
 }
diff --git a/src/ft_get_map.c b/src/ft_get_map.c
index 6a73e54..60bcee0 100644
--- a/src/ft_get_map.c
+++ b/src/ft_get_map.c
@@ -50,35 +50,35 @@ static void
 static int8_t
 	ft_cat_mapl(char *line, size_t i, t_cub *clist)
 {
-	if (!(clist.mlist.mapl = (char *)ft_nrealloc(clist.mlist.mapl,
-				((clist.mlist.map_w + 1) * i) * sizeof(char),
-				((clist.mlist.map_w + 1) * (i + 1)) * sizeof(char))))
+	if (!(clist->mlist.mapl = (char *)ft_nrealloc(clist->mlist.mapl,
+				((clist->mlist.map_w + 1) * i) * sizeof(char),
+				((clist->mlist.map_w + 1) * (i + 1)) * sizeof(char))))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ALLOCATE);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ALLOCATE);
 		return (-1);
 	}
-	ft_linecpy(line, clist.mlist.mapl, (clist.mlist.map_w + 1) * i);
+	ft_linecpy(line, clist->mlist.mapl, (clist->mlist.map_w + 1) * i);
 	return (0);
 }
 
 int
 	ft_get_map_first_line(char *line, t_cub *clist)
 {
-	clist.mlist.map_start = clist.mlist.line_chk;
+	clist->mlist.map_start = clist->mlist.line_chk;
 	if (!line[0])
 	{
 		ft_memdel((void**)&line);
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_READ);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_READ);
 		return (-1);
 	}
-	clist.mlist.map_w = ft_get_line_len(line);
+	clist->mlist.map_w = ft_get_line_len(line);
 	if (ft_check_map_line(line, 1, clist) < 0)
 	{
 		ft_memdel((void**)&line);
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_READ);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_READ);
 		return (-1);
 	}
-	ft_memdel((void**)&clist.mlist.mapl);
+	ft_memdel((void**)&clist->mlist.mapl);
 	if (ft_cat_mapl(line, 0, clist) < 0)
 	{
 		ft_memdel((void**)&line);
@@ -99,7 +99,7 @@ int
 	ret = 1;
 	while ((ret = get_next_line(fd, &line)) > 0)
 	{
-		clist.mlist.line_chk += 1;
+		clist->mlist.line_chk += 1;
 		if (!line[0] || ft_check_map_line(line, 0, clist) < 0
 			|| ft_cat_mapl(line, i, clist) < 0)
 		{
@@ -110,10 +110,10 @@ int
 		i++;
 	}
 	ft_memdel((void**)&line);
-	clist.mlist.mapl[((clist.mlist.map_w + 1) * i) - 1] = '\0';
-	ft_free_words(clist.mlist.map);
-	clist.mlist.map = ft_split(clist.mlist.mapl, '\n');
-	clist.mlist.map_h = ft_get_map_h(clist.mlist.map);
-	ft_memdel((void**)&clist.mlist.mapl);
+	clist->mlist.mapl[((clist->mlist.map_w + 1) * i) - 1] = '\0';
+	ft_free_words(clist->mlist.map);
+	clist->mlist.map = ft_split(clist->mlist.mapl, '\n');
+	clist->mlist.map_h = ft_get_map_h(clist->mlist.map);
+	ft_memdel((void**)&clist->mlist.mapl);
 	return (0);
 }
diff --git a/src/ft_get_music.c b/src/ft_get_music.c
index 3d40ddf..eb25af3 100644
--- a/src/ft_get_music.c
+++ b/src/ft_get_music.c
@@ -20,18 +20,18 @@ static void
 {
 	uint8_t	len;
 
-	len = ft_strlen(mlist.music_path);
+	len = ft_strlen(mlist->music_path);
 	if (FT_OS == 2)
 		len += 22;
 	else
 		len += 18;
-	ft_memdel((void**)&mlist.music_cmd);
-	if (!(mlist.music_cmd = (char *)malloc((len + 1) * sizeof(char))))
+	ft_memdel((void**)&mlist->music_cmd);
+	if (!(mlist->music_cmd = (char *)malloc((len + 1) * sizeof(char))))
 		return ;
 	if (FT_OS == 2)
 	{
-		ft_sprintf(mlist.music_cmd, "aplay -f cd -t wav -q %s",
-					mlist.music_path);
+		ft_sprintf(mlist->music_cmd, "aplay -f cd -t wav -q %s",
+					mlist->music_path);
 	}
 	else {}
 }
@@ -41,26 +41,26 @@ int8_t
 {
 	if (!(*words) || !(*(words + 1)) || (*(words + 2)))
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_ARGS);
+		ft_sprintf(clist->errmsg, FT_ERR_ARGS);
 		return (-1);
 	}
 	if (ft_check_ext(*(words + 1), ".wav") < 0)
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_NOT_A_WAV);
+		ft_sprintf(clist->errmsg, FT_ERR_NOT_A_WAV);
 		return (-1);
 	}
-	ft_memdel((void**)&clist.mlist.music_path);
-	if (!(clist.mlist.music_path = ft_strdup(*(words + 1))))
+	ft_memdel((void**)&clist->mlist.music_path);
+	if (!(clist->mlist.music_path = ft_strdup(*(words + 1))))
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_ALLOCATE);
+		ft_sprintf(clist->errmsg, FT_ERR_ALLOCATE);
 		return (-1);
 	}
-	if (ft_check_not_found(clist.mlist.music_path) < 0)
+	if (ft_check_not_found(clist->mlist.music_path) < 0)
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_RD_MUSIC);
+		ft_sprintf(clist->errmsg, FT_ERR_RD_MUSIC);
 		return (-1);
 	}
-	clist.mlist.ismusic = 1;
-	ft_set_music_cmd(clist.mlist);
+	clist->mlist.ismusic = 1;
+	ft_set_music_cmd(&clist->mlist);
 	return (0);
 }
diff --git a/src/ft_get_nlvl_pos.c b/src/ft_get_nlvl_pos.c
index d0bf3e7..db726e1 100644
--- a/src/ft_get_nlvl_pos.c
+++ b/src/ft_get_nlvl_pos.c
@@ -20,14 +20,14 @@ void
 
 	x = 1;
 	y = 1;
-	while (ml.map[y])
+	while (ml->map[y])
 	{
-		while (ml.map[y][x])
+		while (ml->map[y][x])
 		{
-			if (ml.map[y][x] == 'L')
+			if (ml->map[y][x] == 'L')
 			{
-				ml.nlx = x;
-				ml.nly = y;
+				ml->nlx = x;
+				ml->nly = y;
 				return ;
 			}
 			x++;
diff --git a/src/ft_get_path_nl.c b/src/ft_get_path_nl.c
index c702129..68de5c6 100644
--- a/src/ft_get_path_nl.c
+++ b/src/ft_get_path_nl.c
@@ -19,23 +19,23 @@ int8_t
 {
 	if (!(*words) || !(*(words + 1)) || (*(words + 2)))
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_ARGS);
+		ft_sprintf(clist->errmsg, FT_ERR_ARGS);
 		return (-1);
 	}
 	if (ft_check_ext(*(words + 1), ".cub") < 0)
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_NOT_A_CUB);
+		ft_sprintf(clist->errmsg, FT_ERR_NOT_A_CUB);
 		return (-1);
 	}
-	ft_memdel((void**)&clist.mlist.nlevel_path);
-	if (!(clist.mlist.nlevel_path = ft_strdup(*(words + 1))))
+	ft_memdel((void**)&clist->mlist.nlevel_path);
+	if (!(clist->mlist.nlevel_path = ft_strdup(*(words + 1))))
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_ALLOCATE);
+		ft_sprintf(clist->errmsg, FT_ERR_ALLOCATE);
 		return (-1);
 	}
-	if (ft_check_not_found(clist.mlist.nlevel_path) < 0)
+	if (ft_check_not_found(clist->mlist.nlevel_path) < 0)
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_RD_NL_MAP);
+		ft_sprintf(clist->errmsg, FT_ERR_RD_NL_MAP);
 		return (-1);
 	}
 	return (0);
diff --git a/src/ft_get_player_spawn.c b/src/ft_get_player_spawn.c
index a4e94ea..fabcba8 100644
--- a/src/ft_get_player_spawn.c
+++ b/src/ft_get_player_spawn.c
@@ -21,21 +21,21 @@ static void
 	float	sav_dir_x;
 	float	sav_plane_x;
 
-	sav_dir_x = pl.dir_x;
-	pl.dir_x = -pl.dir_y;
-	pl.dir_y = sav_dir_x;
-	sav_plane_x = pl.plane_x;
-	pl.plane_x = -pl.plane_y;
-	pl.plane_y = sav_plane_x;
+	sav_dir_x = pl->dir_x;
+	pl->dir_x = -pl->dir_y;
+	pl->dir_y = sav_dir_x;
+	sav_plane_x = pl->plane_x;
+	pl->plane_x = -pl->plane_y;
+	pl->plane_y = sav_plane_x;
 }
 
 static void
 	ft_get_s_dir(t_player *pl)
 {
-	pl.dir_x = -pl.dir_x;
-	pl.dir_y = -pl.dir_y;
-	pl.plane_x = -pl.plane_x;
-	pl.plane_y = -pl.plane_y;
+	pl->dir_x = -pl->dir_x;
+	pl->dir_y = -pl->dir_y;
+	pl->plane_x = -pl->plane_x;
+	pl->plane_y = -pl->plane_y;
 }
 
 static void
@@ -44,12 +44,12 @@ static void
 	float	sav_dir_x;
 	float	sav_plane_x;
 
-	sav_dir_x = pl.dir_x;
-	pl.dir_x = pl.dir_y;
-	pl.dir_y = -sav_dir_x;
-	sav_plane_x = pl.plane_x;
-	pl.plane_x = pl.plane_y;
-	pl.plane_y = -sav_plane_x;
+	sav_dir_x = pl->dir_x;
+	pl->dir_x = pl->dir_y;
+	pl->dir_y = -sav_dir_x;
+	sav_plane_x = pl->plane_x;
+	pl->plane_x = pl->plane_y;
+	pl->plane_y = -sav_plane_x;
 }
 
 static void
@@ -71,17 +71,17 @@ void
 
 	x = 1;
 	y = 1;
-	while (clist.mlist.map[y])
+	while (clist->mlist.map[y])
 	{
-		while (clist.mlist.map[y][x])
+		while (clist->mlist.map[y][x])
 		{
-			if (ft_ischarset("NSEW", clist.mlist.map[y][x]))
+			if (ft_ischarset("NSEW", clist->mlist.map[y][x]))
 			{
-				plist.pos_x = x + 0.5;
-				plist.pos_y = y + 0.5;
-				plist.start_x = plist.pos_x;
-				plist.start_y = plist.pos_y;
-				ft_get_start_side(clist.mlist.map[y][x], clist.plist);
+				plist->pos_x = x + 0.5;
+				plist->pos_y = y + 0.5;
+				plist->start_x = plist->pos_x;
+				plist->start_y = plist->pos_y;
+				ft_get_start_side(clist->mlist.map[y][x], plist);
 				return ;
 			}
 			x++;
diff --git a/src/ft_get_res.c b/src/ft_get_res.c
index 8b86cea..013b061 100644
--- a/src/ft_get_res.c
+++ b/src/ft_get_res.c
@@ -24,7 +24,7 @@ static int8_t
 		i++;
 	if (i != ft_strlen(word))
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_RES_ALPHA);
+		ft_sprintf(clist->errmsg, FT_ERR_RES_ALPHA);
 		return (-1);
 	}
 	return (0);
@@ -33,10 +33,10 @@ static int8_t
 static void
 	ft_securize_scr(t_win *wl)
 {
-	while (wl.x_size % 10)
-		wl.x_size -= 1;
-	while (wl.y_size % 10)
-		wl.y_size -= 1;
+	while (wl->x_size % 10)
+		wl->x_size -= 1;
+	while (wl->y_size % 10)
+		wl->y_size -= 1;
 }
 
 static int8_t
@@ -45,7 +45,7 @@ static int8_t
 	if (!(*words + 0) || !(*(words + 1)) ||
 		!(*(words + 2)) || (*(words + 3)))
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_ARGS);
+		ft_sprintf(clist->errmsg, FT_ERR_ARGS);
 		return (-1);
 	}
 	return (0);
@@ -56,20 +56,20 @@ int8_t
 {
 	t_win	*wlist;
 
-	wlist = clist.wlist;
-	if (clist.currlvl > 0)
+	wlist = &clist->wlist;
+	if (clist->currlvl > 0)
 		return (0);
 	if (ft_check_res_args(words, clist) < 0)
 		return (-1);
 	if ((ft_checkdigit(words[1], clist) < 0) ||
 		(ft_checkdigit(words[2], clist) < 0))
 		return (-1);
-	wlist.x_size = ft_atoi(words[1]);
-	wlist.y_size = ft_atoi(words[2]);
-	if (wlist.x_size <= 10
-		|| wlist.y_size <= 10)
+	wlist->x_size = ft_atoi(words[1]);
+	wlist->y_size = ft_atoi(words[2]);
+	if (wlist->x_size <= 10
+		|| wlist->y_size <= 10)
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_RES_SMALL);
+		ft_sprintf(clist->errmsg, FT_ERR_RES_SMALL);
 		return (-1);
 	}
 	if (ft_get_screen_size(wlist) < 0)
diff --git a/src/ft_get_screen_size.c b/src/ft_get_screen_size.c
index 5bfd04e..2b437c3 100644
--- a/src/ft_get_screen_size.c
+++ b/src/ft_get_screen_size.c
@@ -22,11 +22,11 @@ int8_t
 		return (-1);
 	if (!(*words + 0) || !(*(words + 1)) || (*(words + 2)))
 		return (-1);
-	wlist.x_max_size = ft_atoi(words[0]);
-	wlist.y_max_size = ft_atoi(words[1]);
-	if (wlist.x_size > wlist.x_max_size)
-		wlist.x_size = wlist.x_max_size;
-	if (wlist.y_size > wlist.y_max_size)
-		wlist.y_size = wlist.y_max_size;
+	wlist->x_max_size = ft_atoi(words[0]);
+	wlist->y_max_size = ft_atoi(words[1]);
+	if (wlist->x_size > wlist->x_max_size)
+		wlist->x_size = wlist->x_max_size;
+	if (wlist->y_size > wlist->y_max_size)
+		wlist->y_size = wlist->y_max_size;
 	return (ft_free_words(words));
 }
diff --git a/src/ft_get_sprite.c b/src/ft_get_sprite.c
index 27a55d6..4580681 100644
--- a/src/ft_get_sprite.c
+++ b/src/ft_get_sprite.c
@@ -22,14 +22,14 @@ void
 
 	x = 1;
 	y = 1;
-	while (clist.mlist.map[y])
+	while (clist->mlist.map[y])
 	{
-		while (clist.mlist.map[y][x])
+		while (clist->mlist.map[y][x])
 		{
-			if (ft_ischarset("2", clist.mlist.map[y][x]))
+			if (ft_ischarset("2", clist->mlist.map[y][x]))
 			{
-				clist.sp_list.s_pos_x = x + 0.5;
-				clist.sp_list.s_pos_y = y + 0.5;
+				clist->sp_list.s_pos_x = x + 0.5;
+				clist->sp_list.s_pos_y = y + 0.5;
 				return ;
 			}
 			x++;
@@ -44,23 +44,23 @@ int8_t
 {
 	if (!(*words) || !words[1] || words[2])
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ARGS);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ARGS);
 		return (-1);
 	}
 	if (ft_check_ext(*(words + 1), ".xpm") < 0)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_NOT_A_XPM);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_NOT_A_XPM);
 		return (-1);
 	}
-	ft_memdel((void**)&clist.mlist.sprite_path);
-	if (!(clist.mlist.sprite_path = ft_strdup(*(words + 1))))
+	ft_memdel((void**)&clist->mlist.sprite_path);
+	if (!(clist->mlist.sprite_path = ft_strdup(*(words + 1))))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ALLOCATE);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ALLOCATE);
 		return (-1);
 	}
-	if (ft_check_not_found(clist.mlist.sprite_path) < 0)
+	if (ft_check_not_found(clist->mlist.sprite_path) < 0)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_RD_SP);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_RD_SP);
 		return (-1);
 	}
 	return (0);
diff --git a/src/ft_get_tex.c b/src/ft_get_tex.c
index 655e9ad..f8a817c 100644
--- a/src/ft_get_tex.c
+++ b/src/ft_get_tex.c
@@ -19,23 +19,23 @@ int8_t
 {
 	if (!(*words) || !(*(words + 1)) || (*(words + 2)))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ARGS);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ARGS);
 		return (-1);
 	}
 	if (ft_check_ext(*(words + 1), ".xpm") < 0)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_NOT_A_XPM);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_NOT_A_XPM);
 		return (-1);
 	}
-	ft_memdel((void**)&clist.mlist.no_tex_path);
-	if (!(clist.mlist.no_tex_path = ft_strdup(*(words + 1))))
+	ft_memdel((void**)&clist->mlist.no_tex_path);
+	if (!(clist->mlist.no_tex_path = ft_strdup(*(words + 1))))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ALLOCATE);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ALLOCATE);
 		return (-1);
 	}
-	if (ft_check_not_found(clist.mlist.no_tex_path) < 0)
+	if (ft_check_not_found(clist->mlist.no_tex_path) < 0)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_RD_NO);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_RD_NO);
 		return (-1);
 	}
 	return (0);
@@ -46,23 +46,23 @@ int8_t
 {
 	if (!(*words) || !(*(words + 1)) || (*(words + 2)))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ARGS);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ARGS);
 		return (-1);
 	}
 	if (ft_check_ext(*(words + 1), ".xpm") < 0)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_NOT_A_XPM);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_NOT_A_XPM);
 		return (-1);
 	}
-	ft_memdel((void**)&clist.mlist.so_tex_path);
-	if (!(clist.mlist.so_tex_path = ft_strdup(*(words + 1))))
+	ft_memdel((void**)&clist->mlist.so_tex_path);
+	if (!(clist->mlist.so_tex_path = ft_strdup(*(words + 1))))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ALLOCATE);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ALLOCATE);
 		return (-1);
 	}
-	if (ft_check_not_found(clist.mlist.so_tex_path) < 0)
+	if (ft_check_not_found(clist->mlist.so_tex_path) < 0)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_RD_SO);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_RD_SO);
 		return (-1);
 	}
 	return (0);
@@ -73,23 +73,23 @@ int8_t
 {
 	if (!(*words) || !(*(words + 1)) || (*(words + 2)))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ARGS);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ARGS);
 		return (-1);
 	}
 	if (ft_check_ext(*(words + 1), ".xpm") < 0)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_NOT_A_XPM);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_NOT_A_XPM);
 		return (-1);
 	}
-	ft_memdel((void**)&clist.mlist.ea_tex_path);
-	if (!(clist.mlist.ea_tex_path = ft_strdup(*(words + 1))))
+	ft_memdel((void**)&clist->mlist.ea_tex_path);
+	if (!(clist->mlist.ea_tex_path = ft_strdup(*(words + 1))))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ALLOCATE);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ALLOCATE);
 		return (-1);
 	}
-	if (ft_check_not_found(clist.mlist.ea_tex_path) < 0)
+	if (ft_check_not_found(clist->mlist.ea_tex_path) < 0)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_RD_EA);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_RD_EA);
 		return (-1);
 	}
 	return (0);
@@ -100,23 +100,23 @@ int8_t
 {
 	if (!(*words) || !(*(words + 1)) || (*(words + 2)))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ARGS);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ARGS);
 		return (-1);
 	}
 	if (ft_check_ext(*(words + 1), ".xpm") < 0)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_NOT_A_XPM);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_NOT_A_XPM);
 		return (-1);
 	}
-	ft_memdel((void**)&clist.mlist.we_tex_path);
-	if (!(clist.mlist.we_tex_path = ft_strdup(*(words + 1))))
+	ft_memdel((void**)&clist->mlist.we_tex_path);
+	if (!(clist->mlist.we_tex_path = ft_strdup(*(words + 1))))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ALLOCATE);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ALLOCATE);
 		return (-1);
 	}
-	if (ft_check_not_found(clist.mlist.we_tex_path) < 0)
+	if (ft_check_not_found(clist->mlist.we_tex_path) < 0)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_RD_WE);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_RD_WE);
 		return (-1);
 	}
 	return (0);
diff --git a/src/ft_get_tex_nl.c b/src/ft_get_tex_nl.c
index 10dba91..bb071f7 100644
--- a/src/ft_get_tex_nl.c
+++ b/src/ft_get_tex_nl.c
@@ -19,23 +19,23 @@ int8_t
 {
 	if (!(*words) || !(*(words + 1)) || (*(words + 2)))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ARGS);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ARGS);
 		return (-1);
 	}
 	if (ft_check_ext(*(words + 1), ".xpm") < 0)
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_NOT_A_XPM);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_NOT_A_XPM);
 		return (-1);
 	}
-	ft_memdel((void**)&clist.mlist.nl_tex_path);
-	if (!(clist.mlist.nl_tex_path = ft_strdup(*(words + 1))))
+	ft_memdel((void**)&clist->mlist.nl_tex_path);
+	if (!(clist->mlist.nl_tex_path = ft_strdup(*(words + 1))))
 	{
-		ft_sprintf(clist.errmsg, "%s", FT_ERR_ALLOCATE);
+		ft_sprintf(clist->errmsg, "%s", FT_ERR_ALLOCATE);
 		return (-1);
 	}
-	if (ft_check_not_found(clist.mlist.nl_tex_path) < 0)
+	if (ft_check_not_found(clist->mlist.nl_tex_path) < 0)
 	{
-		ft_sprintf(clist.errmsg, FT_ERR_RD_NL_TEX);
+		ft_sprintf(clist->errmsg, FT_ERR_RD_NL_TEX);
 		return (-1);
 	}
 	return (0);
diff --git a/src/ft_hooks_and_loops.c b/src/ft_hooks_and_loops.c
index 7a31d8a..b8bdd36 100644
--- a/src/ft_hooks_and_loops.c
+++ b/src/ft_hooks_and_loops.c
@@ -17,9 +17,9 @@
 void
 	ft_hooks_and_loops(t_win *wl, t_cub *cl)
 {
-	mlx_hook(wl.winptr, 2, (1L << 0), ft_key_event, cl);
-	mlx_hook(wl.winptr, 3, (1L << 1), ft_key_release, cl);
-	mlx_loop_hook(wl.wlx, ft_key_loop, cl);
-	mlx_hook(wl.winptr, 17, 0L, ft_click_close, cl);
-	mlx_loop(wl.wlx);
+	mlx_hook(wl->winptr, 2, (1L << 0), ft_key_event, cl);
+	mlx_hook(wl->winptr, 3, (1L << 1), ft_key_release, cl);
+	mlx_loop_hook(wl->wlx, ft_key_loop, cl);
+	mlx_hook(wl->winptr, 17, 0L, ft_click_close, cl);
+	mlx_loop(wl->wlx);
 }
diff --git a/src/ft_init_funptr.c b/src/ft_init_funptr.c
index d9ebf1f..1988cb0 100644
--- a/src/ft_init_funptr.c
+++ b/src/ft_init_funptr.c
@@ -15,21 +15,21 @@
 void
 	ft_init_funptr(t_cub *clist)
 {
-	clist.key_ptr[0] = ft_w_key;
-	clist.key_ptr[1] = ft_a_key;
-	clist.key_ptr[2] = ft_s_key;
-	clist.key_ptr[3] = ft_d_key;
-	clist.key_ptr[4] = ft_left_key;
-	clist.key_ptr[5] = ft_right_key;
-	clist.get_ptr[0] = ft_get_res;
-	clist.get_ptr[1] = ft_get_tex_no;
-	clist.get_ptr[2] = ft_get_tex_so;
-	clist.get_ptr[3] = ft_get_tex_ea;
-	clist.get_ptr[4] = ft_get_tex_we;
-	clist.get_ptr[5] = ft_get_sprite;
-	clist.get_ptr[6] = ft_get_f_color;
-	clist.get_ptr[7] = ft_get_c_color;
-	clist.get_ptr[8] = ft_get_path_nl;
-	clist.get_ptr[9] = ft_get_tex_nl;
-	clist.get_ptr[10] = ft_get_music;
+	clist->key_ptr[0] = ft_w_key;
+	clist->key_ptr[1] = ft_a_key;
+	clist->key_ptr[2] = ft_s_key;
+	clist->key_ptr[3] = ft_d_key;
+	clist->key_ptr[4] = ft_left_key;
+	clist->key_ptr[5] = ft_right_key;
+	clist->get_ptr[0] = ft_get_res;
+	clist->get_ptr[1] = ft_get_tex_no;
+	clist->get_ptr[2] = ft_get_tex_so;
+	clist->get_ptr[3] = ft_get_tex_ea;
+	clist->get_ptr[4] = ft_get_tex_we;
+	clist->get_ptr[5] = ft_get_sprite;
+	clist->get_ptr[6] = ft_get_f_color;
+	clist->get_ptr[7] = ft_get_c_color;
+	clist->get_ptr[8] = ft_get_path_nl;
+	clist->get_ptr[9] = ft_get_tex_nl;
+	clist->get_ptr[10] = ft_get_music;
 }
diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c
index 2b2593c..1b91ed0 100644
--- a/src/ft_init_lists.c
+++ b/src/ft_init_lists.c
@@ -15,8 +15,7 @@
 #include <cub3d.h>
 #include <stddef.h>
 #include <stdlib.h>
-#include <limits.h>
-#include <math.h>
+#include <stdint.h>
 
 t_rgb
 	ft_init_rgb(void)
@@ -30,12 +29,10 @@ t_rgb
 }
 
 static t_player
-	*ft_init_player(void)
+	ft_init_player(void)
 {
-	t_player	*plist;
+	t_player	plist;
 
-	if (!(plist = (t_player*)malloc(sizeof(t_player))))
-		return (NULL);
 	plist.pos_x = 0;
 	plist.pos_y = 0;
 	plist.start_x = 0;
@@ -48,59 +45,54 @@ static t_player
 	return (plist);
 }
 
-static t_win
-	*ft_init_win(void)
+static int8_t
+	ft_init_win(t_win *wl)
 {
-	t_win	*wlist;
-
-	if (!(wlist = (t_win*)malloc(sizeof(t_win))))
-		return (NULL);
-	if (!(wlist.winptr = malloc(1)))
-		return (NULL);
-	wlist.inited = 0;
-	wlist.x_size = 0;
-	wlist.y_size = 0;
-	wlist.x_max_size = 0;
-	wlist.y_max_size = 0;
-	return (wlist);
+	if (!(wl->winptr = malloc(1)))
+		return (-1);
+	wl->inited = 0;
+	wl->x_size = 0;
+	wl->y_size = 0;
+	wl->x_max_size = 0;
+	wl->y_max_size = 0;
+	/* wlist = &wl; */
+	return (0);
 }
 
-static t_cub
-	ft_init_cub(void)
+static int8_t
+	ft_init_cub(t_cub *cl)
 {
-	t_cub		clist;
-	uint8_t		i;
+	int8_t		i;
 
-	if (!(clist.plist = ft_init_player()) ||
-		!(clist.mlist = ft_init_map()))
-		return (NULL);
-	ft_bzero(clist.errmsg, 40);
+	if (ft_init_map(&cl->mlist) < 0)
+		return (-1);
+	cl->plist = ft_init_player();
+	ft_bzero(cl->errmsg, 40);
 	i = -1;
 	while (++i < 5)
-		clist.key_input[i] = -1;
-	clist.ishud = 0;
-	clist.isoldmus = 0;
-	clist.f_rgb = ft_init_rgb();
-	clist.c_rgb = ft_init_rgb();
-	clist.rlist = ft_init_s_ray();
-	clist.currlvl = 0;
-	clist.walltexgood = 0;
-	ft_init_funptr(clist);
-	return (clist);
+		cl->key_input[i] = -1;
+	cl->ishud = 0;
+	cl->isoldmus = 0;
+	cl->f_rgb = ft_init_rgb();
+	cl->c_rgb = ft_init_rgb();
+	cl->rlist = ft_init_s_ray();
+	cl->currlvl = 0;
+	cl->walltexgood = 0;
+	ft_init_funptr(cl);
+	return (0);
 }
 
-t_cub
-	ft_init_cub3d(void)
+int8_t
+	ft_init_cub3d(t_cub *clist)
 {
-	t_cub	cl;
+	/* t_cub	*cl; */
 
-	if (!(cl = ft_init_cub()))
-		return (NULL);
-	if (!(cl.wlist = ft_init_win()))
-	{
-		ft_memdel((void**)&cl.wlist);
-		ft_memdel((void**)&cl);
-		return (NULL);
-	}
-	return (cl);
+	/* if (!(cl = (t_cub*)malloc(sizeof(t_cub)))) */
+	/* 	return (-1); */
+	if (ft_init_cub(clist) < 0)
+		return (-1);
+	if (ft_init_win(&clist->wlist) < 0)
+		return (-1);
+	/* *clist = cl; */
+	return (0);
 }
diff --git a/src/ft_init_map.c b/src/ft_init_map.c
index 4e8650b..a6704b6 100644
--- a/src/ft_init_map.c
+++ b/src/ft_init_map.c
@@ -18,43 +18,39 @@
 static int8_t
 	ft_init_map_callocs(t_map *mlist)
 {
-	if (!(mlist.no_tex_path = (char*)ft_calloc(1, sizeof(char))) ||
-		!(mlist.so_tex_path = (char*)ft_calloc(1, sizeof(char))) ||
-		!(mlist.ea_tex_path = (char*)ft_calloc(1, sizeof(char))) ||
-		!(mlist.we_tex_path = (char*)ft_calloc(1, sizeof(char))) ||
-		!(mlist.sprite_path = (char*)ft_calloc(1, sizeof(char))) ||
-		!(mlist.nl_tex_path = (char*)ft_calloc(1, sizeof(char))) ||
-		!(mlist.nlevel_path = (char*)ft_calloc(1, sizeof(char))) ||
-		!(mlist.music_path = (char*)ft_calloc(1, sizeof(char))) ||
-		!(mlist.music_cmd = (char*)ft_calloc(1, sizeof(char))) ||
-		!(mlist.mapl = (char*)ft_calloc(1, sizeof(char))) ||
-		!(mlist.map = (char**)ft_calloc(2, sizeof(char*))) ||
-		!(mlist.map[0] = (char*)ft_calloc(1, sizeof(char))))
+	if (!(mlist->no_tex_path = (char*)ft_calloc(1, sizeof(char))) ||
+		!(mlist->so_tex_path = (char*)ft_calloc(1, sizeof(char))) ||
+		!(mlist->ea_tex_path = (char*)ft_calloc(1, sizeof(char))) ||
+		!(mlist->we_tex_path = (char*)ft_calloc(1, sizeof(char))) ||
+		!(mlist->sprite_path = (char*)ft_calloc(1, sizeof(char))) ||
+		!(mlist->nl_tex_path = (char*)ft_calloc(1, sizeof(char))) ||
+		!(mlist->nlevel_path = (char*)ft_calloc(1, sizeof(char))) ||
+		!(mlist->music_path = (char*)ft_calloc(1, sizeof(char))) ||
+		!(mlist->music_cmd = (char*)ft_calloc(1, sizeof(char))) ||
+		!(mlist->mapl = (char*)ft_calloc(1, sizeof(char))) ||
+		!(mlist->map = (char**)ft_calloc(2, sizeof(char*))) ||
+		!(mlist->map[0] = (char*)ft_calloc(1, sizeof(char))))
 		return (-1);
 	return (0);
 }
 
-t_map
-	*ft_init_map(void)
+int8_t
+	ft_init_map(t_map *mlist)
 {
-	t_map		*mlist;
-
-	if (!(mlist = (t_map*)malloc(sizeof(t_map))))
-		return (NULL);
 	if (ft_init_map_callocs(mlist) < 0)
-		return (NULL);
-	mlist.map[1] = 0;
-	mlist.map_w = 0;
-	mlist.map_h = 0;
-	mlist.x_step = 0;
-	mlist.y_step = 0;
-	mlist.line_chk = 0;
-	mlist.map_start = 0;
-	mlist.isspawn = 0;
-	mlist.isnlvl = 0;
-	mlist.ismusic = 0;
-	mlist.scale = 0;
-	mlist.nlx = 0;
-	mlist.nly = 0;
-	return (mlist);
+		return (-1);
+	mlist->map[1] = 0;
+	mlist->map_w = 0;
+	mlist->map_h = 0;
+	mlist->x_step = 0;
+	mlist->y_step = 0;
+	mlist->line_chk = 0;
+	mlist->map_start = 0;
+	mlist->isspawn = 0;
+	mlist->isnlvl = 0;
+	mlist->ismusic = 0;
+	mlist->scale = 0;
+	mlist->nlx = 0;
+	mlist->nly = 0;
+	return (0);
 }
diff --git a/src/ft_init_winlx.c b/src/ft_init_winlx.c
index a65e419..dee4009 100644
--- a/src/ft_init_winlx.c
+++ b/src/ft_init_winlx.c
@@ -18,7 +18,7 @@
 int
 	ft_init_winlx(t_cub *clist)
 {
-	if (!(clist.wlist.wlx = mlx_init()))
+	if (!(clist->wlist.wlx = mlx_init()))
 		return (-1);
 	return (0);
 }
@@ -26,10 +26,10 @@ int
 int
 	ft_init_winptr(t_cub *clist)
 {
-	ft_memdel((void**)&clist.wlist.winptr);
-	if (!(clist.wlist.winptr = mlx_new_window(clist.wlist.wlx,
-				clist.wlist.x_size, clist.wlist.y_size, "Cub3D")))
+	ft_memdel((void**)&clist->wlist.winptr);
+	if (!(clist->wlist.winptr = mlx_new_window(clist->wlist.wlx,
+				clist->wlist.x_size, clist->wlist.y_size, "Cub3D")))
 		return (-1);
-	clist.wlist.inited = 1;
+	clist->wlist.inited = 1;
 	return (0);
 }
diff --git a/src/ft_key_events.c b/src/ft_key_events.c
index 36b4279..317715d 100644
--- a/src/ft_key_events.c
+++ b/src/ft_key_events.c
@@ -21,9 +21,9 @@ static void
 	uint8_t	i;
 
 	i = 0;
-	while (i < 5 && clist.key_input[i] != keycode && clist.key_input[i] != -1)
+	while (i < 5 && clist->key_input[i] != keycode && clist->key_input[i] != -1)
 		i++;
-	clist.key_input[i] = keycode;
+	clist->key_input[i] = keycode;
 }
 
 int
diff --git a/src/ft_key_loop.c b/src/ft_key_loop.c
index 0c759db..e2e2b5c 100644
--- a/src/ft_key_loop.c
+++ b/src/ft_key_loop.c
@@ -19,13 +19,13 @@ static uint64_t
 	ft_find_x(int32_t key, const t_player *pl)
 {
 	if (key == 0)
-		return (pl.pos_x + (pl.dir_y * FT_COLL_MULT));
+		return (pl->pos_x + (pl->dir_y * FT_COLL_MULT));
 	else if (key == 1)
-		return (pl.pos_x + (pl.dir_x * (FT_COLL_MULT / 2)));
+		return (pl->pos_x + (pl->dir_x * (FT_COLL_MULT / 2)));
 	else if (key == 2)
-		return (pl.pos_x - (pl.dir_y * FT_COLL_MULT));
+		return (pl->pos_x - (pl->dir_y * FT_COLL_MULT));
 	else if (key == 3)
-		return (pl.pos_x - (pl.dir_x * (FT_COLL_MULT / 2)));
+		return (pl->pos_x - (pl->dir_x * (FT_COLL_MULT / 2)));
 	return (1);
 }
 
@@ -33,13 +33,13 @@ static uint64_t
 	ft_find_y(int32_t key, const t_player *pl)
 {
 	if (key == 0)
-		return (pl.pos_y + (pl.dir_x * FT_COLL_MULT));
+		return (pl->pos_y + (pl->dir_x * FT_COLL_MULT));
 	else if (key == 1)
-		return (pl.pos_y - (pl.dir_y * (FT_COLL_MULT / 2)));
+		return (pl->pos_y - (pl->dir_y * (FT_COLL_MULT / 2)));
 	else if (key == 2)
-		return (pl.pos_y - (pl.dir_x * FT_COLL_MULT));
+		return (pl->pos_y - (pl->dir_x * FT_COLL_MULT));
 	else if (key == 3)
-		return (pl.pos_y + (pl.dir_y * (FT_COLL_MULT / 2)));
+		return (pl->pos_y + (pl->dir_y * (FT_COLL_MULT / 2)));
 	return (1);
 }
 
@@ -50,13 +50,13 @@ static void
 	uint64_t	y;
 	t_player	*pl;
 
-	pl = cl.plist;
+	pl = &cl->plist;
 	x = ft_find_x(key, pl);
 	y = ft_find_y(key, pl);
-	if (cl.mlist.map[y][x] == '1' || cl.mlist.map[y][x] == '2')
+	if (cl->mlist.map[y][x] == '1' || cl->mlist.map[y][x] == '2')
 	{
-		pl.pos_y = old_y;
-		pl.pos_x = old_x;
+		pl->pos_y = old_y;
+		pl->pos_x = old_x;
 	}
 }
 
@@ -64,22 +64,22 @@ int
 	ft_key_loop(t_cub *cl)
 {
 	uint8_t			i;
-	const float		old_y = cl.plist.pos_y;
-	const float		old_x = cl.plist.pos_x;
+	const float		old_y = cl->plist.pos_y;
+	const float		old_x = cl->plist.pos_x;
 
 	i = 0;
-	while (i < 5 && cl.key_input[i] != -1 && cl.key_input[i] <= 5)
+	while (i < 5 && cl->key_input[i] != -1 && cl->key_input[i] <= 5)
 	{
-		cl.key_ptr[cl.key_input[i]](cl);
-		ft_collision(old_y, old_x, cl.key_input[i], cl);
-		if (cl.mlist.isnlvl)
+		cl->key_ptr[cl->key_input[i]](cl);
+		ft_collision(old_y, old_x, cl->key_input[i], cl);
+		if (cl->mlist.isnlvl)
 		{
 			if (ft_warp_level(cl) < 0)
 				return (ft_exit(FT_RET_FAILED_STRUCTS, cl));
 		}
 		i++;
 	}
-	if (cl.key_input[0] != -1)
+	if (cl->key_input[0] != -1)
 		ft_draw_scene(cl);
 	return (0);
 }
diff --git a/src/ft_key_release.c b/src/ft_key_release.c
index c4cf257..58eb2bc 100644
--- a/src/ft_key_release.c
+++ b/src/ft_key_release.c
@@ -22,10 +22,10 @@ static void
 	i = 0;
 	while (i < 3)
 	{
-		if (cl.key_input[i] == -1 && cl.key_input[i + 1] != -1)
+		if (cl->key_input[i] == -1 && cl->key_input[i + 1] != -1)
 		{
-			cl.key_input[i] = cl.key_input[i + 1];
-			cl.key_input[i + 1] = -1;
+			cl->key_input[i] = cl->key_input[i + 1];
+			cl->key_input[i + 1] = -1;
 		}
 		i++;
 	}
@@ -39,8 +39,8 @@ static void
 	i = 0;
 	while (i < 5)
 	{
-		if (clist.key_input[i] == keycode)
-			clist.key_input[i] = -1;
+		if (clist->key_input[i] == keycode)
+			clist->key_input[i] = -1;
 		i++;
 	}
 	ft_decale(clist);
diff --git a/src/ft_map_error.c b/src/ft_map_error.c
index 9e34649..b777415 100644
--- a/src/ft_map_error.c
+++ b/src/ft_map_error.c
@@ -20,7 +20,7 @@ int
 	ft_dprintf(STDERR_FILENO, "Error\n");
 	ft_dprintf(STDERR_FILENO,
 				"\033[1;31mMap error: line %lu: %s\033[0m\n",
-				clist.mlist.line_chk,
+				clist->mlist.line_chk,
 				errmsg);
 	return (ft_exit(4, clist));
 }
diff --git a/src/ft_music.c b/src/ft_music.c
index 9a86c98..f3369bd 100644
--- a/src/ft_music.c
+++ b/src/ft_music.c
@@ -22,7 +22,7 @@ void
 	t_cub	*cl;
 
 	cl = (t_cub *)vargp;
-	cl.isoldmus = 1;
-	system(cl.mlist.music_cmd);
+	cl->isoldmus = 1;
+	system(cl->mlist.music_cmd);
 	return (NULL);
 }
diff --git a/src/ft_parse_map.c b/src/ft_parse_map.c
index 9b34087..e54b53c 100644
--- a/src/ft_parse_map.c
+++ b/src/ft_parse_map.c
@@ -25,13 +25,13 @@ static void
 	size_t	j;
 
 	i = 0;
-	ml = clist.mlist;
-	while (ml.map[i])
+	ml = &clist->mlist;
+	while (ml->map[i])
 		i++;
 	j = 0;
-	while (ml.map[i - 1][j])
+	while (ml->map[i - 1][j])
 	{
-		if (ml.map[i - 1][j] != '1' && ml.map[i - 1][j] != '\0')
+		if (ml->map[i - 1][j] != '1' && ml->map[i - 1][j] != '\0')
 			ft_map_error(FT_ERR_MAP_L_L, clist);
 		j++;
 	}
@@ -51,7 +51,7 @@ static int8_t
 	char	**words;
 	int		ret;
 
-	clist.mlist.line_chk += 1;
+	clist->mlist.line_chk += 1;
 	if ((ret = get_next_line(fd, &line)) < 0)
 		return (ft_map_error(FT_ERR_READ, clist));
 	if (ret == 0)
@@ -93,14 +93,14 @@ void
 	while (ret != 12 && ret >= 0)
 		ret = ft_parse_it(fd, clist);
 	(ret == -2) ? (ft_map_error(FT_ERR_ALR_SET, clist)) : 0;
-	(ret == -1) ? (ft_map_error(clist.errmsg, clist)) : 0;
+	(ret == -1) ? (ft_map_error(clist->errmsg, clist)) : 0;
 	if (ft_get_map_core(fd, clist) < 0)
-		ft_map_error(clist.errmsg, clist);
+		ft_map_error(clist->errmsg, clist);
 	ft_check_map_last_line(clist);
-	ft_get_player_spawn(clist.plist, clist);
-	ft_get_nlvl_pos(clist.mlist);
+	ft_get_player_spawn(&clist->plist, clist);
+	ft_get_nlvl_pos(&clist->mlist);
 	ft_check_missing(clist);
 	ft_set_minimap_scale(clist);
-	clist.currlvl += 1;
+	clist->currlvl += 1;
 	close(fd);
 }
diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c
index c27e596..50bdbf9 100644
--- a/src/ft_raycasting.c
+++ b/src/ft_raycasting.c
@@ -19,61 +19,61 @@
 /* static void */
 /* 	ft_calc_sprite_norme(t_cub *cl) */
 /* { */
-/* 	if (cl.sp_list.s_start_y < 0) */
-/* 		cl.sp_list.s_start_y = 0; */
-/* 	cl.sp_list.s_end_y = cl.sp_list.s_h / 2 + cl.wlist.y_size / 2; */
-/* 	if (cl.sp_list.s_end_y > (int)cl.wlist.y_size) */
-/* 		cl.sp_list.s_end_y = cl.wlist.y_size - 1; */
-/* 	cl.sp_list.s_w = abs((int)(cl.wlist.x_size */
-/* 		* cl.sp_list.sprite_transform_y)); /\*sprite width*\/ */
-/* 	cl.sp_list.s_start_x = -cl.sp_list.s_w / 2 + cl.sp_list.s_screen_x; */
-/* 	if (cl.sp_list.s_start_x < 0) */
-/* 		cl.sp_list.s_start_y = 0; */
-/* 	cl.sp_list.s_end_x = cl.sp_list.s_w / 2 + cl.wlist.x_size; */
-/* 	if (cl.sp_list.s_end_x < (int)cl.wlist.x_size) */
-/* 		cl.sp_list.s_end_x = cl.wlist.x_size - 1; */
+/* 	if (cl->sp_list.s_start_y < 0) */
+/* 		cl->sp_list.s_start_y = 0; */
+/* 	cl->sp_list.s_end_y = cl->sp_list.s_h / 2 + cl->wlist.y_size / 2; */
+/* 	if (cl->sp_list.s_end_y > (int)cl->wlist.y_size) */
+/* 		cl->sp_list.s_end_y = cl->wlist.y_size - 1; */
+/* 	cl->sp_list.s_w = abs((int)(cl->wlist.x_size */
+/* 		* cl->sp_list.sprite_transform_y)); /\*sprite width*\/ */
+/* 	cl->sp_list.s_start_x = -cl->sp_list.s_w / 2 + cl->sp_list.s_screen_x; */
+/* 	if (cl->sp_list.s_start_x < 0) */
+/* 		cl->sp_list.s_start_y = 0; */
+/* 	cl->sp_list.s_end_x = cl->sp_list.s_w / 2 + cl->wlist.x_size; */
+/* 	if (cl->sp_list.s_end_x < (int)cl->wlist.x_size) */
+/* 		cl->sp_list.s_end_x = cl->wlist.x_size - 1; */
 /* } */
 
 /* static void */
 /* 	ft_calc_sprite(t_cub *cl) */
 /* { */
-/* 	cl.sp_list.s_x = cl.sp_list.s_pos_x - cl.plist.pos_x; */
-/* 	cl.sp_list.s_y = cl.sp_list.s_pos_y - cl.plist.pos_y; */
-/* 	cl.sp_list.inv_c_m = 1.0 / (cl.plist.plane_x * cl.plist.dir_x */
-/* 								- cl.plist.dir_y * cl.plist.plane_y); */
-/* 	cl.sp_list.sprite_transform_x = cl.sp_list.inv_c_m */
-/* 		* (cl.plist.dir_y * cl.sp_list.s_x */
-/* 		- cl.plist.dir_x * cl.sp_list.s_y); */
-/* 	cl.sp_list.sprite_transform_y = cl.sp_list.inv_c_m */
-/* 		* (cl.plist.plane_y * cl.sp_list.s_x */
-/* 		- cl.plist.plane_x * cl.sp_list.s_y); */
-/* 	cl.sp_list.s_screen_x = (int)((cl.wlist.y_size / 2) */
-/* 		* (1 + cl.sp_list.sprite_transform_x */
-/* 		/ cl.sp_list.sprite_transform_y)); */
-/* 	cl.sp_list.s_h = */
-/* 		abs((int)(cl.wlist.y_size * cl.sp_list.sprite_transform_y)); */
-/* 	cl.sp_list.s_start_y = -cl.sp_list.s_h / 2 + cl.wlist.y_size / 2; */
+/* 	cl->sp_list.s_x = cl->sp_list.s_pos_x - cl->plist.pos_x; */
+/* 	cl->sp_list.s_y = cl->sp_list.s_pos_y - cl->plist.pos_y; */
+/* 	cl->sp_list.inv_c_m = 1.0 / (cl->plist.plane_x * cl->plist.dir_x */
+/* 								- cl->plist.dir_y * cl->plist.plane_y); */
+/* 	cl->sp_list.sprite_transform_x = cl->sp_list.inv_c_m */
+/* 		* (cl->plist.dir_y * cl->sp_list.s_x */
+/* 		- cl->plist.dir_x * cl->sp_list.s_y); */
+/* 	cl->sp_list.sprite_transform_y = cl->sp_list.inv_c_m */
+/* 		* (cl->plist.plane_y * cl->sp_list.s_x */
+/* 		- cl->plist.plane_x * cl->sp_list.s_y); */
+/* 	cl->sp_list.s_screen_x = (int)((cl->wlist.y_size / 2) */
+/* 		* (1 + cl->sp_list.sprite_transform_x */
+/* 		/ cl->sp_list.sprite_transform_y)); */
+/* 	cl->sp_list.s_h = */
+/* 		abs((int)(cl->wlist.y_size * cl->sp_list.sprite_transform_y)); */
+/* 	cl->sp_list.s_start_y = -cl->sp_list.s_h / 2 + cl->wlist.y_size / 2; */
 /* 	ft_calc_sprite_norme(cl); */
 /* } */
 
 void
 	ft_calc_tex(t_cub *clist)
 {
-	if (clist.rlist.side == 0)
-		clist.rlist.wall_hit_x = (clist.plist.pos_x) +
-			clist.rlist.wall_dist * clist.rlist.y_ray_dir;
+	if (clist->rlist.side == 0)
+		clist->rlist.wall_hit_x = (clist->plist.pos_x) +
+			clist->rlist.wall_dist * clist->rlist.y_ray_dir;
 	else
-		clist.rlist.wall_hit_x = (clist.plist.pos_y) +
-			clist.rlist.wall_dist * clist.rlist.x_ray_dir;
-	clist.rlist.wall_hit_x -= floor(clist.rlist.wall_hit_x);
-	clist.tlist[clist.w_side].tex_x = (int)(clist.rlist.wall_hit_x *
-			(double)clist.tlist[clist.w_side].img_w);
-	if (clist.rlist.side == 0 && clist.rlist.x_ray_dir > 0)
-		clist.tlist[clist.w_side].tex_x = clist.tlist[clist.w_side].img_w
-			- clist.tlist[clist.w_side].tex_x - 1;
-	else if (clist.rlist.side == 1 && clist.rlist.y_ray_dir < 0)
-		clist.tlist[clist.w_side].tex_x = clist.tlist[clist.w_side].img_w
-			- clist.tlist[clist.w_side].tex_x - 1;
+		clist->rlist.wall_hit_x = (clist->plist.pos_y) +
+			clist->rlist.wall_dist * clist->rlist.x_ray_dir;
+	clist->rlist.wall_hit_x -= floor(clist->rlist.wall_hit_x);
+	clist->tlist[clist->w_side].tex_x = (int)(clist->rlist.wall_hit_x *
+			(double)clist->tlist[clist->w_side].img_w);
+	if (clist->rlist.side == 0 && clist->rlist.x_ray_dir > 0)
+		clist->tlist[clist->w_side].tex_x = clist->tlist[clist->w_side].img_w
+			- clist->tlist[clist->w_side].tex_x - 1;
+	else if (clist->rlist.side == 1 && clist->rlist.y_ray_dir < 0)
+		clist->tlist[clist->w_side].tex_x = clist->tlist[clist->w_side].img_w
+			- clist->tlist[clist->w_side].tex_x - 1;
 }
 
 static void
@@ -82,26 +82,26 @@ static void
 	t_win		*wl;
 	t_player	*pl;
 
-	wl = cl.wlist;
-	pl = cl.plist;
-	pl.cam_x = 2 * i / (float)(wl.x_size) - 1;
-	cl.rlist.x_ray_pos = pl.pos_y;
-	cl.rlist.y_ray_pos = pl.pos_x;
-	cl.rlist.x_ray_dir = pl.dir_x + pl.plane_x *
-		pl.cam_x;
-	cl.rlist.y_ray_dir = pl.dir_y + pl.plane_y *
-		pl.cam_x;
-	cl.rlist.sqx = (int16_t)cl.rlist.x_ray_pos;
-	cl.rlist.sqy = (int16_t)cl.rlist.y_ray_pos;
+	wl = &cl->wlist;
+	pl = &cl->plist;
+	pl->cam_x = 2 * i / (float)(wl->x_size) - 1;
+	cl->rlist.x_ray_pos = pl->pos_y;
+	cl->rlist.y_ray_pos = pl->pos_x;
+	cl->rlist.x_ray_dir = pl->dir_x + pl->plane_x *
+		pl->cam_x;
+	cl->rlist.y_ray_dir = pl->dir_y + pl->plane_y *
+		pl->cam_x;
+	cl->rlist.sqx = (int16_t)cl->rlist.x_ray_pos;
+	cl->rlist.sqy = (int16_t)cl->rlist.y_ray_pos;
 	ft_detect(cl);
-	if (cl.rlist.side == 0)
+	if (cl->rlist.side == 0)
 	{
-		cl.rlist.wall_dist = (cl.rlist.sqx - cl.rlist.x_ray_pos +
-		(1 - cl.mlist.x_step) / 2) / cl.rlist.x_ray_dir;
+		cl->rlist.wall_dist = (cl->rlist.sqx - cl->rlist.x_ray_pos +
+		(1 - cl->mlist.x_step) / 2) / cl->rlist.x_ray_dir;
 	}
 	else
-		cl.rlist.wall_dist = (cl.rlist.sqy - cl.rlist.y_ray_pos +
-		(1 - cl.mlist.y_step) / 2) / cl.rlist.y_ray_dir;
+		cl->rlist.wall_dist = (cl->rlist.sqy - cl->rlist.y_ray_pos +
+		(1 - cl->mlist.y_step) / 2) / cl->rlist.y_ray_dir;
 }
 
 void
@@ -111,22 +111,22 @@ void
 	t_win		*wl;
 
 	i = 0;
-	wl = cl.wlist;
-	while (i < wl.x_size)
+	wl = &cl->wlist;
+	while (i < wl->x_size)
 	{
 		ft_initray(cl, i);
-		cl.rlist.line_h = (int16_t)(wl.y_size / cl.rlist.wall_dist);
-		cl.rlist.wall_t = -cl.rlist.line_h / 2 + wl.y_size / 2;
-		if (cl.rlist.wall_t < 0)
-			cl.rlist.wall_t = 0;
-		cl.rlist.wall_b = cl.rlist.line_h / 2 + wl.y_size / 2;
-		if (cl.rlist.wall_b >= (float)wl.y_size)
-			cl.rlist.wall_b = wl.y_size - 1;
+		cl->rlist.line_h = (int16_t)(wl->y_size / cl->rlist.wall_dist);
+		cl->rlist.wall_t = -cl->rlist.line_h / 2 + wl->y_size / 2;
+		if (cl->rlist.wall_t < 0)
+			cl->rlist.wall_t = 0;
+		cl->rlist.wall_b = cl->rlist.line_h / 2 + wl->y_size / 2;
+		if (cl->rlist.wall_b >= (float)wl->y_size)
+			cl->rlist.wall_b = wl->y_size - 1;
 		ft_choose_tex(cl);
 		ft_calc_tex(cl);
 		/* ft_calc_sprite(cl); */
 		/* ft_draw_sprite(cl , i); */
-		ft_draw_verline(cl, i, cl.rlist.wall_t, cl.rlist.wall_b);
+		ft_draw_verline(cl, i, cl->rlist.wall_t, cl->rlist.wall_b);
 		i++;
 	}
 }
diff --git a/src/ft_select_get.c b/src/ft_select_get.c
index 3355870..124c208 100644
--- a/src/ft_select_get.c
+++ b/src/ft_select_get.c
@@ -20,24 +20,24 @@ static int8_t
 {
 	if (ret == 12)
 		return (12);
-	if (ret == 0 && clist.currlvl == 0 &&
-		(clist.wlist.x_size != 0 || clist.wlist.y_size != 0))
+	if (ret == 0 && clist->currlvl == 0 &&
+		(clist->wlist.x_size != 0 || clist->wlist.y_size != 0))
 		return (-1);
-	else if (ret == 1 && (clist.mlist.no_tex_path[0]))
+	else if (ret == 1 && (clist->mlist.no_tex_path[0]))
 		return (-1);
-	else if (ret == 2 && (clist.mlist.so_tex_path[0]))
+	else if (ret == 2 && (clist->mlist.so_tex_path[0]))
 		return (-1);
-	else if (ret == 3 && (clist.mlist.ea_tex_path[0]))
+	else if (ret == 3 && (clist->mlist.ea_tex_path[0]))
 		return (-1);
-	else if (ret == 4 && (clist.mlist.we_tex_path[0]))
+	else if (ret == 4 && (clist->mlist.we_tex_path[0]))
 		return (-1);
-	else if (ret == 5 && (clist.mlist.sprite_path[0]))
+	else if (ret == 5 && (clist->mlist.sprite_path[0]))
 		return (-1);
-	else if (ret == 6 && ((clist.f_rgb.r != -1) || (clist.f_rgb.g != -1)
-			|| (clist.f_rgb.b != -1)))
+	else if (ret == 6 && ((clist->f_rgb.r != -1) || (clist->f_rgb.g != -1)
+			|| (clist->f_rgb.b != -1)))
 		return (-1);
-	else if (ret == 7 && ((clist.c_rgb.r != -1) || (clist.c_rgb.g != -1)
-			|| (clist.c_rgb.b != -1)))
+	else if (ret == 7 && ((clist->c_rgb.r != -1) || (clist->c_rgb.g != -1)
+			|| (clist->c_rgb.b != -1)))
 		return (-1);
 	return (ret);
 }
@@ -47,11 +47,11 @@ static int8_t
 {
 	if (ret == 12)
 		return (12);
-	if (ret == 8 && (clist.mlist.nlevel_path[0]))
+	if (ret == 8 && (clist->mlist.nlevel_path[0]))
 		return (-1);
-	if (ret == 9 && (clist.mlist.nl_tex_path[0]))
+	if (ret == 9 && (clist->mlist.nl_tex_path[0]))
 		return (-1);
-	if (ret == 10 && (clist.mlist.music_path[0]))
+	if (ret == 10 && (clist->mlist.music_path[0]))
 		return (-1);
 	return (ret);
 }
@@ -94,7 +94,7 @@ int8_t
 		ft_free_words(words);
 		return (12);
 	}
-	if (id < 0 || clist.get_ptr[id](words, clist) < 0)
+	if (id < 0 || clist->get_ptr[id](words, clist) < 0)
 	{
 		ft_free_words(words);
 		return ((id < 0) ? (-2) : (-1));
diff --git a/src/ft_set_minimap_scale.c b/src/ft_set_minimap_scale.c
index 9fa5a85..52c63e6 100644
--- a/src/ft_set_minimap_scale.c
+++ b/src/ft_set_minimap_scale.c
@@ -17,10 +17,10 @@ void
 {
 	t_map	*ml;
 
-	ml = clist.mlist;
-	((ml.scale = (clist.wlist.x_size / (uint16_t)ml.map_w) - 1) < 1)
-		? (ml.scale = 1) : 0;
-	(clist.wlist.y_size < (ml.map_h * ml.scale)) ? (ml.scale =
-		(clist.wlist.y_size / (uint16_t)ml.map_h) - 1) : 0;
-	(ml.scale >= 10) ? (ml.scale /= 4) : 0;
+	ml = &clist->mlist;
+	((ml->scale = (clist->wlist.x_size / (uint16_t)ml->map_w) - 1) < 1)
+		? (ml->scale = 1) : 0;
+	(clist->wlist.y_size < (ml->map_h * ml->scale)) ? (ml->scale =
+		(clist->wlist.y_size / (uint16_t)ml->map_h) - 1) : 0;
+	(ml->scale >= 10) ? (ml->scale /= 4) : 0;
 }
diff --git a/src/ft_tex_init.c b/src/ft_tex_init.c
index 0dafd05..c19bd20 100644
--- a/src/ft_tex_init.c
+++ b/src/ft_tex_init.c
@@ -27,36 +27,36 @@
 static void
 	ft_get_nlvl_img(t_cub *cl)
 {
-	cl.tlist[5].img = mlx_xpm_file_to_image(cl.wlist.wlx,
-			cl.mlist.nl_tex_path, &cl.tlist[5].img_w, &cl.tlist[5].img_h);
-	cl.tlist[5].ptr = mlx_get_data_addr(cl.tlist[5].img,
-		&cl.tlist[5].bpp, &cl.tlist[5].sizeline, &cl.tlist[5].endian);
+	cl->tlist[5].img = mlx_xpm_file_to_image(cl->wlist.wlx,
+			cl->mlist.nl_tex_path, &cl->tlist[5].img_w, &cl->tlist[5].img_h);
+	cl->tlist[5].ptr = mlx_get_data_addr(cl->tlist[5].img,
+		&cl->tlist[5].bpp, &cl->tlist[5].sizeline, &cl->tlist[5].endian);
 }
 
 void
 	ft_wall_tex_init(t_cub *cl)
 {
-	cl.tlist[0].img = mlx_xpm_file_to_image(cl.wlist.wlx,
-			cl.mlist.no_tex_path, &cl.tlist[0].img_w, &cl.tlist[0].img_h);
-	cl.tlist[0].ptr = mlx_get_data_addr(cl.tlist[0].img,
-		&cl.tlist[0].bpp, &cl.tlist[0].sizeline, &cl.tlist[0].endian);
-	cl.tlist[1].img = mlx_xpm_file_to_image(cl.wlist.wlx,
-			cl.mlist.so_tex_path, &cl.tlist[1].img_w, &cl.tlist[1].img_h);
-	cl.tlist[1].ptr = mlx_get_data_addr(cl.tlist[1].img,
-		&cl.tlist[1].bpp, &cl.tlist[1].sizeline, &cl.tlist[1].endian);
-	cl.tlist[2].img = mlx_xpm_file_to_image(cl.wlist.wlx,
-			cl.mlist.ea_tex_path, &cl.tlist[2].img_w, &cl.tlist[2].img_h);
-	cl.tlist[2].ptr = mlx_get_data_addr(cl.tlist[2].img,
-		&cl.tlist[2].bpp, &cl.tlist[2].sizeline, &cl.tlist[2].endian);
-	cl.tlist[3].img = mlx_xpm_file_to_image(cl.wlist.wlx,
-			cl.mlist.we_tex_path, &cl.tlist[3].img_w, &cl.tlist[3].img_h);
-	cl.tlist[3].ptr = mlx_get_data_addr(cl.tlist[3].img,
-		&cl.tlist[3].bpp, &cl.tlist[3].sizeline, &cl.tlist[3].endian);
-	cl.tlist[4].img = mlx_xpm_file_to_image(cl.wlist.wlx,
-			cl.mlist.sprite_path, &cl.tlist[4].img_w, &cl.tlist[4].img_h);
-	cl.tlist[4].ptr = mlx_get_data_addr(cl.tlist[4].img,
-		&cl.tlist[4].bpp, &cl.tlist[4].sizeline, &cl.tlist[4].endian);
-	if (cl.mlist.isnlvl)
+	cl->tlist[0].img = mlx_xpm_file_to_image(cl->wlist.wlx,
+			cl->mlist.no_tex_path, &cl->tlist[0].img_w, &cl->tlist[0].img_h);
+	cl->tlist[0].ptr = mlx_get_data_addr(cl->tlist[0].img,
+		&cl->tlist[0].bpp, &cl->tlist[0].sizeline, &cl->tlist[0].endian);
+	cl->tlist[1].img = mlx_xpm_file_to_image(cl->wlist.wlx,
+			cl->mlist.so_tex_path, &cl->tlist[1].img_w, &cl->tlist[1].img_h);
+	cl->tlist[1].ptr = mlx_get_data_addr(cl->tlist[1].img,
+		&cl->tlist[1].bpp, &cl->tlist[1].sizeline, &cl->tlist[1].endian);
+	cl->tlist[2].img = mlx_xpm_file_to_image(cl->wlist.wlx,
+			cl->mlist.ea_tex_path, &cl->tlist[2].img_w, &cl->tlist[2].img_h);
+	cl->tlist[2].ptr = mlx_get_data_addr(cl->tlist[2].img,
+		&cl->tlist[2].bpp, &cl->tlist[2].sizeline, &cl->tlist[2].endian);
+	cl->tlist[3].img = mlx_xpm_file_to_image(cl->wlist.wlx,
+			cl->mlist.we_tex_path, &cl->tlist[3].img_w, &cl->tlist[3].img_h);
+	cl->tlist[3].ptr = mlx_get_data_addr(cl->tlist[3].img,
+		&cl->tlist[3].bpp, &cl->tlist[3].sizeline, &cl->tlist[3].endian);
+	cl->tlist[4].img = mlx_xpm_file_to_image(cl->wlist.wlx,
+			cl->mlist.sprite_path, &cl->tlist[4].img_w, &cl->tlist[4].img_h);
+	cl->tlist[4].ptr = mlx_get_data_addr(cl->tlist[4].img,
+		&cl->tlist[4].bpp, &cl->tlist[4].sizeline, &cl->tlist[4].endian);
+	if (cl->mlist.isnlvl)
 		ft_get_nlvl_img(cl);
-	cl.walltexgood = 1;
+	cl->walltexgood = 1;
 }
diff --git a/src/ft_treat_args.c b/src/ft_treat_args.c
index f850fc6..2571709 100644
--- a/src/ft_treat_args.c
+++ b/src/ft_treat_args.c
@@ -37,9 +37,9 @@ uint8_t
 		if (ft_init_winptr(clist) < 0)
 			return (ft_exit(FT_RET_FAILED_MLX, clist));
 		ft_draw_scene(clist);
-		if (clist.mlist.ismusic)
-			pthread_create(&clist.tid, NULL, ft_music_thread, clist);
-		ft_hooks_and_loops(clist.wlist, clist);
+		if (clist->mlist.ismusic)
+			pthread_create(&clist->tid, NULL, ft_music_thread, clist);
+		ft_hooks_and_loops(&clist->wlist, clist);
 	}
 	else if (argc == 3 && !ft_strncmp("--save", argv[2], 7))
 	{
diff --git a/src/ft_warp_level.c b/src/ft_warp_level.c
index a50ff65..b122e46 100644
--- a/src/ft_warp_level.c
+++ b/src/ft_warp_level.c
@@ -21,18 +21,17 @@
 static void
 	ft_del_map(t_map *ml)
 {
-	ft_memdel((void**)&ml.no_tex_path);
-	ft_memdel((void**)&ml.so_tex_path);
-	ft_memdel((void**)&ml.ea_tex_path);
-	ft_memdel((void**)&ml.we_tex_path);
-	ft_memdel((void**)&ml.sprite_path);
-	ft_memdel((void**)&ml.nl_tex_path);
-	ft_memdel((void**)&ml.nlevel_path);
-	ft_memdel((void**)&ml.music_path);
-	ft_memdel((void**)&ml.music_cmd);
-	ft_memdel((void**)&ml.mapl);
-	ft_free_words(ml.map);
-	ft_memdel((void**)&ml);
+	ft_memdel((void**)&ml->no_tex_path);
+	ft_memdel((void**)&ml->so_tex_path);
+	ft_memdel((void**)&ml->ea_tex_path);
+	ft_memdel((void**)&ml->we_tex_path);
+	ft_memdel((void**)&ml->sprite_path);
+	ft_memdel((void**)&ml->nl_tex_path);
+	ft_memdel((void**)&ml->nlevel_path);
+	ft_memdel((void**)&ml->music_path);
+	ft_memdel((void**)&ml->music_cmd);
+	ft_memdel((void**)&ml->mapl);
+	ft_free_words(ml->map);
 }
 
 static void
@@ -40,23 +39,23 @@ static void
 {
 	uint8_t	i;
 
-	cl.plist.pos_x = 0;
-	cl.plist.pos_y = 0;
-	cl.plist.start_x = 0;
-	cl.plist.start_y = 0;
-	cl.plist.cam_x = 0;
-	cl.plist.dir_x = -1;
-	cl.plist.dir_y = 0;
-	cl.plist.plane_x = 0;
-	cl.plist.plane_y = 0.66666666;
-	cl.f_rgb = ft_init_rgb();
-	cl.c_rgb = ft_init_rgb();
-	cl.rlist = ft_init_s_ray();
+	cl->plist.pos_x = 0;
+	cl->plist.pos_y = 0;
+	cl->plist.start_x = 0;
+	cl->plist.start_y = 0;
+	cl->plist.cam_x = 0;
+	cl->plist.dir_x = -1;
+	cl->plist.dir_y = 0;
+	cl->plist.plane_x = 0;
+	cl->plist.plane_y = 0.66666666;
+	cl->f_rgb = ft_init_rgb();
+	cl->c_rgb = ft_init_rgb();
+	cl->rlist = ft_init_s_ray();
 	i = 0;
 	while (i <= 5)
 	{
-		mlx_destroy_image(cl.wlist.wlx, cl.tlist[i].img);
-		cl.tlist[i].img = NULL;
+		mlx_destroy_image(cl->wlist.wlx, cl->tlist[i].img);
+		cl->tlist[i].img = NULL;
 		i++;
 	}
 }
@@ -64,21 +63,21 @@ static void
 static void
 	ft_treat_music(uint8_t isoldmus, char *tmp_mup, t_cub *cl)
 {
-	if (isoldmus && !cl.mlist.ismusic)
+	if (isoldmus && !cl->mlist.ismusic)
 	{
-		pthread_cancel(cl.tid);
-		pthread_join(cl.tid, NULL);
-		cl.isoldmus = 0;
+		pthread_cancel(cl->tid);
+		pthread_join(cl->tid, NULL);
+		cl->isoldmus = 0;
 	}
-	else if (isoldmus && cl.mlist.ismusic
-		&& ft_strncmp(tmp_mup, cl.mlist.music_path, ft_strlen(tmp_mup) + 1))
+	else if (isoldmus && cl->mlist.ismusic
+		&& ft_strncmp(tmp_mup, cl->mlist.music_path, ft_strlen(tmp_mup) + 1))
 	{
-		pthread_cancel(cl.tid);
-		pthread_join(cl.tid, NULL);
-		pthread_create(&cl.tid, NULL, ft_music_thread, cl);
+		pthread_cancel(cl->tid);
+		pthread_join(cl->tid, NULL);
+		pthread_create(&cl->tid, NULL, ft_music_thread, cl);
 	}
-	else if (isoldmus && cl.mlist.ismusic
-		&& !ft_strncmp(tmp_mup, cl.mlist.music_path, ft_strlen(tmp_mup) + 1))
+	else if (isoldmus && cl->mlist.ismusic
+		&& !ft_strncmp(tmp_mup, cl->mlist.music_path, ft_strlen(tmp_mup) + 1))
 		return ;
 }
 
@@ -89,19 +88,19 @@ int8_t
 	char	*tmp_mup;
 	uint8_t	isoldmus;
 
-	if ((uint32_t)cl.plist.pos_x == cl.mlist.nlx &&
-		(uint32_t)cl.plist.pos_y == cl.mlist.nly)
+	if ((uint32_t)cl->plist.pos_x == cl->mlist.nlx &&
+		(uint32_t)cl->plist.pos_y == cl->mlist.nly)
 	{
 		if (!(next_path = (char *)malloc((ft_strlen(
-				cl.mlist.nlevel_path) + 1) * sizeof(char))))
+				cl->mlist.nlevel_path) + 1) * sizeof(char))))
 			return (-1);
-		ft_sprintf(next_path, "%s", cl.mlist.nlevel_path);
-		isoldmus = cl.mlist.ismusic;
+		ft_sprintf(next_path, "%s", cl->mlist.nlevel_path);
+		isoldmus = cl->mlist.ismusic;
 		if (isoldmus)
-			tmp_mup = ft_strdup(cl.mlist.music_path);
+			tmp_mup = ft_strdup(cl->mlist.music_path);
 		ft_del_some(cl);
-		ft_del_map(cl.mlist);
-		if (!(cl.mlist = ft_init_map()))
+		ft_del_map(&cl->mlist);
+		if (ft_init_map(&cl->mlist) < 0)
 			return (-1);
 		ft_parse_map(next_path, cl);
 		ft_treat_music(isoldmus, tmp_mup, cl);
diff --git a/src/main.c b/src/main.c
index 5c61724..b55e051 100644
--- a/src/main.c
+++ b/src/main.c
@@ -21,12 +21,12 @@ int
 
 	if (ft_check_map_arg(argc, argv) == FT_RET_BAD_ARGV)
 		return (FT_RET_BAD_ARGV);
-	if (!(clist = ft_init_cub3d()))
+	if (ft_init_cub3d(&clist) < 0)
 		return (FT_RET_FAILED_STRUCTS);
-	ft_parse_map(argv[1], clist);
-	if (ft_init_winlx(clist) < 0)
-		return (ft_exit(FT_RET_FAILED_MLX, clist));
-	ft_wall_tex_init(clist);
-	ft_use_args(argc, argv, clist);
+	ft_parse_map(argv[1], &clist);
+	if (ft_init_winlx(&clist) < 0)
+		return (ft_exit(FT_RET_FAILED_MLX, &clist));
+	ft_wall_tex_init(&clist);
+	ft_use_args(argc, argv, &clist);
 	return (FT_RET_FINE);
 }
-- 
cgit v1.2.3