finished the tile generator
[megadrive_tetris] / tools / tilegen / src / shaft.c
1 #include <GL/gl.h>
2
3 #define GAP_Y   1.0
4 #define GAP_X   0.5
5 #define WALL_WIDTH      0.2
6
7 #define XOFFS_OUT       (GAP_X + WALL_WIDTH)
8 #define XOFFS_IN        GAP_X
9 #define YOFFS_OUT       (GAP_Y + WALL_WIDTH)
10 #define YOFFS_IN        GAP_Y
11 #define ZMAX            0.5
12
13 enum {
14         COL_FRONT,
15         COL_LEFT,
16         COL_RIGHT,
17         COL_BOT,
18         NUM_COLORS
19 };
20
21 #define LLEFT   0.8
22 #define LRIGHT  1.2
23 #define LBOT    1.5
24
25 static const float col[NUM_COLORS][3] = {
26         {0.75, 0.72, 0.8},
27         {0.75 * LLEFT, 0.72 * LLEFT, 0.8 * LLEFT},
28         {0.75 * LRIGHT, 0.72 * LRIGHT, 0.8 * LRIGHT},
29         {0.75 * LBOT, 0.72 * LBOT, 0.8 * LBOT}
30 };
31
32 void draw_shaft(void)
33 {
34         glPushAttrib(GL_ENABLE_BIT);
35
36         glBegin(GL_QUADS);
37         /* tunnel-left */
38         glColor3fv(col[COL_LEFT]);
39         glVertex3f(-XOFFS_IN, -YOFFS_IN, 0);
40         glVertex3f(-XOFFS_IN, -YOFFS_IN, -ZMAX);
41         glVertex3f(-XOFFS_IN, YOFFS_OUT, -ZMAX);
42         glVertex3f(-XOFFS_IN, YOFFS_OUT, 0);
43
44         /* tunnel-bottom */
45         glColor3fv(col[COL_BOT]);
46         glVertex3f(-XOFFS_IN, -YOFFS_IN, 0);
47         glVertex3f(XOFFS_IN, -YOFFS_IN, 0);
48         glVertex3f(XOFFS_IN, -YOFFS_IN, -ZMAX);
49         glVertex3f(-XOFFS_IN, -YOFFS_IN, -ZMAX);
50
51         /* tunnel-right */
52         glColor3fv(col[COL_RIGHT]);
53         glVertex3f(XOFFS_IN, -YOFFS_IN, 0);
54         glVertex3f(XOFFS_IN, YOFFS_OUT, 0);
55         glVertex3f(XOFFS_IN, YOFFS_OUT, -ZMAX);
56         glVertex3f(XOFFS_IN, -YOFFS_IN, -ZMAX);
57
58         glColor3fv(col[COL_FRONT]);
59         /* left front face */
60         glVertex3f(-XOFFS_OUT, -YOFFS_OUT, 0);
61         glVertex3f(-XOFFS_IN, -YOFFS_IN, 0);
62         glVertex3f(-XOFFS_IN, YOFFS_OUT, 0);
63         glVertex3f(-XOFFS_OUT, YOFFS_OUT, 0);
64         /* bottom front face */
65         glVertex3f(-XOFFS_OUT, -YOFFS_OUT, 0);
66         glVertex3f(XOFFS_OUT, -YOFFS_OUT, 0);
67         glVertex3f(XOFFS_IN, -YOFFS_IN, 0);
68         glVertex3f(-XOFFS_IN, -YOFFS_IN, 0);
69         /* right front face */
70         glVertex3f(XOFFS_IN, -YOFFS_IN, 0);
71         glVertex3f(XOFFS_OUT, -YOFFS_OUT, 0);
72         glVertex3f(XOFFS_OUT, YOFFS_OUT, 0);
73         glVertex3f(XOFFS_IN, YOFFS_OUT, 0);
74
75         glEnd();
76
77         glPopAttrib();
78 }