From 1b5c1a4d019dcb15c9592ae812c67394f3fd3efd Mon Sep 17 00:00:00 2001 From: Adam Joly Date: Mon, 7 Oct 2024 19:07:28 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=F0=9F=8F=97=EF=B8=8F=E3=80=8D=20wip(D?= =?UTF-8?q?DA):=20Started=20puting=20everything=20together?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 22 ++++++++--- includes/game/dda.h | 21 ++++++++++- src/raycasting/dda/dda.c | 37 +++++++++++++++++++ src/raycasting/{ => dda}/get_ray_angle.c | 7 +++- src/raycasting/{ => dda}/setup_dda.c | 17 +++++---- .../{dda_while.c => dda/while_dda.c} | 8 ++-- 6 files changed, 92 insertions(+), 20 deletions(-) create mode 100644 src/raycasting/dda/dda.c rename src/raycasting/{ => dda}/get_ray_angle.c (88%) rename src/raycasting/{ => dda}/setup_dda.c (80%) rename src/raycasting/{dda_while.c => dda/while_dda.c} (84%) diff --git a/Makefile b/Makefile index 9d2457d..65a0860 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,15 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: adjoly +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2024/10/07 16:02:18 by adjoly #+# #+# # +# Updated: 2024/10/07 16:02:44 by adjoly ### ########.fr # +# # +# **************************************************************************** # + SHELL = bash NAME = cub3D @@ -28,8 +40,8 @@ LIB = libft/libft.a \ $(NAME): $(OBJS) @make -sj -C $(LIBFT_DIR) @echo "✅ Libft compiled" - @make -sj -C $(MACRO_DIR) - @echo "✅ MacroLibX compiled" + @#@make -sj -C $(MACRO_DIR) + @#@echo "✅ MacroLibX compiled" @$(CC) $(OBJS) $(LIB) -o $(NAME) $(FLAGS) @echo "✅ Compiled" @@ -41,14 +53,14 @@ all: $(NAME) clean: @make -sC $(LIBFT_DIR) clean - @make -sC $(MACRO_DIR) clean > /dev/null + @#@make -sC $(MACRO_DIR) clean > /dev/null @rm -f $(OBJS) fclean: clean @make -sC $(LIBFT_DIR) fclean @echo "🧹 Libft Cleaned" - @make -sC $(MACRO_DIR) fclean > /dev/null - @echo "🧹 MacroLibX Cleaned" + @#@make -sC $(MACRO_DIR) fclean > /dev/null + @#@echo "🧹 MacroLibX Cleaned" @rm -f $(NAME) @rm -Rf $(OBJSDIR) @echo "🧹 Cleaned" diff --git a/includes/game/dda.h b/includes/game/dda.h index 685e43f..0840146 100644 --- a/includes/game/dda.h +++ b/includes/game/dda.h @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/04 14:04:10 by adjoly #+# #+# */ -/* Updated: 2024/10/06 18:48:38 by adjoly ### ########.fr */ +/* Updated: 2024/10/07 17:42:00 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,4 +23,23 @@ */ void get_ray_angle(t_player *player, t_dda (*dda)[800]); +/** + * @brief Function used to setup all the dda variable prior to casting + * the rays + * + * @param player The address of the t_player struct + * @param dda The address of the t_dda struct + * + */ +void setup_dda(t_dda (*dda)[800], t_player *player); + +/** + * @brief Function used to cast all the rays + * + * @param dda The address of the t_dda struct + * @param map The map as a char ** + * @param map_coord The coordinate of the player on the map_grid + */ +void while_dda(t_dda (*dda)[800], char **map, t_coord map_coord); + #endif diff --git a/src/raycasting/dda/dda.c b/src/raycasting/dda/dda.c new file mode 100644 index 0000000..6683c9f --- /dev/null +++ b/src/raycasting/dda/dda.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* dda.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/10/07 16:55:09 by adjoly #+# #+# */ +/* Updated: 2024/10/07 19:04:07 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "game/dda.h" +#include "game/settings.h" + +void dda(t_player *player, char **map) +{ + t_dda dda[800]; + t_coord map_coord; + + setup_dda(&dda, player); + map_coord.x = player->coords.x - player->coords.x % MAP_CHUNK_SIZE; + map_coord.y = player->coords.y - player->coords.y % MAP_CHUNK_SIZE; + while_dda(&dda, map, map_coord); + +} + +/** +* calculate distance from wall +* perp_wall_dist = (map_y - player_y + (1 - step_y) / 2) / ray_dir_y +* +* calculate size on screen +* screen_height / per_wall_dist +* +* print on screen +* +*/ diff --git a/src/raycasting/get_ray_angle.c b/src/raycasting/dda/get_ray_angle.c similarity index 88% rename from src/raycasting/get_ray_angle.c rename to src/raycasting/dda/get_ray_angle.c index 71d3626..491bcef 100644 --- a/src/raycasting/get_ray_angle.c +++ b/src/raycasting/dda/get_ray_angle.c @@ -6,11 +6,14 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/29 15:26:29 by adjoly #+# #+# */ -/* Updated: 2024/10/06 17:58:04 by adjoly ### ########.fr */ +/* Updated: 2024/10/07 19:06:47 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ -#include "game/game.h" +#include "game/dda.h" +#include "game/settings.h" +#include +#include void get_ray_angle(t_player *player, t_dda (*dda)[800]) { diff --git a/src/raycasting/setup_dda.c b/src/raycasting/dda/setup_dda.c similarity index 80% rename from src/raycasting/setup_dda.c rename to src/raycasting/dda/setup_dda.c index 1801b12..b9aef2f 100644 --- a/src/raycasting/setup_dda.c +++ b/src/raycasting/dda/setup_dda.c @@ -6,11 +6,13 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/30 23:47:14 by adjoly #+# #+# */ -/* Updated: 2024/10/06 19:02:43 by adjoly ### ########.fr */ +/* Updated: 2024/10/07 19:05:59 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ -#include "game/game.h" +#include "game/settings.h" +#include "game/dda.h" +#include #include #include @@ -38,21 +40,20 @@ void get_side_dist(t_dda *dda, t_coord incell_coords, t_player *player) } } -void setup_dda(t_player *player) +void setup_dda(t_dda (*dda)[800], t_player *player) { - t_dda dda[WINDOW_X / RAY_SIZE]; size_t i; t_coord incell_coords; i = 0; - get_ray_angle(player, &dda); + get_ray_angle(player, dda); incell_coords.x = player->coords.x % MAP_CHUNK_SIZE; incell_coords.y = player->coords.y % MAP_CHUNK_SIZE; while (i < WINDOW_X / RAY_SIZE) { - dda[i].delta_dist.x = abs((int)(MAP_CHUNK_SIZE / dda[i].ray_dir.x)); - dda[i].delta_dist.y = abs((int)(MAP_CHUNK_SIZE / dda[i].ray_dir.y)); - get_side_dist(&dda[i], incell_coords, player); + dda[i]->delta_dist.x = abs((int)(MAP_CHUNK_SIZE / dda[i]->ray_dir.x)); + dda[i]->delta_dist.y = abs((int)(MAP_CHUNK_SIZE / dda[i]->ray_dir.y)); + get_side_dist(dda[i], incell_coords, player); i++; } } diff --git a/src/raycasting/dda_while.c b/src/raycasting/dda/while_dda.c similarity index 84% rename from src/raycasting/dda_while.c rename to src/raycasting/dda/while_dda.c index f417fda..91896f2 100644 --- a/src/raycasting/dda_while.c +++ b/src/raycasting/dda/while_dda.c @@ -1,18 +1,18 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* dda_while.c :+: :+: :+: */ +/* while_dda.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/06 18:46:56 by adjoly #+# #+# */ -/* Updated: 2024/10/06 19:05:11 by adjoly ### ########.fr */ +/* Updated: 2024/10/07 17:08:57 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ -#include "game/game.h" +#include "game/dda.h" -void dda_while(t_dda *dda, char **map, t_coord map_coord) +void while_dda(t_dda (*dda)[800], char **map, t_coord map_coord) { dda->wall_hit = false; while (!dda->wall_hit)