-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkey_control.c
84 lines (78 loc) · 2.39 KB
/
key_control.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* key_control.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: jaemjeon <jaemjeon@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/02 15:59:49 by jaemjeon #+# #+# */
/* Updated: 2022/11/02 16:00:38 by jaemjeon ### ########.fr */
/* */
/* ************************************************************************** */
#include "cub3d.h"
#include "mlx.h"
void set_keyset(unsigned int *const keyset_ptr, int key)
{
if (key == KEY_A)
*keyset_ptr |= KEYSET_A;
if (key == KEY_S)
*keyset_ptr |= KEYSET_S;
if (key == KEY_D)
*keyset_ptr |= KEYSET_D;
if (key == KEY_W)
*keyset_ptr |= KEYSET_W;
if (key == KEY_LA)
*keyset_ptr |= KEYSET_LA;
if (key == KEY_RA)
*keyset_ptr |= KEYSET_RA;
if (key == KEY_DA)
*keyset_ptr |= KEYSET_DA;
if (key == KEY_UA)
*keyset_ptr |= KEYSET_UA;
}
int ft_key_press(int key, t_game *game)
{
unsigned int *const keyset_ptr = &game->pressed_keyset;
if (key == KEY_ESC)
{
mlx_destroy_window(game->info.mlx_ptr, game->info.win_ptr);
exit_game(0);
}
set_keyset(keyset_ptr, key);
if (key == KEY_H || key == KEY_J || key == KEY_K || key == KEY_L)
turn_cardinal_points(key, &game->player);
if (key == KEY_LSHIFT)
{
*keyset_ptr |= KEYSET_LSHIFT;
boost_key_on(game);
}
if (key == KEY_M)
mouse_switch(KEY_M, game);
return (0);
}
int ft_key_release(int key, t_game *game)
{
unsigned int *const keyset_ptr = &game->pressed_keyset;
if (key == KEY_A)
*keyset_ptr &= ~KEYSET_A;
if (key == KEY_S)
*keyset_ptr &= ~KEYSET_S;
if (key == KEY_D)
*keyset_ptr &= ~KEYSET_D;
if (key == KEY_W)
*keyset_ptr &= ~KEYSET_W;
if (key == KEY_LA)
*keyset_ptr &= ~KEYSET_LA;
if (key == KEY_RA)
*keyset_ptr &= ~KEYSET_RA;
if (key == KEY_DA)
*keyset_ptr &= ~KEYSET_DA;
if (key == KEY_UA)
*keyset_ptr &= ~KEYSET_UA;
if (key == KEY_LSHIFT)
{
*keyset_ptr &= ~KEYSET_LSHIFT;
boost_key_off(game);
}
return (0);
}