From 81f38daf231842c5aa6124a564e01d55cdbf63b9 Mon Sep 17 00:00:00 2001 From: Quinten Mennen Date: Tue, 15 Apr 2025 18:05:02 +0200 Subject: [PATCH] feat (window): close window on esc --- inc/cub3d.h | 3 ++- inc/game.h | 2 +- inc/keyhandle.h | 20 ++++++++++++++++++++ src/game.c | 5 +++-- src/keyhandle.c | 22 ++++++++++++++++++++++ src/main.c | 4 +++- 6 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 inc/keyhandle.h create mode 100644 src/keyhandle.c diff --git a/inc/cub3d.h b/inc/cub3d.h index e8644a8..7206ffd 100644 --- a/inc/cub3d.h +++ b/inc/cub3d.h @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 12:22:29 by qmennen #+# #+# */ -/* Updated: 2025/04/15 16:53:27 by qmennen ### ########.fr */ +/* Updated: 2025/04/15 17:55:33 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,7 @@ # include "errors.h" # include "game.h" # include "screen.h" +# include "keyhandle.h" # include "render.h" # define FAILURE 0 diff --git a/inc/game.h b/inc/game.h index 0d2ed6d..dc5aa90 100644 --- a/inc/game.h +++ b/inc/game.h @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 15:46:16 by qmennen #+# #+# */ -/* Updated: 2025/04/15 17:21:36 by qmennen ### ########.fr */ +/* Updated: 2025/04/15 17:58:22 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/inc/keyhandle.h b/inc/keyhandle.h new file mode 100644 index 0000000..396b024 --- /dev/null +++ b/inc/keyhandle.h @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* keyhandle.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/15 17:51:44 by qmennen #+# #+# */ +/* Updated: 2025/04/15 17:56:00 by qmennen ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef KEYHANDLE_H +# define KEYHANDLE_H + +# include "cub3d.h" + +void keyhandle(mlx_key_data_t keydata, void *param); + +#endif diff --git a/src/game.c b/src/game.c index fb01e68..687a4fb 100644 --- a/src/game.c +++ b/src/game.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */ -/* Updated: 2025/04/15 17:23:29 by qmennen ### ########.fr */ +/* Updated: 2025/04/15 18:02:09 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -43,8 +43,8 @@ void game_terminate(t_game *game) { if (game->screen) { - mlx_close_window(game->screen->mlx); mlx_delete_image(game->screen->mlx, game->screen->img); + mlx_close_window(game->screen->mlx); mlx_terminate(game->screen->mlx); free(game->screen); } @@ -53,4 +53,5 @@ void game_terminate(t_game *game) if (game->map) free(game->map); free(game); + exit(EXIT_SUCCESS); } diff --git a/src/keyhandle.c b/src/keyhandle.c new file mode 100644 index 0000000..d414c45 --- /dev/null +++ b/src/keyhandle.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* keyhandle.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/15 17:51:26 by qmennen #+# #+# */ +/* Updated: 2025/04/15 17:56:24 by qmennen ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "keyhandle.h" + +void keyhandle(mlx_key_data_t keydata, void *param) +{ + t_game *game; + + game = (t_game *)param; + if (keydata.key == MLX_KEY_ESCAPE) + game_terminate(game); +} diff --git a/src/main.c b/src/main.c index b27cb00..ea718b0 100644 --- a/src/main.c +++ b/src/main.c @@ -6,10 +6,11 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 16:01:29 by qmennen #+# #+# */ -/* Updated: 2025/04/15 17:23:45 by qmennen ### ########.fr */ +/* Updated: 2025/04/15 18:02:44 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ +#include "MLX42.h" # include "cub3d.h" int main(void) @@ -22,6 +23,7 @@ int main(void) return (EXIT_FAILURE); } screen_center(game->screen); + mlx_key_hook(game->screen->mlx, keyhandle, game); mlx_loop_hook(game->screen->mlx, game_loop, game); mlx_loop(game->screen->mlx); game_terminate(game);