]> git.dkaiser.de - 42/so_long.git/commitdiff
Change input handling to MLX42 approach
authorDominik Kaiser <dkaiser@1-C-7.42heilbronn.de>
Fri, 10 May 2024 10:12:24 +0000 (12:12 +0200)
committerDominik Kaiser <dkaiser@1-C-7.42heilbronn.de>
Fri, 10 May 2024 10:12:24 +0000 (12:12 +0200)
include/so_long.h
src/init.c
src/input.c

index e4e4f574ca25a2965b25850b584f1f1e3cd39812..b2bf7d7ccdd3735e360d0471b9906374c27a4521 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/05/08 14:14:02 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/05/10 11:24:42 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/05/10 12:11:11 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -52,7 +52,6 @@ typedef struct s_game
 int                            init(t_game *game);
 void                           loop(void *game);
 int                            draw(t_game *game);
-void                           on_key_down(mlx_key_data_t keydata, void *params);
-int                            on_key_up(int keycode, t_game *game);
+void on_key_input(mlx_key_data_t event, void *params);
 
 #endif // SO_LONG_H
index 5efec32bf3b45deb9bf60186852b29ce14cc7a71..d72f486282bf1bbb5369c69e368f7974b29cce57 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/05/09 14:50:09 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/05/10 11:49:11 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/05/10 12:11:01 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -32,7 +32,7 @@ int   init(t_game *game)
 static void    init_hooks(t_game *game)
 {
        mlx_loop_hook(game->mlx, loop, game);
-       mlx_key_hook(game->mlx, on_key_down, game);
+       mlx_key_hook(game->mlx, on_key_input, game);
        /* mlx_hook(game->window, 2, 0, on_key_down, game); */
        /* mlx_hook(game->window, 3, 0, on_key_up, game); */
 }
index 75822260f556f6f879e149ecc47c2d604796812f..40c567016c17555f9be9486f5c518168ae0dccde 100644 (file)
@@ -6,46 +6,37 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/05/09 15:37:40 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/05/10 11:33:09 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/05/10 12:11:48 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
 #include "so_long.h"
 
-void   on_key_down(mlx_key_data_t keydata, void *params)
+void on_key_input(mlx_key_data_t event, void *params)
 {
        t_game *game;
-       int keycode;
-
-       keycode = keydata.os_key;
 
        game = (t_game *) params;
-
-       if (keydata.action == MLX_RELEASE)
+       if (event.action == MLX_PRESS)
        {
-               on_key_up(keycode, game);
-               return;
+               if (event.key == MLX_KEY_W || event.key == MLX_KEY_UP)
+                       game->input_direction |= UP;
+               else if (event.key == MLX_KEY_A || event.key == MLX_KEY_LEFT)
+                       game->input_direction |= LEFT;
+               else if (event.key == MLX_KEY_S || event.key == MLX_KEY_DOWN)
+                       game->input_direction |= DOWN;
+               else if (event.key == MLX_KEY_D || event.key == MLX_KEY_RIGHT)
+                       game->input_direction |= RIGHT;
+       }
+       else if (event.action == MLX_RELEASE)
+       {
+               if (event.key == MLX_KEY_W || event.key == MLX_KEY_UP)
+                       game->input_direction &= ~UP;
+               else if (event.key == MLX_KEY_A || event.key == MLX_KEY_LEFT)
+                       game->input_direction &= ~LEFT;
+               else if (event.key == MLX_KEY_S || event.key == MLX_KEY_DOWN)
+                       game->input_direction &= ~DOWN;
+               else if (event.key == MLX_KEY_D || event.key == MLX_KEY_RIGHT)
+                       game->input_direction &= ~RIGHT;
        }
-
-       if (keycode == 13 || keycode == 126)
-               game->input_direction |= UP;
-       else if (keycode == 0 || keycode == 123)
-               game->input_direction |= LEFT;
-       else if (keycode == 1 || keycode == 125)
-               game->input_direction |= DOWN;
-       else if (keycode == 2 || keycode == 124)
-               game->input_direction |= RIGHT;
-}
-
-int    on_key_up(int keycode, t_game *game)
-{
-       if (keycode == 13 || keycode == 126)
-               game->input_direction &= ~UP;
-       else if (keycode == 0 || keycode == 123)
-               game->input_direction &= ~LEFT;
-       else if (keycode == 1 || keycode == 125)
-               game->input_direction &= ~DOWN;
-       else if (keycode == 2 || keycode == 124)
-               game->input_direction &= ~RIGHT;
-       return (0);
 }