X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=megadrive_tetris;a=blobdiff_plain;f=tools%2Ftilegen%2Fsrc%2Fshaft.c;fp=tools%2Ftilegen%2Fsrc%2Fshaft.c;h=b35ef5a3e253511a091311a41eb46ccb8fbd1139;hp=0000000000000000000000000000000000000000;hb=980839aac8347438f99f3b2e7c054f2bb19f327b;hpb=f22bed18ebb87b87c6b8e9d31b42f4320bdf34d6 diff --git a/tools/tilegen/src/shaft.c b/tools/tilegen/src/shaft.c new file mode 100644 index 0000000..b35ef5a --- /dev/null +++ b/tools/tilegen/src/shaft.c @@ -0,0 +1,78 @@ +#include + +#define GAP_Y 1.0 +#define GAP_X 0.5 +#define WALL_WIDTH 0.2 + +#define XOFFS_OUT (GAP_X + WALL_WIDTH) +#define XOFFS_IN GAP_X +#define YOFFS_OUT (GAP_Y + WALL_WIDTH) +#define YOFFS_IN GAP_Y +#define ZMAX 0.5 + +enum { + COL_FRONT, + COL_LEFT, + COL_RIGHT, + COL_BOT, + NUM_COLORS +}; + +#define LLEFT 0.8 +#define LRIGHT 1.2 +#define LBOT 1.5 + +static const float col[NUM_COLORS][3] = { + {0.75, 0.72, 0.8}, + {0.75 * LLEFT, 0.72 * LLEFT, 0.8 * LLEFT}, + {0.75 * LRIGHT, 0.72 * LRIGHT, 0.8 * LRIGHT}, + {0.75 * LBOT, 0.72 * LBOT, 0.8 * LBOT} +}; + +void draw_shaft(void) +{ + glPushAttrib(GL_ENABLE_BIT); + + glBegin(GL_QUADS); + /* tunnel-left */ + glColor3fv(col[COL_LEFT]); + glVertex3f(-XOFFS_IN, -YOFFS_IN, 0); + glVertex3f(-XOFFS_IN, -YOFFS_IN, -ZMAX); + glVertex3f(-XOFFS_IN, YOFFS_OUT, -ZMAX); + glVertex3f(-XOFFS_IN, YOFFS_OUT, 0); + + /* tunnel-bottom */ + glColor3fv(col[COL_BOT]); + glVertex3f(-XOFFS_IN, -YOFFS_IN, 0); + glVertex3f(XOFFS_IN, -YOFFS_IN, 0); + glVertex3f(XOFFS_IN, -YOFFS_IN, -ZMAX); + glVertex3f(-XOFFS_IN, -YOFFS_IN, -ZMAX); + + /* tunnel-right */ + glColor3fv(col[COL_RIGHT]); + glVertex3f(XOFFS_IN, -YOFFS_IN, 0); + glVertex3f(XOFFS_IN, YOFFS_OUT, 0); + glVertex3f(XOFFS_IN, YOFFS_OUT, -ZMAX); + glVertex3f(XOFFS_IN, -YOFFS_IN, -ZMAX); + + glColor3fv(col[COL_FRONT]); + /* left front face */ + glVertex3f(-XOFFS_OUT, -YOFFS_OUT, 0); + glVertex3f(-XOFFS_IN, -YOFFS_IN, 0); + glVertex3f(-XOFFS_IN, YOFFS_OUT, 0); + glVertex3f(-XOFFS_OUT, YOFFS_OUT, 0); + /* bottom front face */ + glVertex3f(-XOFFS_OUT, -YOFFS_OUT, 0); + glVertex3f(XOFFS_OUT, -YOFFS_OUT, 0); + glVertex3f(XOFFS_IN, -YOFFS_IN, 0); + glVertex3f(-XOFFS_IN, -YOFFS_IN, 0); + /* right front face */ + glVertex3f(XOFFS_IN, -YOFFS_IN, 0); + glVertex3f(XOFFS_OUT, -YOFFS_OUT, 0); + glVertex3f(XOFFS_OUT, YOFFS_OUT, 0); + glVertex3f(XOFFS_IN, YOFFS_OUT, 0); + + glEnd(); + + glPopAttrib(); +}