zodttd / gameboy4iphone
- Source
- Commits
- Network (5)
- Issues (0)
- Downloads (0)
- Wiki (1)
- Graphs
-
Tree:
d25b16a
gameboy4iphone / events.c
| bf4e5121 » | ME | 2008-04-28 | 1 | /* | |
| 2 | * events.c | ||||
| 3 | * | ||||
| 4 | * Event queue. | ||||
| 5 | */ | ||||
| 6 | |||||
| 7 | |||||
| 8 | #include "input.h" | ||||
| 9 | |||||
| 10 | |||||
| 11 | char keystates[MAX_KEYS]; | ||||
| 12 | int nkeysdown; | ||||
| 13 | |||||
| 14 | #define MAX_EVENTS 32 | ||||
| 15 | |||||
| 16 | static event_t eventqueue[MAX_EVENTS]; | ||||
| 17 | static int eventhead, eventpos; | ||||
| 18 | |||||
| 19 | |||||
| 20 | int ev_postevent(event_t *ev) | ||||
| 21 | { | ||||
| 22 | int nextevent; | ||||
| 23 | nextevent = (eventhead+1)%MAX_EVENTS; | ||||
| 24 | if (nextevent == eventpos) | ||||
| 25 | return 0; | ||||
| 26 | eventqueue[eventhead] = *ev; | ||||
| 27 | eventhead = nextevent; | ||||
| 28 | return 1; | ||||
| 29 | } | ||||
| 30 | |||||
| 31 | int ev_getevent(event_t *ev) | ||||
| 32 | { | ||||
| 33 | if (eventpos == eventhead) | ||||
| 34 | { | ||||
| 35 | ev->type = EV_NONE; | ||||
| 36 | return 0; | ||||
| 37 | } | ||||
| 38 | *ev = eventqueue[eventpos]; | ||||
| 39 | eventpos = (eventpos+1)%MAX_EVENTS; | ||||
| 40 | if (ev->type == EV_PRESS) | ||||
| 41 | { | ||||
| 42 | keystates[ev->code] = 1; | ||||
| 43 | nkeysdown++; | ||||
| 44 | } | ||||
| 45 | if (ev->type == EV_RELEASE) | ||||
| 46 | { | ||||
| 47 | keystates[ev->code] = 0; | ||||
| 48 | nkeysdown--; | ||||
| 49 | if (nkeysdown < 0) nkeysdown = 0; | ||||
| 50 | } | ||||
| 51 | return 1; | ||||
| 52 | } | ||||
| 53 | |||||
| 54 | |||||
| 55 | |||||
| 56 | |||||
| 57 | |||||
| 58 | |||||
| 59 | |||||
| 60 | |||||

