almost
[fbgfx] / src / main.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include "fbgfx.h"
5 #include "fbevents.h"
6 #include "tunnel.h"
7
8 static void keyboard(int key, int pressed, void *cls);
9 static void mouse(int bn, int pressed, int x, int y, void *cls);
10 static void motion(int x, int y, void *cls);
11
12 static void *vmem;
13 static int xsz, ysz, depth;
14
15 static int quit;
16
17
18 int main(void)
19 {
20         fbgfx_save_video_mode();
21         if(!(vmem = fbgfx_set_video_mode(800, 600, 16))) {
22                 return 1;
23         }
24         fbgfx_get_video_mode(&xsz, &ysz, &depth);
25         if(depth != 16) {
26                 goto end;
27         }
28         if(fbev_init() == -1) {
29                 goto end;
30         }
31         fbev_keyboard(keyboard, 0);
32         fbev_mbutton(mouse, 0);
33         fbev_mmotion(motion, 0);
34
35         if(init_tunnel(xsz, ysz) == -1) {
36                 goto end;
37         }
38
39         for(;;) {
40                 fbev_update();
41                 if(quit) break;
42
43                 draw_tunnel(vmem);
44         }
45
46 end:
47         destroy_tunnel();
48         fbev_shutdown();
49         fbgfx_restore_video_mode();
50         return 0;
51 }
52
53 static void keyboard(int key, int pressed, void *cls)
54 {
55         if(!pressed) return;
56
57         switch(key) {
58         case 27:
59         case 'q':
60         case 'Q':
61                 exit(0);
62         }
63 }
64
65 static void mouse(int bn, int pressed, int x, int y, void *cls)
66 {
67 }
68
69 static void motion(int x, int y, void *cls)
70 {
71 }