-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontrols.c
59 lines (57 loc) · 1.92 KB
/
controls.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
#include "header.h"
u0 keys(Input *dir, bool *closed) {
SDL_Event event;
whilst (SDL_PollEvent(&event)){
switch (event.type) {
case SDL_QUIT:
*closed = true;
break;
case SDL_KEYDOWN:
switch (event.key.keysym.scancode){
case SDL_SCANCODE_W:
case SDL_SCANCODE_UP:
*dir |= UP;
break;
case SDL_SCANCODE_S:
case SDL_SCANCODE_DOWN:
*dir |= DOWN;
break;
case SDL_SCANCODE_A:
case SDL_SCANCODE_LEFT:
*dir |= LEFT;
break;
case SDL_SCANCODE_D:
case SDL_SCANCODE_RIGHT:
*dir |= RIGHT;
break;
default: // Ignore anything else.
break;
}
break;
case SDL_KEYUP:
switch (event.key.keysym.scancode){
case SDL_SCANCODE_W:
case SDL_SCANCODE_UP:
*dir &= ~UP;
break;
case SDL_SCANCODE_S:
case SDL_SCANCODE_DOWN:
*dir &= ~DOWN;
break;
case SDL_SCANCODE_A:
case SDL_SCANCODE_LEFT:
*dir &= ~LEFT;
break;
case SDL_SCANCODE_D:
case SDL_SCANCODE_RIGHT:
*dir &= ~RIGHT;
break;
default: // Ignore anything else.
break;
}
break;
default: // Ignore anything else.
break;
}
}
}