From bd7c64825a3f399ba63dc91dc341748020070b53 Mon Sep 17 00:00:00 2001
From: Adam JOLY <adjoly@student.42angouleme.fr>
Date: Wed, 6 Nov 2024 14:00:06 +0100
Subject: [PATCH] =?UTF-8?q?=E3=80=8C=F0=9F=94=A8=E3=80=8D=20fix(Raycasting?=
 =?UTF-8?q?):=20Working=20as=20expected?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 includes/game/settings.h    |   3 +-
 includes/utils.h            |  23 +++++++++++++++
 leflo.png                   | Bin 0 -> 6589 bytes
 map.cub                     |   9 +++---
 src/cub3d.c                 |  33 +++++++++++++---------
 src/other.c                 |  21 --------------
 src/raycasting/dda.c        |   5 ++--
 src/raycasting/renderer.c   |   7 +++--
 src/utils/convert_parsing.c |  55 ++++++++++++++++++++++++++++++++++++
 9 files changed, 110 insertions(+), 46 deletions(-)
 create mode 100644 includes/utils.h
 create mode 100755 leflo.png
 delete mode 100644 src/other.c
 create mode 100644 src/utils/convert_parsing.c

diff --git a/includes/game/settings.h b/includes/game/settings.h
index bbf58cc..ea36393 100644
--- a/includes/game/settings.h
+++ b/includes/game/settings.h
@@ -6,7 +6,7 @@
 /*   By: adjoly <adjoly@student.42angouleme.fr>     +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/10/04 14:06:39 by adjoly            #+#    #+#             */
-/*   Updated: 2024/11/02 15:55:02 by adjoly           ###   ########.fr       */
+/*   Updated: 2024/11/06 13:19:25 by adjoly           ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -29,5 +29,6 @@
 # define FOV 70
 
 # define CHUNK_SIZE 64
+# define TEXTURE_SIZE 128
 
 #endif
diff --git a/includes/utils.h b/includes/utils.h
new file mode 100644
index 0000000..4613c13
--- /dev/null
+++ b/includes/utils.h
@@ -0,0 +1,23 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   utils.h                                            :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: adjoly <adjoly@student.42angouleme.fr>     +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2024/11/06 13:03:02 by adjoly            #+#    #+#             */
+/*   Updated: 2024/11/06 13:21:21 by adjoly           ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#ifndef UTILS_H
+# define UTILS_H
+
+# include "parsing.h"
+# include "game/game.h"
+
+t_player	init_player(t_pars parsing);
+t_map		init_world(t_pars parsing);
+void		init_texture(t_render *render, t_pars parsing);
+
+#endif
diff --git a/leflo.png b/leflo.png
new file mode 100755
index 0000000000000000000000000000000000000000..79fae6f1db39104b6e6a972f585597b5bb125af9
GIT binary patch
literal 6589
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
EHz$bVDgXcg

literal 0
HcmV?d00001

diff --git a/map.cub b/map.cub
index a4f0d77..ac0a418 100755
--- a/map.cub
+++ b/map.cub
@@ -1,10 +1,10 @@
-NO ./no_texture.png            
+NO ./leflo.png
 
 			
-SO ./so_texture.png
+SO ./leflo.png
 
-WE ./we_texture.png							 
-EA ./ea_texture.png
+WE ./leflo.png
+EA ./leflo.png
 C 255,100,200
 F 50,0,250
 
@@ -13,7 +13,6 @@ F 50,0,250
 111111
 11111111111111
 111111111111
-0    11101
 1111111111111111
     111111111111111
 111111111111111111111111
diff --git a/src/cub3d.c b/src/cub3d.c
index 3bce937..e9eb975 100644
--- a/src/cub3d.c
+++ b/src/cub3d.c
@@ -6,16 +6,19 @@
 /*   By: madumerg <madumerg@42angouleme.fr>         +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/09/04 16:58:27 by madumerg          #+#    #+#             */
-/*   Updated: 2024/11/06 12:53:52 by adjoly           ###   ########.fr       */
+/*   Updated: 2024/11/06 13:43:14 by adjoly           ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
 #include "cub3d.h"
 #include "game/game.h"
 #include "game/settings.h"
+#include "game/vectwo.h"
 #include "libft.h"
 #include "mlx.h"
+#include "parsing.h"
 #include <stdlib.h>
+#include "utils.h"
 
 int	loop(void *param)
 {
@@ -34,27 +37,29 @@ int	main(int ac, char **av)
 	t_render	render;
 	t_map		world;
 	t_player	player;
+	t_pars		parsing;
 
-	render.player = &player;
-	render.world = &world;
-	world.celling = 0xffffa07a;
-	world.floor = 0xffadd8e6;
-	world.arr = ft_split("11111 10001 10001 10001 11111", ' ');
-	world.size.x = 5;
-	world.size.y = 5;
-	player.coord.x = 2 * CHUNK_SIZE;
-	player.coord.y = 3 * CHUNK_SIZE;
-	player.direction = 0;
+	parsing = init_pars();
+	if (basics_check(ac, av, &parsing))
+		return (EXIT_FAILURE);
 	render.mlx = mlx_init();
 	render.win = mlx_new_window(render.mlx, WINDOW_W, WINDOW_H, "WTF");
+	player = init_player(parsing);
+	world = init_world(parsing);
+	render.player = &player;
+	render.world = &world;
+	init_texture(&render, parsing);
 	render.img = mlx_new_image(render.mlx, WINDOW_W, WINDOW_H);
-	(void)ac;
-	(void)av;
 	mlx_on_event(render.mlx, render.win, MLX_KEYDOWN, key_hook, &render);
 	mlx_loop_hook(render.mlx, loop, &render);
 	mlx_loop(render.mlx);
 	mlx_destroy_image(render.mlx, render.img);
+	mlx_destroy_image(render.mlx, render.texture[0]);
+	mlx_destroy_image(render.mlx, render.texture[1]);
+	mlx_destroy_image(render.mlx, render.texture[2]);
+	mlx_destroy_image(render.mlx, render.texture[3]);
 	mlx_destroy_window(render.mlx, render.win);
 	mlx_destroy_display(render.mlx);
-	return (0);
+	free_pars(&parsing);
+	return (EXIT_SUCCESS);
 }
diff --git a/src/other.c b/src/other.c
deleted file mode 100644
index 0172cfe..0000000
--- a/src/other.c
+++ /dev/null
@@ -1,21 +0,0 @@
-
-void	f_c_color(void *mlx, void *win, t_pars *pars)
-{
-	int	x;
-	int	y;
-
-	x = 0;
-	y = 0;
-
-	while (y <= (400 / 2)) //changer 400 par le define
-	{
-		x = 0;
-		while (x <= 800) //changer 800 par le define
-		{
-			mlx_pixel_put(mlx, win, x, y, pars->c_color);
-			mlx_pixel_put(mlx, win, x, 400 - y, pars->f_color); // changer 400 par le define
-			x++;
-		}
-		y++;
-	}
-}
diff --git a/src/raycasting/dda.c b/src/raycasting/dda.c
index a070334..06f6bb8 100644
--- a/src/raycasting/dda.c
+++ b/src/raycasting/dda.c
@@ -6,7 +6,7 @@
 /*   By: adjoly <adjoly@student.42angouleme.fr>     +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/10/07 16:55:09 by adjoly            #+#    #+#             */
