From 38487527f97fbac2b36adb164ca72babf2f3a930 Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Tue, 19 Aug 2025 18:58:55 +0200 Subject: [PATCH 1/7] feat: Improved movements for the sprite --- src/sprites/move_sprites.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/sprites/move_sprites.c b/src/sprites/move_sprites.c index 4cbdcbb..653930e 100644 --- a/src/sprites/move_sprites.c +++ b/src/sprites/move_sprites.c @@ -6,13 +6,12 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/08/18 13:22:50 by kcolin #+# #+# */ -/* Updated: 2025/08/18 19:51:41 by tchampio ### ########.fr */ +/* Updated: 2025/08/18 23:04:15 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ #include "move_sprites.h" #include "sprite.h" -#include "../../libft/includes/libft.h" #include void move_sprites(t_cub3d_data *data) @@ -21,6 +20,8 @@ void move_sprites(t_cub3d_data *data) double dx; double dy; double dist; + double future_x; + double future_y; static double zombie_movement = MOVEMENT_SPEED / 1.5; i = 0; @@ -28,6 +29,8 @@ void move_sprites(t_cub3d_data *data) { if (data->sprite_list[i]->sprite_type == ZOMBIE) { + future_x = data->sprite_list[i]->x; + future_y = data->sprite_list[i]->y; dx = data->player.x - data->sprite_list[i]->x; dy = data->player.y - data->sprite_list[i]->y; dist = sqrt(dx * dx + dy * dy); @@ -35,8 +38,17 @@ void move_sprites(t_cub3d_data *data) { dx /= dist; dy /= dist; - data->sprite_list[i]->x += dx * zombie_movement * data->delta; - data->sprite_list[i]->y += dy * zombie_movement * data->delta; + future_x += dx * zombie_movement * data->delta; + future_y += dy * zombie_movement * data->delta; + if (data->map->map[(int)future_y][(int)data->sprite_list[i]->x] != '1') + data->sprite_list[i]->y = future_y; + if (data->map->map[(int)data->sprite_list[i]->y][(int)future_x] != '1') + data->sprite_list[i]->x = future_x; + } + if (dist < 0.4) + { + data->sprite_list[i]->x -= dx * zombie_movement * data->delta; + data->sprite_list[i]->y -= dy * zombie_movement * data->delta; } } i++; From 0ac7c274452df9765dd60e4ba210c8a92527da0c Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Tue, 19 Aug 2025 19:13:58 +0200 Subject: [PATCH 2/7] norme: Fixed norme error --- src/consts.h | 4 ++- src/sprites/move_sprites.c | 50 +++++++++++++++++++------------------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/consts.h b/src/consts.h index 536ce88..6ef3d04 100644 --- a/src/consts.h +++ b/src/consts.h @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/17 14:54:36 by kcolin #+# #+# */ -/* Updated: 2025/08/18 13:51:33 by kcolin ### ########.fr */ +/* Updated: 2025/08/19 19:12:45 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,6 +40,8 @@ # define DBLTAP_TEX "ressources/doubletap.xpm" # define MYSTERY_TEX "ressources/box.xpm" # define ZOMBIE_TEX "ressources/zombie.xpm" +// Approximated, value is actually MOVEMENT_SPEED / 1.5 +# define ZOMBIE_SPEED 0.0000033333 # ifdef BONUS # define COMPILED_TEXT "Compiled with bonuses" diff --git a/src/sprites/move_sprites.c b/src/sprites/move_sprites.c index 653930e..adb2099 100644 --- a/src/sprites/move_sprites.c +++ b/src/sprites/move_sprites.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/08/18 13:22:50 by kcolin #+# #+# */ -/* Updated: 2025/08/18 23:04:15 by tchampio ### ########.fr */ +/* Updated: 2025/08/19 19:13:02 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,42 +14,42 @@ #include "sprite.h" #include -void move_sprites(t_cub3d_data *data) +void make_move(t_cub3d_data *data, t_sprite *sprite) { - int i; double dx; double dy; double dist; double future_x; double future_y; - static double zombie_movement = MOVEMENT_SPEED / 1.5; + + future_x = sprite->x; + future_y = sprite->y; + dx = data->player.x - sprite->x; + dy = data->player.y - sprite->y; + dist = sqrt(dx * dx + dy * dy); + if (dist > 0.4) + { + dx /= dist; + dy /= dist; + future_x += dx * ZOMBIE_SPEED * data->delta; + future_y += dy * ZOMBIE_SPEED * data->delta; + if (data->map->map[(int)future_y][(int)sprite->x] != '1') + sprite->y = future_y; + if (data->map->map[(int)sprite->y][(int)future_x] != '1') + sprite->x = future_x; + } +} + +void move_sprites(t_cub3d_data *data) +{ + int i; i = 0; while (i < data->sprite_counter) { if (data->sprite_list[i]->sprite_type == ZOMBIE) { - future_x = data->sprite_list[i]->x; - future_y = data->sprite_list[i]->y; - dx = data->player.x - data->sprite_list[i]->x; - dy = data->player.y - data->sprite_list[i]->y; - dist = sqrt(dx * dx + dy * dy); - if (dist > 0.0001) - { - dx /= dist; - dy /= dist; - future_x += dx * zombie_movement * data->delta; - future_y += dy * zombie_movement * data->delta; - if (data->map->map[(int)future_y][(int)data->sprite_list[i]->x] != '1') - data->sprite_list[i]->y = future_y; - if (data->map->map[(int)data->sprite_list[i]->y][(int)future_x] != '1') - data->sprite_list[i]->x = future_x; - } - if (dist < 0.4) - { - data->sprite_list[i]->x -= dx * zombie_movement * data->delta; - data->sprite_list[i]->y -= dy * zombie_movement * data->delta; - } + make_move(data, data->sprite_list[i]); } i++; } From b138fe81005ac6177bba2f61a422ab8073dfed92 Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Tue, 19 Aug 2025 19:45:00 +0200 Subject: [PATCH 3/7] fix(sprite caster): Fixed crash when sprites overlap Actually I'm not that sure it's the sprite overlap but it happened when the sprites overlapped too close to the player, but basically the program tried to render pixels out of bounds from the images, tex_x or tex_y were able to go < 0. I forcefully set them to 0 if it was the case, and I didn't see really much of visual glitches or something. Anyways I'll stop rambling in this commit, just to say I stopped a real weird crash because when I tried using valgrind or sanitizers, the program would behave well and not crash. Might be tied to how fast the program renders frames ? --- src/sprites/sprite_caster.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/sprites/sprite_caster.c b/src/sprites/sprite_caster.c index 23e3657..ff5c713 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/18 13:39:26 by tchampio ### ########.fr */ +/* Updated: 2025/08/19 19:42:43 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,6 @@ #include "../renderer/render.h" #include "sort_sprites.h" #include -#include #include "../../libft/includes/libft.h" static void calculate_pos_and_transform(t_cub3d_data *data, t_sprite *sprite, @@ -73,6 +72,8 @@ static void render_sprite_col(t_cub3d_data *data, int i, int tex_x, int stripe) d = (j) * 256 - HEIGHT * 128 + data->sprite_list[i]->sprite_height * 128; tex_y = ((d * SIZE) / data->sprite_list[i]->sprite_height) / 256; + if (tex_y < 0) + tex_y = 0; color = my_mlx_pixel_get( data->sprite_list[data->sprite_order[i]]->image, tex_x, tex_y); @@ -94,6 +95,8 @@ static void render_sprites(t_cub3d_data *data, int i) - (-data->sprite_list[i]->sprite_width / 2 + data->sprite_list[i]->sprite_screen_x)) * SIZE / data->sprite_list[i]->sprite_width) / 256; + if (tex_x < 0) + tex_x = 0; if (data->sprite_list[i]->transform_y > 0 && stripe > 0 && stripe < WIDTH && data->sprite_list[i]->transform_y < data->zbuffer[stripe]) From c643d9f22a7b8cecf34c58552e1b7f5a04670e19 Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Wed, 20 Aug 2025 12:48:48 +0200 Subject: [PATCH 4/7] fix: Fixed inversion of x and y for blocking checks functions --- src/map/collision.c | 10 ++++----- src/player/move_step.c | 48 +++++++++++++++++++++--------------------- src/raycast/ray.c | 4 ++-- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/map/collision.c b/src/map/collision.c index cb84493..c5caa48 100644 --- a/src/map/collision.c +++ b/src/map/collision.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/08/06 11:25:05 by kcolin #+# #+# */ -/* Updated: 2025/08/06 11:49:00 by kcolin ### ########.fr */ +/* Updated: 2025/08/20 12:47:52 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,22 +17,22 @@ static bool out_of_bounds(t_mapdata *data, int x, int y) { if (x < 0 || y < 0 - || x >= data->mapheight - || y > (int)ft_strlen(data->map[x])) + || y >= data->mapheight + || x > (int)ft_strlen(data->map[y])) return (true); return (false); } bool blocks_movement(t_mapdata *data, int x, int y) { - if (out_of_bounds(data, x, y) || data->map[x][y] == '1') + if (out_of_bounds(data, x, y) || data->map[y][x] == '1') return (true); return (false); } bool blocks_view(t_mapdata *data, int x, int y) { - if (out_of_bounds(data, x, y) || data->map[x][y] == '1') + if (out_of_bounds(data, x, y) || data->map[y][x] == '1') return (true); return (false); } diff --git a/src/player/move_step.c b/src/player/move_step.c index 4b847c0..7166aa4 100644 --- a/src/player/move_step.c +++ b/src/player/move_step.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/08/08 14:06:37 by kcolin #+# #+# */ -/* Updated: 2025/08/12 12:16:17 by kcolin ### ########.fr */ +/* Updated: 2025/08/20 12:43:23 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,16 +42,16 @@ bool move_forward_step(t_cub3d_data *data, double mov_x, double mov_y) blocks = 2; x_step = calc_step(mov_x); y_step = calc_step(mov_y); - if (!blocks_movement(data->map, (int)data->player.y, - (int)(data->player.x + x_step))) + if (!blocks_movement(data->map, (int)data->player.x, + (int)(data->player.y + y_step))) { - data->player.x += x_step; + data->player.y += y_step; blocks--; } if (!blocks_movement(data->map, - (int)(data->player.y + y_step), (int)data->player.x)) + (int)(data->player.x + x_step), (int)data->player.y)) { - data->player.y += y_step; + data->player.x += x_step; blocks--; } return (blocks < 2); @@ -66,16 +66,16 @@ bool move_backward_step(t_cub3d_data *data, double mov_x, double mov_y) blocks = 2; x_step = calc_step(mov_x); y_step = calc_step(mov_y); - if (!blocks_movement(data->map, (int)data->player.y, - (int)(data->player.x - x_step))) + if (!blocks_movement(data->map, (int)data->player.x, + (int)(data->player.y - y_step))) { - data->player.x -= x_step; + data->player.y -= y_step; blocks--; } if (!blocks_movement(data->map, - (int)(data->player.y - y_step), (int)data->player.x)) + (int)(data->player.x - x_step), (int)data->player.y)) { - data->player.y -= y_step; + data->player.x -= x_step; blocks--; } return (blocks < 2); @@ -90,16 +90,16 @@ bool move_strafe_left_step(t_cub3d_data *data, double mov_x, double mov_y) blocks = 2; x_step = calc_step(mov_x); y_step = calc_step(mov_y); - if (!blocks_movement(data->map, (int)data->player.y, - (int)(data->player.x - x_step))) + if (!blocks_movement(data->map, (int)data->player.x, + (int)(data->player.y - y_step))) { - data->player.x -= x_step; + data->player.y -= y_step; blocks--; } if (!blocks_movement(data->map, - (int)(data->player.y - y_step), (int)data->player.x)) + (int)(data->player.x - x_step), (int)data->player.y)) { - data->player.y -= y_step; + data->player.x -= x_step; blocks--; } return (blocks < 2); @@ -114,17 +114,17 @@ bool move_strafe_right_step(t_cub3d_data *data, double mov_x, double mov_y) blocks = 2; x_step = calc_step(mov_x); y_step = calc_step(mov_y); - if (!blocks_movement(data->map, (int)data->player.y, - (int)(data->player.x + x_step))) - { - data->player.x += x_step; - blocks--; - } - if (!blocks_movement(data->map, - (int)(data->player.y + y_step), (int)data->player.x)) + if (!blocks_movement(data->map, (int)data->player.x, + (int)(data->player.y + y_step))) { data->player.y += y_step; blocks--; } + if (!blocks_movement(data->map, + (int)(data->player.x + x_step), (int)data->player.y)) + { + data->player.x += x_step; + blocks--; + } return (blocks < 2); } diff --git a/src/raycast/ray.c b/src/raycast/ray.c index d555267..a929b19 100644 --- a/src/raycast/ray.c +++ b/src/raycast/ray.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/31 11:55:41 by kcolin #+# #+# */ -/* Updated: 2025/08/06 14:02:40 by tchampio ### ########.fr */ +/* Updated: 2025/08/20 12:48:06 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -70,7 +70,7 @@ void calculate_wall_dist(t_ray *ray, t_mapdata *map) ray->map_y += ray->step_y; ray->side = SOUTH; } - if (blocks_view(map, ray->map_y, ray->map_x)) + if (blocks_view(map, ray->map_x, ray->map_y)) break ; } if (ray->side == NORTH) From a6c64203980b0eb0f6a2b68955fe4940907867bc Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Wed, 20 Aug 2025 12:49:33 +0200 Subject: [PATCH 5/7] fix: Used blocking check function instead of rewriting test --- src/sprites/move_sprites.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/sprites/move_sprites.c b/src/sprites/move_sprites.c index adb2099..ee8fbff 100644 --- a/src/sprites/move_sprites.c +++ b/src/sprites/move_sprites.c @@ -6,11 +6,12 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/08/18 13:22:50 by kcolin #+# #+# */ -/* Updated: 2025/08/19 19:13:02 by tchampio ### ########.fr */ +/* Updated: 2025/08/20 12:38:53 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ #include "move_sprites.h" +#include "../map/collision.h" #include "sprite.h" #include @@ -33,9 +34,9 @@ void make_move(t_cub3d_data *data, t_sprite *sprite) dy /= dist; future_x += dx * ZOMBIE_SPEED * data->delta; future_y += dy * ZOMBIE_SPEED * data->delta; - if (data->map->map[(int)future_y][(int)sprite->x] != '1') + if (!blocks_movement(data->map, (int)sprite->x, (int)future_y)) sprite->y = future_y; - if (data->map->map[(int)sprite->y][(int)future_x] != '1') + if (!blocks_movement(data->map, (int)future_x, (int)sprite->y)) sprite->x = future_x; } } From 07718816902837de4093fb90c58a741451a4cde3 Mon Sep 17 00:00:00 2001 From: Theo Champion Date: Mon, 18 Aug 2025 18:56:23 +0200 Subject: [PATCH 6/7] feat: New texture for the double tap perk machine --- ressources/dbltap.xpm | 112 ++++++++++++++++++++++++++++++++++++++++++ src/consts.h | 4 +- 2 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 ressources/dbltap.xpm diff --git a/ressources/dbltap.xpm b/ressources/dbltap.xpm new file mode 100644 index 0000000..c9049f8 --- /dev/null +++ b/ressources/dbltap.xpm @@ -0,0 +1,112 @@ +/* XPM */ +static char * dbltap_xpm[] = { +"64 64 45 1", +" c #FF00DC", +". c #000001", +"+ c #AA9F9F", +"@ c #F89C2F", +"# c #A45D18", +"$ c #DF8C2A", +"% c #C97F26", +"& c #A67310", +"* c #D19114", +"= c #E8A117", +"- c #F7AB18", +"; c #D49315", +"> c #A77310", +", c #F0972E", +"' c #F4A918", +") c #F5AA18", +"! c #DE8B2A", +"~ c #F3A818", +"{ c #DD8B2A", +"] c #EF962D", +"^ c #B37B0F", +"/ c #96680F", +"( c #F6D79A", +"_ c #F4E3C3", +": c #E8E0D1", +"< c #A87410", +"[ c #E9A217", +"} c #EE962D", +"| c #848282", +"1 c #767474", +"2 c #B3B3B3", +"3 c #ADADAD", +"4 c #ACACAC", +"5 c #A9180D", +"6 c #6B6969", +"7 c #D29214", +"8 c #A97510", +"9 c #6A6969", +"0 c #777575", +"a c #494949", +"b c #B38007", +"c c #FFB400", +"d c #F0AB06", +"e c #975B26", +"f c #E09E00", +" ", +" .............................................................. ", +" .++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. ", +" .+++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###@@##++#@@@###@. ", +" .+++++++@@@@@@@@@@@@@@@@@@$.........$@@@@@@@#@@@#@@#+#+@@#+@#. ", +" .++++++++@@@@@@@@@@@@@@@%...&*=-=;>...%@@@@@#@@@#@@#+#+@@#++#. ", +" .@+++++++@@@@@@@@@@@@@,...'---------)...,@@@#@@@#@@#@#@@+#++#. ", +" .@+++++++@@@@@@@@@@@@!..~-------------'..!@@#@@@#@@#@#@@+#++#. ", +" .@@+++++@@@@@@@@@@@@{..-----------------..{@###@@##@@###@###+. ", +" .@@@@@+@@@@@@@@@@@@]..-.................-..]@@@@@@@@@@@@@++++. ", +" .@@@@@@@@@@@@@@@@@@..--.^^^^^^^^^^^^^^^.--..@@@@@@@@@@@@@++++. ", +" .@@@@@@@@@@@@@@@@@..'--.^^^^^^^^^^^^^^^.--'..@@@@@@@@@@@@++++. ", +" .@@@@@@@@@@@@@@@@@./---.^^((((((((^(((^.---/.@@@@@@@@@@@@++++. ", +" .@@@@@@@@@@@@@@@@!.)---.((((((((((^^^^^.---).!@@@@@@@@@@@++++. ", +" .@@@@@@@@@@@@@@@@..----.^^(______(^((((.----..@@@@@@@@@@@:+++. ", +" .@@@@@+++@@+++@@@.>----.^^^^^^^^^^^^^^^.----<.@@@@@@@@@@:::++. ", +" .@@@@++@@@@+++@@@._____.^^^^^^^^^^^^^^^._____.@@@@@@@@@:@:+++. ", +" .@@@@@+@@@++++@@@.[----.^^^^^^((((((^(^.----[.@@@@@@@@@:@:@++. ", +" .@@@@@@@@@@@@+@@@._____.^^^(((((((((^^^._____.@@@:@@::@@:::+@. ", +" .@@@@@@@@@@@@@@@@.[----.^^^^^^(____(^((.----[.@@::@:@@:@@:@@@. ", +" .@@@@@@@@@@@@@@@@._____.^^^^^^^^^^^^^^^._____.@:@:@:@@:@@@@@@. ", +" .@@+++@@@@@+@@@@@.>----.^^^^^^^^^^^^^^^.----<.@@@:@:@@:@@@@@@. ", +" .@++++@@@@@++@@@@..----..^^^^^^^^^^^^^..----..@@@:@:@@:@+@@@@. ", +" .@+++@@@@@@++@@@@!.)----..^^^^^^^^^^^..----).{@@@:@:@@:@+@@@@. ", +" .+++@@@@@@@++@@@@@./-----..^^^^^^^^^..-----/.@@@@:@@::@@@@++@. ", +" .@@@@@@@@@@@++@@@@..'-----..^^^^^^^..-----'..@@@@@@@@@@@@@+@@. ", +" .@@@@@@@@@@@@+@@@@@..------..^^^^^..------..@@@@@@@@@@@@@@@@@. ", +" .@@@@@@@@@@@@@@@@@@}..------..^^^..------..}@@@@@@@@@@@@@@@@@. ", +" .@@@@@@@@@@@@@@@@@@@{..------..^..------..{@@@@@@@@@@@@@@@@@@. ", +" .||||||||||||||||||||1..'-----...-----'..1|||||||||||||||||||. ", +" .2222222222222222222223...'----.----)...422222222222222222222. ", +" .|55|||||55|||||||||||||6...>7[-[;8...9||||||||||||||||||||||. ", +" .5555|||555|||||||||||||||0.........0||||||||||||||||||||||||. ", +" .222555555522222222222222222222a2222222222.......22......2222. ", +" .||5||555||||||||||||||||||||||a||||||||||.bbbbb.||.cccc.||||. ", +" .225555522252222222222222222222a2222222222.bbbbb.22.cccc.2222. ", +" .||5|55|||55|||||||||||||||||||a||||||||||.bbbbb.||.cccc.||||. ", +" .|||5555555||||||||||||||||||||a||||||||||.......||.cccc.||||. ", +" .222555552222222222222222222222a2222222222..d.dd.22.cccc.2222. ", +" .|555555|||||||||||||||||||||||a||||||||||.dd.dd.||.cccc.||||. ", +" .255555522222222222222222222222a2222222222..d.dd.22.cccc.2222. ", +" .5555555|||||||||||||||||||||||a||||||||||.......||......||||. ", +" .5555555||||5||||||5|||||||||||a|||||||||||||||||||||||||||||. ", +" .552555222255555555552222222222a22222222222222222222222222222. ", +" .||||||55|||55||||||555||||||||a|||||||||||||||||||||||||||||. ", +" .222222255555222222225522222222a22222222222222222222222222222. ", +" .||||||||||||||||||||||||||||||a|||||||||||||||||||||||||||||. ", +" .++@@@@@@@@@@@@@@@@@@@@@@@@@@@@a@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. ", +" .++++@@@@++@@@@@@@@@@@@@@@@@@@@a@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. ", +" .+++++++@@@+@@@@@@@@@@@@@@@@@@@a@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. ", +" .+++++++@@@@@@@+++@@@@@@@@@@@@@a@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. ", +" .+++++++@++@@@@@@++@@@@@@@@@@@@a@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. ", +" .eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee. ", +" .eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee. ", +" .eeeeeeefffeeeffeefeefefffeefeeefffeeeefffffeeffeefffeeeeeeee. ", +" .____eeefeefefeefefeefefeefefeeefeeeeeeeefeeefeefefeefeee____. ", +" .eeeeeeefeefefeefefeefefeefefeeefeeeeeeeefeeefeefefeefeeeeeee. ", +" .____eeefeefefeefefeefefefeefeeeffeeeeeeefeeeffffefffeeee____. ", +" .eeeeeeefeefefeefefeefefeefefeeefeeeeeeeefeeefeefefeeeeeeeeee. ", +" .____eeefeefefeefefeefefeefefeeefeeeeeeeefeeefeefefeeeeee____. ", +" .eeeeeeefffeeeffeeeffeefffeefffefffeeeeeefeeefeefefeeeeeeeeee. ", +" .eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee. ", +" .eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee. ", +" .............................................................. "}; diff --git a/src/consts.h b/src/consts.h index 6ef3d04..a748f55 100644 --- a/src/consts.h +++ b/src/consts.h @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/17 14:54:36 by kcolin #+# #+# */ -/* Updated: 2025/08/19 19:12:45 by tchampio ### ########.fr */ +/* Updated: 2025/08/19 20:07:29 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,7 +37,7 @@ # define MAX_SPRITES 30 # define JUGG_TEX "ressources/juggernog.xpm" # define REV_TEX "ressources/revive.xpm" -# define DBLTAP_TEX "ressources/doubletap.xpm" +# define DBLTAP_TEX "ressources/dbltap.xpm" # define MYSTERY_TEX "ressources/box.xpm" # define ZOMBIE_TEX "ressources/zombie.xpm" // Approximated, value is actually MOVEMENT_SPEED / 1.5 From fb4680e4bdff99bb4a628d0cf82a6411d8efc27d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Wed, 20 Aug 2025 13:51:23 +0200 Subject: [PATCH 7/7] feat: close window and exit on window close event --- src/main.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 7a64ba5..078ecba 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/17 14:14:30 by kcolin #+# #+# */ -/* Updated: 2025/08/18 20:05:29 by tchampio ### ########.fr */ +/* Updated: 2025/08/20 13:52:42 by kcolin ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ #include "raycast/ray.h" #include "sprites/sprite_caster.h" #include "utils/inits.h" -#include "sprites/sprite.h" +#include "utils/frees.h" #include "utils/hooks.h" #include "utils/inits.h" #include @@ -59,6 +59,12 @@ int game_loop(t_cub3d_data *data) return (0); } +int good_bye(void *data) +{ + destroy(data, 0); + return (0); +} + int main(int argc, char **argv) { t_cub3d_data data; @@ -72,6 +78,7 @@ int main(int argc, char **argv) mlx_hook(data.mlx_win, KeyPress, KeyPressMask, keypress_handler, &data); mlx_hook(data.mlx_win, KeyRelease, KeyReleaseMask, keyrelease_handler, &data); + mlx_hook(data.mlx_win, DestroyNotify, NoEventMask, good_bye, &data); mlx_loop_hook(data.mlx, game_loop, &data); mlx_loop(data.mlx); }