playable with a gamepad
[vrtris] / src / game.h
1 #ifndef GAME_H_
2 #define GAME_H_
3
4 long time_msec;
5 int win_width, win_height;
6 int vp_width, vp_height;        /* viewport size differs from win size during VR eye rendering */
7 float win_aspect;
8 int fb_srgb;
9
10 float joy_axis[3];
11 unsigned int joy_bnstate;
12
13 float view_matrix[16], proj_matrix[16];
14
15 enum {
16         MOD_SHIFT       = 1,
17         MOD_ALT         = 2,
18         MOD_CTRL        = 4
19 };
20
21 /* special keys */
22 enum {
23         KEY_DEL = 127,
24         KEY_LEFT,
25         KEY_RIGHT,
26         KEY_UP,
27         KEY_DOWN,
28         KEY_PGUP,
29         KEY_PGDOWN,
30         KEY_HOME,
31         KEY_END,
32         KEY_F1,
33         KEY_F2,
34         KEY_F3,
35         KEY_F4,
36         KEY_F5,
37         KEY_F6,
38         KEY_F7,
39         KEY_F8,
40         KEY_F9,
41         KEY_F10,
42         KEY_F11,
43         KEY_F12
44 };
45
46 /* XXX make sure these match with SDL_GameControllerButton */
47 enum {
48         GPAD_A,
49         GPAD_B,
50         GPAD_X,
51         GPAD_Y,
52         GPAD_BACK,
53         GPAD_GUIDE,
54         GPAD_START,
55         GPAD_LSTICK,
56         GPAD_RSTICK,
57         GPAD_L,
58         GPAD_R,
59         GPAD_UP,
60         GPAD_DOWN,
61         GPAD_LEFT,
62         GPAD_RIGHT
63 };
64
65 /* XXX make sure these match with SDL_GameControllerAxis */
66 enum {
67         GPAD_LSTICK_X,
68         GPAD_LSTICK_Y,
69         GPAD_RSTICK_X,
70         GPAD_RSTICK_Y,
71         GPAD_LTRIG,
72         GPAD_RTRIG
73 };
74
75 int game_init(int argc, char **argv);
76 void game_cleanup(void);
77
78 void game_display(void);
79 void game_reshape(int x, int y);
80
81 void game_keyboard(int key, int pressed);
82 void game_mouse_button(int bn, int pressed, int x, int y);
83 void game_mouse_motion(int x, int y);
84 void game_mouse_wheel(int dir);
85
86 void game_gamepad_axis(int axis, float val);
87 void game_gamepad_button(int bn, int pressed);
88
89 /* the following functions are implemented by the backend (main.c) */
90 void game_quit(void);
91 void game_swap_buffers(void);
92 unsigned int game_get_modifiers(void);
93
94 void game_resize(int x, int y);
95 void game_fullscreen(int fs);
96 void game_toggle_fullscreen(void);
97 int game_is_fullscreen(void);
98
99 int game_num_joy_axes(void);
100 int game_num_joy_buttons(void);
101
102 #endif  // GAME_H_