-/*   Updated: 2024/11/06 12:34:58 by adjoly           ###   ########.fr       */
+/*   Updated: 2024/11/06 13:21:38 by adjoly           ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -68,7 +68,8 @@ void	setup_dda_hor(t_player *play, t_ray *ray, t_dda *dda)
 
 void	dda_loop(t_dda	*dda, t_ray	*ray, t_map *map, t_player *play)
 {
-	while (dda->s && dda->i) {
+	while (dda->s && dda->i)
+	{
 		dda->map.x = (ray->pos.x / 64);
 		dda->map.y = (ray->pos.y / 64);
 		if (dda->map.x >= 0 && dda->map.x < map->size.x && dda->map.y >= 0 && \
diff --git a/src/raycasting/renderer.c b/src/raycasting/renderer.c
index 856cb55..fdf3cf8 100644
--- a/src/raycasting/renderer.c
+++ b/src/raycasting/renderer.c
@@ -6,7 +6,7 @@
 /*   By: adjoly <adjoly@student.42angouleme.fr>     +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/10/28 15:48:39 by adjoly            #+#    #+#             */
-/*   Updated: 2024/11/06 11:59:23 by madumerg         ###   ########.fr       */
+/*   Updated: 2024/11/06 13:57:29 by adjoly           ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -66,10 +66,11 @@ void	print_line(t_render *render, t_ray *ray, int x)
 	if (line_start < 0)
 		line_start = 0;
 	if (line_stop > WINDOW_H)
-		line_stop = WINDOW_H - 1;
+		line_stop = WINDOW_H;
 	while (line_start < line_stop)
 	{
-		mlx_set_image_pixel(render->mlx, render->img, x, line_start, WHITE);
+		if (x < WINDOW_W && x >= 0)
+			mlx_set_image_pixel(render->mlx, render->img, x, line_start, WHITE);
 		line_start++;
 	}
 }
diff --git a/src/utils/convert_parsing.c b/src/utils/convert_parsing.c
new file mode 100644
index 0000000..63b0098
--- /dev/null
+++ b/src/utils/convert_parsing.c
@@ -0,0 +1,55 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   convert_parsing.c                                  :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: adjoly <adjoly@student.42angouleme.fr>     +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2024/11/06 13:01:03 by adjoly            #+#    #+#             */
+/*   Updated: 2024/11/06 13:44:16 by adjoly           ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "game/settings.h"
+#include "mlx.h"
+#include "parsing.h"
+#include "game/game.h"
+
+t_player	init_player(t_pars parsing)
+{
+	t_player	player;
+
+	player.coord.x = parsing.coor.x * CHUNK_SIZE + (CHUNK_SIZE / 2);
+	player.coord.y = parsing.coor.y * CHUNK_SIZE + (CHUNK_SIZE / 2);
+	if (parsing.l_player == 'N')
+		player.direction = M_PI / 2;
+	else if (parsing.l_player == 'S')
+		player.direction = -(M_PI / 2);
+	else if (parsing.l_player == 'W')
+		player.direction = M_PI;
+	else if (parsing.l_player == 'E')
+		player.direction = 0;
+	return (player);
+}
+
+t_map	init_world(t_pars parsing)
+{
+	t_map	map;
+
+	map.arr = parsing.map;
+	map.size.x = ft_strlen(parsing.map[0]);
+	map.size.y = ft_count_line_map(parsing.map, 0);
+	map.floor = parsing.f_color;
+	map.celling = parsing.c_color;
+	return (map);
+}
+
+void	init_texture(t_render *render, t_pars parsing)
+{
+	int	i;
+
+	render->texture[0] = mlx_png_file_to_image(render->mlx, parsing.no_png, &i, &i);
+	render->texture[1] = mlx_png_file_to_image(render->mlx, parsing.we_png, &i, &i);
+	render->texture[2] = mlx_png_file_to_image(render->mlx, parsing.so_png, &i, &i);
+	render->texture[3] = mlx_png_file_to_image(render->mlx, parsing.ea_png, &i, &i);
+}