From ee329812fdccab3f9b9d3f29eb95ea9a3ab57b13 Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Wed, 13 Aug 2025 14:57:06 +0200 Subject: [PATCH 1/6] dev: Added sprite types and gave 'base' sprites their types --- src/sprites/create_sprite.c | 5 +++++ src/sprites/sprite.h | 45 ++++++++++++++++++++++--------------- src/utils/inits.c | 2 +- 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/sprites/create_sprite.c b/src/sprites/create_sprite.c index b55299f..a9aabff 100644 --- a/src/sprites/create_sprite.c +++ b/src/sprites/create_sprite.c @@ -6,7 +6,11 @@ /* By: tchampio +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/08/12 15:43:19 by tchampio #+# #+# */ +<<<<<<< HEAD /* Updated: 2025/08/14 21:24:03 by tchampio ### ########.fr */ +======= +/* Updated: 2025/08/13 14:53:38 by tchampio ### ########.fr */ +>>>>>>> f9c846b (dev: Added sprite types and gave 'base' sprites their types) /* */ /* ************************************************************************** */ @@ -25,6 +29,7 @@ t_sprite *create_sprite(t_cub3d_data *data, char *texture, return (NULL); sprite->x = x; sprite->y = y; + sprite->sprite_type = OTHER; sprite->image = load_single_texture(data, texture); return (sprite); } diff --git a/src/sprites/sprite.h b/src/sprites/sprite.h index f58e116..d581980 100644 --- a/src/sprites/sprite.h +++ b/src/sprites/sprite.h @@ -6,7 +6,7 @@ /* By: tchampio +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/08/05 12:59:44 by tchampio #+# #+# */ -/* Updated: 2025/08/12 16:12:37 by tchampio ### ########.fr */ +/* Updated: 2025/08/13 14:44:02 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,14 @@ # include "../draw/img_data.h" +typedef enum e_sprite_type +{ + ZOMBIE, + PERK, + BOX, + OTHER +} t_sprite_type; + /* * x - real position for the sprite * y - real position for the sprite @@ -36,23 +44,24 @@ */ typedef struct s_sprite { - double x; - double y; - t_img_data *image; - int img_width; - int img_height; - double sprite_pos_x; - double sprite_pos_y; - double inv_det; - double transform_x; - double transform_y; - int sprite_screen_x; - int sprite_height; - int sprite_draw_start_y; - int sprite_draw_end_y; - int sprite_width; - int sprite_draw_start_x; - int sprite_draw_end_x; + double x; + double y; + t_img_data *image; + int img_width; + int img_height; + double sprite_pos_x; + double sprite_pos_y; + double inv_det; + double transform_x; + double transform_y; + int sprite_screen_x; + int sprite_height; + int sprite_draw_start_y; + int sprite_draw_end_y; + int sprite_width; + int sprite_draw_start_x; + int sprite_draw_end_x; + t_sprite_type sprite_type; } t_sprite; #endif // SPRITE_H diff --git a/src/utils/inits.c b/src/utils/inits.c index d533f07..916f2d9 100644 --- a/src/utils/inits.c +++ b/src/utils/inits.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/31 13:43:05 by kcolin #+# #+# */ -/* Updated: 2025/08/14 21:37:58 by tchampio ### ########.fr */ +/* Updated: 2025/08/14 21:41:23 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ From 01f0ac21df577f398a6619fe299e6751b98ddf8a Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Wed, 13 Aug 2025 15:31:40 +0200 Subject: [PATCH 2/6] feat: Made a little sprite interaction for perk type sprites It's more for the sake of the demo but it shows we can make interactions with sprites. Although it's badly integrated. --- src/player/player.h | 2 +- src/sprites/sprite_caster.c | 15 +++++++++++++-- src/utils/hooks.c | 6 +++++- src/utils/keypresses.h | 3 ++- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/player/player.h b/src/player/player.h index 8ac8231..453883c 100644 --- a/src/player/player.h +++ b/src/player/player.h @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/17 15:51:29 by kcolin #+# #+# */ -/* Updated: 2025/07/29 13:28:08 by tchampio ### ########.fr */ +/* Updated: 2025/08/13 15:31:17 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/sprites/sprite_caster.c b/src/sprites/sprite_caster.c index f08f886..899e2f6 100644 --- a/src/sprites/sprite_caster.c +++ b/src/sprites/sprite_caster.c @@ -6,7 +6,7 @@ /* By: tchampio +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/08/05 15:51:01 by tchampio #+# #+# */ -/* Updated: 2025/08/07 16:57:29 by tchampio ### ########.fr */ +/* Updated: 2025/08/13 15:30:55 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,8 +15,8 @@ #include "../renderer/render.h" #include "sort_sprites.h" #include -#include #include +#include "../../libft/includes/libft.h" static void calculate_pos_and_transform(t_cub3d_data *data, t_sprite *sprite, int i) @@ -109,6 +109,17 @@ void sprite_caster(t_cub3d_data *data) if (!data->sprite_list) return ; sort_sprites(data->sprite_order, data->sprite_distances, data); + if (data->sprite_distances[3] <= 1.5) + { + if (data->sprite_list[data->sprite_order[3]]->sprite_type == PERK) + { + if (data->keypresses.is_f_pressed) + { + data->keypresses.is_f_pressed = false; + ft_printf("🎵You need a little revive🎵\n"); + } + } + } i = 0; while (data->sprite_list[i] && i < MAX_SPRITES) { diff --git a/src/utils/hooks.c b/src/utils/hooks.c index 17918c8..116e252 100644 --- a/src/utils/hooks.c +++ b/src/utils/hooks.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/17 14:22:57 by kcolin #+# #+# */ -/* Updated: 2025/07/29 13:35:29 by tchampio ### ########.fr */ +/* Updated: 2025/08/13 15:25:04 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,6 +31,8 @@ int keypress_handler(int keycode, t_cub3d_data *data) data->keypresses.is_s_pressed = true; if (keycode == XK_d) data->keypresses.is_d_pressed = true; + if (keycode == XK_f) + data->keypresses.is_f_pressed = true; if (keycode == XK_Left) data->keypresses.is_left_pressed = true; if (keycode == XK_Right) @@ -48,6 +50,8 @@ int keyrelease_handler(int keycode, t_cub3d_data *data) data->keypresses.is_s_pressed = false; if (keycode == XK_d) data->keypresses.is_d_pressed = false; + if (keycode == XK_f) + data->keypresses.is_f_pressed = false; if (keycode == XK_Left) data->keypresses.is_left_pressed = false; if (keycode == XK_Right) diff --git a/src/utils/keypresses.h b/src/utils/keypresses.h index 7d9d426..db0379c 100644 --- a/src/utils/keypresses.h +++ b/src/utils/keypresses.h @@ -6,7 +6,7 @@ /* By: tchampio Date: Thu, 14 Aug 2025 21:45:39 +0200 Subject: [PATCH 3/6] norme: Fixed little oopsie --- src/utils/inits.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils/inits.c b/src/utils/inits.c index 916f2d9..3100ec9 100644 --- a/src/utils/inits.c +++ b/src/utils/inits.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/31 13:43:05 by kcolin #+# #+# */ -/* Updated: 2025/08/14 21:41:23 by tchampio ### ########.fr */ +/* Updated: 2025/08/14 21:46:53 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -69,8 +69,8 @@ void place_base_sprites(t_cub3d_data *data, char **map) || map[y][x] == 'J' || map[y][x] == 'D') { if (data->sprite_counter < MAX_SPRITES) - data->sprite_list[data->sprite_counter++] = - place_right_sprite(data, map[y][x], x, y); + data->sprite_list[data->sprite_counter++] + = place_right_sprite(data, map[y][x], x, y); } x++; } From 541bc9ccf8e9ef0413f239c8e01fdd6d6da21cb1 Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Wed, 13 Aug 2025 14:57:06 +0200 Subject: [PATCH 4/6] dev: Added sprite types and gave 'base' sprites their types --- src/utils/inits.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/inits.c b/src/utils/inits.c index 3100ec9..ec98650 100644 --- a/src/utils/inits.c +++ b/src/utils/inits.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/31 13:43:05 by kcolin #+# #+# */ -/* Updated: 2025/08/14 21:46:53 by tchampio ### ########.fr */ +/* Updated: 2025/08/14 21:47:17 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ From ef7a6c27a47b10de7810579b2be23c7beda6aeeb Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Mon, 18 Aug 2025 13:04:13 +0200 Subject: [PATCH 5/6] fix: Removed git conflict marker --- src/sprites/create_sprite.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/sprites/create_sprite.c b/src/sprites/create_sprite.c index a9aabff..4e683bf 100644 --- a/src/sprites/create_sprite.c +++ b/src/sprites/create_sprite.c @@ -6,11 +6,7 @@ /* By: tchampio +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/08/12 15:43:19 by tchampio #+# #+# */ -<<<<<<< HEAD -/* Updated: 2025/08/14 21:24:03 by tchampio ### ########.fr */ -======= -/* Updated: 2025/08/13 14:53:38 by tchampio ### ########.fr */ ->>>>>>> f9c846b (dev: Added sprite types and gave 'base' sprites their types) +/* Updated: 2025/08/18 12:55:21 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ From 5c7cc77419876dae1666dec8bc74726b074e89ea Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Mon, 18 Aug 2025 13:07:08 +0200 Subject: [PATCH 6/6] dev: improved how sprites are detected in maps --- src/utils/inits.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/utils/inits.c b/src/utils/inits.c index ec98650..98a38a0 100644 --- a/src/utils/inits.c +++ b/src/utils/inits.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/31 13:43:05 by kcolin #+# #+# */ -/* Updated: 2025/08/14 21:47:17 by tchampio ### ########.fr */ +/* Updated: 2025/08/18 13:06:13 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -65,8 +65,7 @@ void place_base_sprites(t_cub3d_data *data, char **map) x = 0; while (x < (int)ft_strlen(map[y])) { - if (map[y][x] == 'M' || map[y][x] == 'Q' - || map[y][x] == 'J' || map[y][x] == 'D') + if (ft_strchr("MQJD", map[y][x])) { if (data->sprite_counter < MAX_SPRITES) data->sprite_list[data->sprite_counter++]