void buttonRender (void) { int i; Rect r; for (i=0; i<nbuttons; i++) { if (button[i].over) { glColor3f(0.5f, 0.5f, 0.5f); //draw a highlight around button glLineWidth(2); glBegin(GL_LINE_LOOP); glVertex2i(button[i].r.left-2, button[i].r.bot-2); glVertex2i(button[i].r.left-2, button[i].r.top+2); glVertex2i(button[i].r.right+2, button[i].r.top+2); glVertex2i(button[i].r.right+2, button[i].r.bot-2); glVertex2i(button[i].r.left-2, button[i].r.bot-2); glEnd(); glLineWidth(1); } if (button[i].down) { glColor3fv(button[i].color); } else { glColor3fv(button[i].color); } glBegin(GL_QUADS); glVertex2i(button[i].r.left, button[i].r.bot); glVertex2i(button[i].r.left, button[i].r.top); glVertex2i(button[i].r.right, button[i].r.top); glVertex2i(button[i].r.right, button[i].r.bot); glEnd(); r.left = button[i].r.centerx; r.bot = button[i].r.centery-8; r.center = 1; if (button[i].down) { ggprint16(&r, 0, button[i].text_color, "Pressed!"); } else { ggprint16(&r, 0, button[i].text_color, button[i].text); } } }
//The Display of the game void render(Game *game) { float w, h, x, y; Duck *d = game->duck; deadDuck *dd = game->deadD; freeDuck *fd = game->freeD; Dog *doge = game->dog; happyDog *hdoge = game->hdog; laughingDog *ldoge = game->ldog; struct timespec dt; clock_gettime(CLOCK_REALTIME, &dt); glColor3ub(255, 255, 255); glClearColor(1.0, 1.0, 1.0, 1.0); glClear(GL_COLOR_BUFFER_BIT); //Background and Gameover being displayed if(background) { glBindTexture(GL_TEXTURE_2D, backgroundTexture); glBegin(GL_QUADS); glTexCoord2f(0.0f, 1.0f); glVertex2i(0, 0); glTexCoord2f(0.0f, 0.0f); glVertex2i(0, WINDOW_HEIGHT); glTexCoord2f(1.0f, 0.0f); glVertex2i(WINDOW_WIDTH, WINDOW_HEIGHT); glTexCoord2f(1.0f, 1.0f); glVertex2i(WINDOW_WIDTH, 0); glEnd(); } if(gameover) { glBindTexture(GL_TEXTURE_2D, gameoverbgTexture); glBegin(GL_QUADS); glTexCoord2f(0.0f, 1.0f); glVertex2i(0, 0); glTexCoord2f(0.0f, 0.0f); glVertex2i(0, WINDOW_HEIGHT); glTexCoord2f(1.0f, 0.0f); glVertex2i(WINDOW_WIDTH, WINDOW_HEIGHT); glTexCoord2f(1.0f, 1.0f); glVertex2i(WINDOW_WIDTH, 0); glEnd(); } glDisable(GL_TEXTURE_2D); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, 0); //---------------------------------------- //Drawing Shapes glColor3ub(255, 255, 255); glBegin(GL_LINES); glVertex2f(0.0, game->floor); glVertex2f(WINDOW_WIDTH, game->floor); glEnd(); Rect r; r.bot = WINDOW_HEIGHT - 550; r.left = WINDOW_WIDTH - 715; r.center = 0; menu(game); Shape *s; //Displaying bullets glColor3ub(90, 140, 90); s = &game->box[0]; glPushMatrix(); glTranslatef(s->center.x, s->center.y, s->center.z); w = s->width; h = s->height; int num = 0, dist = 0; if (game->bullets == 3) { num = 3, dist = 80; } if (game->bullets == 2) { num = 2, dist = 60; } if (game->bullets == 1) { num = 1, dist = 40; } if (game->bullets == 0) { num = 0, dist = 0; } if (game->bullets != 0) { for (int i=0;i<num;i++) { bullet_sprite.pos[0] = dist - (i * 20); bullet_sprite.pos[1] = 40; bullet_sprite.pos[2] = 0; float wid = 10.0f; glPushMatrix(); glTranslatef(bullet_sprite.pos[0], bullet_sprite.pos[1], bullet_sprite.pos[2]); glBindTexture(GL_TEXTURE_2D, bulletTexture); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.0f); glColor4ub(255,255,255,255); glBegin(GL_QUADS); if (bullet_sprite.vel[0] > 0.0) { glTexCoord2f(0.0f, 1.0f); glVertex2i(-wid,-wid); glTexCoord2f(0.0f, 0.0f); glVertex2i(-wid, wid); glTexCoord2f(1.0f, 0.0f); glVertex2i( wid, wid); glTexCoord2f(1.0f, 1.0f); glVertex2i( wid,-wid); } else { glTexCoord2f(1.0f, 1.0f); glVertex2i(-wid,-wid); glTexCoord2f(1.0f, 0.0f); glVertex2i(-wid, wid); glTexCoord2f(0.0f, 0.0f); glVertex2i( wid, wid); glTexCoord2f(0.0f, 1.0f); glVertex2i( wid,-wid); } glEnd(); glPopMatrix(); glDisable(GL_ALPHA_TEST); } } r.bot = s->height; r.left = s->width; glVertex2i(-w, -h); glVertex2i(-w, h); glVertex2i(w, h); glVertex2i(w, -h); glEnd(); //ggprint16(&r , 16, 0x00ffffff, "%i", game->bullets); glPopMatrix(); //------------------------------------------------------------------- //Displaying duck score sprites glColor3ub(90, 140, 90); s = &game->box[1]; glPushMatrix(); glTranslatef(s->center.x, s->center.y, s->center.z); w = s->width; h = s->height; if (game->duckShot <= 10) { for (int i=0;i<=9;i++) { duckscore_sprite.pos[0] = 70 + (i * 25); duckscore_sprite.pos[1] = 42; duckscore_sprite.pos[2] = 0; float wid = 10.0f; glPushMatrix(); glTranslatef(duckscore_sprite.pos[0], duckscore_sprite.pos[1], duckscore_sprite.pos[2]); glBindTexture(GL_TEXTURE_2D, duckscoreTexture); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.0f); glColor4ub(255,255,255,255); glBegin(GL_QUADS); if (duckscore_sprite.vel[0] > 0.0) { glTexCoord2f(0.0f, 1.0f); glVertex2i(-wid,-wid); glTexCoord2f(0.0f, 0.0f); glVertex2i(-wid, wid); glTexCoord2f(1.0f, 0.0f); glVertex2i( wid, wid); glTexCoord2f(1.0f, 1.0f); glVertex2i( wid,-wid); } else { glTexCoord2f(1.0f, 1.0f); glVertex2i(-wid,-wid); glTexCoord2f(1.0f, 0.0f); glVertex2i(-wid, wid); glTexCoord2f(0.0f, 0.0f); glVertex2i( wid, wid); glTexCoord2f(0.0f, 1.0f); glVertex2i( wid,-wid); } glEnd(); glPopMatrix(); glDisable(GL_ALPHA_TEST); } } int loop = 0; if (game->duckShot == 1) loop = 1; if (game->duckShot == 2) loop = 2; if (game->duckShot == 3) loop = 3; if (game->duckShot == 4) loop = 4; if (game->duckShot == 5) loop = 5; if (game->duckShot == 6) loop = 6; if (game->duckShot == 7) loop = 7; if (game->duckShot == 8) loop = 8; if (game->duckShot == 9) loop = 9; if (game->duckShot == 10) loop = 10; if (game->duckShot <= 9) { for (int i=0;i<loop;i++) { duckscore_sprite2.pos[0] = 70 + (i * 25); duckscore_sprite2.pos[1] = 42; duckscore_sprite2.pos[2] = 0; float wid = 10.0f; glPushMatrix(); glTranslatef(duckscore_sprite2.pos[0], duckscore_sprite2.pos[1], duckscore_sprite2.pos[2]); glBindTexture(GL_TEXTURE_2D, duckscoreTexture2); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.0f); glColor4ub(255,255,255,255); glBegin(GL_QUADS); if (duckscore_sprite2.vel[0] > 0.0) { glTexCoord2f(0.0f, 1.0f); glVertex2i(-wid,-wid); glTexCoord2f(0.0f, 0.0f); glVertex2i(-wid, wid); glTexCoord2f(1.0f, 0.0f); glVertex2i( wid, wid); glTexCoord2f(1.0f, 1.0f); glVertex2i( wid,-wid); } else { glTexCoord2f(1.0f, 1.0f); glVertex2i(-wid,-wid); glTexCoord2f(1.0f, 0.0f); glVertex2i(-wid, wid); glTexCoord2f(0.0f, 0.0f); glVertex2i( wid, wid); glTexCoord2f(0.0f, 1.0f); glVertex2i( wid,-wid); } glEnd(); glPopMatrix(); glDisable(GL_ALPHA_TEST); } } r.bot = s->height; r.left = s->width; glVertex2i(-w, -h); glVertex2i(-w, h); glVertex2i(w, h); glVertex2i(w, -h); glEnd(); if(!d && game->duckCount >= 10 && game->duckShot < 6) { ggprint16(&r , 16, 0x00ffffff, "GAME OVER"); } //ggprint16(&r , 16, 0x00ffffff, "%i / 10", game->duckShot); glPopMatrix(); glColor3ub(90, 140, 90); s = &game->box[2]; glPushMatrix(); glTranslatef(s->center.x, s->center.y, s->center.z); w = s->width; h = s->height; r.bot = s->height; r.left = s->width; glVertex2i(-w, -h); glVertex2i(-w, h); glVertex2i(w, h); glVertex2i(w, -h); glEnd(); ggprint16(&r , 16, 0x00ffffff, "%i", game->score); glPopMatrix(); glColor3ub(90, 140, 90); s = &game->box[3]; glPushMatrix(); glTranslatef(s->center.x, s->center.y, s->center.z); w = s->width; h = s->height; r.bot = s->height; r.left = s->width; glVertex2i(-w, -h); glVertex2i(-w, h); glVertex2i(w, h); glVertex2i(w, -h); glEnd(); ggprint16(&r , 16, 0x00ffffff, "%i", game->rounds); glPopMatrix(); if(game->afterDog && game->onScreen == 0 && game->dogGone && game->n == 0 && game->waitForDog) { if(game->duckCaptured >= 1) makeHappyDog(game, WINDOW_WIDTH / 2, game->floor + 51); else makeLaughingDog(game, WINDOW_WIDTH / 2, game->floor + 51); game->afterDog = false; game->duckCaptured = 0; } if(!d && game->duckCount >= 10 && game->duckShot >= 6 && game->dogGone && !game->waitForDog && game->onScreen == 0 && game->n == 0) { game->rounds++; game->duckCount = 0; game->duckShot = 0; game->animateDog = true; game->dogGone = false; game->afterDog = true; game->waitForDog = false; } if((game->oneDuck || game->twoDuck) && game->dogGone && !game->waitForDog) { if(!d && game->duckCount >= 10 && game->duckShot < 6) { while(d) { deleteDuck(game, d); d = d->next; } game->oneDuck = false; game->twoDuck = false; std::cout << "GAME OVER" << std::endl; } if(!d && game->oneDuck && game->duckCount < 10 && game->onScreen == 0 && game->n == 0) { game->bullets = 3; makeDuck(game, rand() % (WINDOW_WIDTH - 50 - 1) + 50 + 1, game->floor + 50 + 1); game->duckCount++; } if(!d && game->twoDuck && game->duckCount < 9 && game->onScreen == 0 && game->n == 0) { game->bullets = 3; makeDuck(game, rand() % (WINDOW_WIDTH - 50 - 1) + 50 + 1, game->floor + 50 + 1); makeDuck(game, rand() % (WINDOW_WIDTH - 50 - 1) + 50 + 1, game->floor + 50 + 1); game->duckCount += 2; } } //Main Duck rendering duck_sprite.pos[0] = s->center.x; glColor3ub(255, 255, 255); while(d) { w = d->s.width; h = d->s.height; x = d->s.center.x; y = d->s.center.y; glBegin(GL_QUADS); glVertex2f(x-w, y+h); glVertex2f(x-w, y-h); glVertex2f(x+w, y-h); glVertex2f(x+w, y+h); glEnd(); //This changes which duck it points to show_duck= 1; float wid = 50.0f; duck_sprite.pos[0] = x; duck_sprite.pos[1] = y; duck_sprite.pos[2] = s->center.z; d = d->next; duck_sprite2.pos[0] = x; duck_sprite2.pos[1] = y; duck_sprite2.pos[2] = s->center.z; if(show_duck) { glPushMatrix(); glTranslatef(duck_sprite.pos[0], duck_sprite.pos[1], duck_sprite.pos[2]); //remove if statement and make //a while loop to take in both duck if (silhouette) { //glBind makes the duck texture glBindTexture(GL_TEXTURE_2D, duckTexture); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.0f); glColor4ub(255,255,255,255); } glBegin(GL_QUADS); if (duck_sprite.vel[0] > 0.0) { glTexCoord2f(0.0f, 1.0f); glVertex2i(-wid,-wid); glTexCoord2f(0.0f, 0.0f); glVertex2i(-wid, wid); glTexCoord2f(1.0f, 0.0f); glVertex2i( wid, wid); glTexCoord2f(1.0f, 1.0f); glVertex2i( wid,-wid); } else { glTexCoord2f(1.0f, 1.0f); glVertex2i(-wid,-wid); glTexCoord2f(1.0f, 0.0f); glVertex2i(-wid, wid); glTexCoord2f(0.0f, 0.0f); glVertex2i( wid, wid); glTexCoord2f(0.0f, 1.0f); glVertex2i( wid,-wid); } //Duck2 /* glTranslatef(duck_sprite2.pos[0], duck_sprite2.pos[1], duck_sprite2.pos[2]); if (silhouette) { glBindTexture(GL_TEXTURE_2D, duckTexture2); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.0f); glColor4ub(255,255,255,255); } glBegin(GL_QUADS); if (duck_sprite2.vel[0] > 0.0) { glTexCoord2f(0.0f, 1.0f); glVertex2i(-wid,-wid); glTexCoord2f(0.0f, 0.0f); glVertex2i(-wid, wid); glTexCoord2f(1.0f, 0.0f); glVertex2i( wid, wid); glTexCoord2f(1.0f, 1.0f); glVertex2i( wid,-wid); } else { glTexCoord2f(1.0f, 1.0f); glVertex2i(-wid,-wid); glTexCoord2f(1.0f, 0.0f); glVertex2i(-wid, wid); glTexCoord2f(0.0f, 0.0f); glVertex2i( wid, wid); glTexCoord2f(0.0f, 1.0f); glVertex2i( wid,-wid); } */ glEnd(); glPopMatrix(); //Transparent part if (trees && silhouette) { glBindTexture(GL_TEXTURE_2D, backgroundTransTexture); glBegin(GL_QUADS); glTexCoord2f(0.0f, 1.0f); glVertex2i(0, 0); glTexCoord2f(0.0f, 0.0f); glVertex2i(0, WINDOW_HEIGHT); glTexCoord2f(1.0f, 0.0f); glVertex2i(WINDOW_WIDTH, WINDOW_HEIGHT); glTexCoord2f(1.0f, 1.0f); glVertex2i(WINDOW_WIDTH, 0); glEnd(); } glDisable(GL_ALPHA_TEST); } } //---------------------------------------------------- glColor3ub(255, 0, 0); while(dd) { double ts = timeDiff(&dd->time, &dt); w = dd->s.width; h = dd->s.height; x = dd->s.center.x; y = dd->s.center.y; glBegin(GL_QUADS); glVertex2f(x-w, y+h); glVertex2f(x-w, y-h); glVertex2f(x+w, y-h); glVertex2f(x+w, y+h); glEnd(); r.bot = y + h; r.left = x - (w/2); if(ts < 0.3) { if(dd->points == true) ggprint16(&r , 16, 0x00ffffff, "200"); else ggprint16(&r , 16, 0x00ffffff, "100"); } dd = dd->next; } glColor3ub(0, 0, 255); while(fd) { w = fd->s.width; h = fd->s.height; x = fd->s.center.x; y = fd->s.center.y; glBegin(GL_QUADS); glVertex2f(x-w, y+h); glVertex2f(x-w, y-h); glVertex2f(x+w, y-h); glVertex2f(x+w, y+h); glEnd(); fd = fd->next; } if(game->animateDog) { makeDog(game, 100, game->floor + 51); game->animateDog = false; } glColor3ub(0, 0, 0); while(doge) { w = doge->s.width; h = doge->s.height; x = doge->s.center.x; y = doge->s.center.y; glBegin(GL_QUADS); glVertex2f(x-w, y+h); glVertex2f(x-w, y-h); glVertex2f(x+w, y-h); glVertex2f(x+w, y+h); glEnd(); doge = doge->next; } glColor3ub(100, 100, 255); while(hdoge) { w = hdoge->s.width; h = hdoge->s.height; x = hdoge->s.center.x; y = hdoge->s.center.y; glBegin(GL_QUADS); glVertex2f(x-w, y+h); glVertex2f(x-w, y-h); glVertex2f(x+w, y-h); glVertex2f(x+w, y+h); glEnd(); hdoge = hdoge->next; } glColor3ub(255, 100, 100); while(ldoge) { w = ldoge->s.width; h = ldoge->s.height; x = ldoge->s.center.x; y = ldoge->s.center.y; glBegin(GL_QUADS); glVertex2f(x-w, y+h); glVertex2f(x-w, y-h); glVertex2f(x+w, y-h); glVertex2f(x+w, y+h); glEnd(); ldoge = ldoge->next; } }
void render(void) { Rect r; //Clear the screen glClearColor(1.0, 1.0, 1.0, 1.0); glClear(GL_COLOR_BUFFER_BIT); // // //draw a quad with texture glColor3f(1.0, 1.0, 1.0); //Loop the background double *yOFFsetLevel = &setLevel; double *yOFFsetMountain = &setMountain; if(*yOFFsetLevel <= -(levelImage->width)) *yOFFsetLevel = 0.0; if(*yOFFsetMountain <= -(mountainsImage->width)) *yOFFsetMountain = 0.0; ///////////////////////////////////////////// if (background) { draw_background(); } if (start) { StartMenu(); } perspective(); if(show_ufo) { draw_ufo(); draw_yellow(); } if(white) { draw_white(); } if (lives <= 0) { GameOver(); gameover = 1; if(soundcount == 0) fmod_playsound(1); soundcount++; } glDisable(GL_TEXTURE_2D); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); glDisable(GL_BLEND); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, 0); r.bot = yres - 20; r.left = 10; r.center = 0; unsigned int cref = 0x00ffffff; if(start) { r.bot = yres - 175; r.left = (xres/2) - 80; r.center = 0; unsigned int cref = 0x00000000; //Help menu only show in start ggprint10(&r, 16, cref, "Move Up: UP Arrow Key"); ggprint10(&r, 16, cref, "Move Down: Down Arrow Key"); ggprint10(&r, 16, cref, "Move Left: Left Arrow Key"); ggprint10(&r, 16, cref, "Move Right: Right Arrow Key"); ggprint10(&r, 16, cref, "Punch: Space Key"); } if(show_animal && show_rhino) { //In game menu, only show in game ggprint16(&r, 16, cref, "Lives: %i", lives); ggprint16(&r, 16, cref, "High Score: %i", high_score); if(ufocount) { ggprint16(&r, 16, cref, "UFO Help (Press Enter): %i", ufocount); } } }
void render(Game *game) { float w, h; Rect r; glClear(GL_COLOR_BUFFER_BIT); //Draw shapes... static int firsttime=1; static int verts[60][2]; static int n = 60; if (firsttime) { float angle = 0.0; float inc = (3.14159 * 2.0) / (float)n; for (int i=0; i<n; i++) { verts[i][0] = cos(angle) * game->circle.radius + game->circle.center.x; verts[i][1] = sin(angle) * game->circle.radius + game->circle.center.y; angle += inc; } firsttime=0; } glColor3ub(255,255,255); glPushMatrix(); glBegin(GL_TRIANGLE_FAN); for (int i=0; i<n; i++) glVertex2i(verts[i][0], verts[i][1]); glEnd(); glPopMatrix(); //draw box Shape *s; glColor3ub(0,0,255); for (int j=0; j<5; j++) { s = &game->box[j]; glPushMatrix(); glTranslatef(s->center.x, s->center.y, s->center.z); w = s->width; h = s->height; glBegin(GL_QUADS); glVertex2i(-w,-h); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w,-h); glEnd(); glPopMatrix(); } //draw all particles here for (int i=0; i<game->n; i++) { glPushMatrix(); glColor3ub(255,0,0); Vec *c = &game->particle[i].s.center; w = 2; h = 2; glBegin(GL_QUADS); glVertex2i(c->x-w, c->y-h); glVertex2i(c->x-w, c->y+h); glVertex2i(c->x+w, c->y+h); glVertex2i(c->x+w, c->y-h); glEnd(); glPopMatrix(); } if(game->bubble){ makeParticle(game, 50, 550); } glBindTexture(GL_TEXTURE_2D, 0); // // r.bot = WINDOW_HEIGHT - 110; r.left = 100; r.center = 0; unsigned int cref = 0x0000FF11; ggprint16(&r, 16, cref, "Requirements"); r.bot = WINDOW_HEIGHT - 185; r.left = 200; r.center = 0; ggprint16(&r, 16, cref, "Requirements"); r.bot = WINDOW_HEIGHT - 260; r.left = 300; r.center = 0; ggprint16(&r, 16, cref, "Requirements"); r.bot = WINDOW_HEIGHT - 335; r.left = 400; r.center = 0; ggprint16(&r, 16, cref, "Requirements"); r.bot = WINDOW_HEIGHT - 410; r.left = 500; r.center = 0; ggprint16(&r, 16, cref, "Requirements"); }
void render(Game *game) { //upper-left and lower-right corners of a rectangle Rect rct; float w, h; glClear(GL_COLOR_BUFFER_BIT); //Draw shapes... //draw box Shape *s; glColor3ub(90,140,90); for (int i = 0; i < 5; i++) { s = &game->box[i]; glPushMatrix(); glTranslatef(s->center.x, s->center.y, s->center.z); w = s->width; h = s->height; glBegin(GL_QUADS); glVertex2i(-w,-h); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w,-h); glEnd(); glPopMatrix(); } const int n = 60; static Vec verts[n]; static int firsttime = 1; float angle = 0.0; if (firsttime) { float incr = (PI * 2.0) / (float) n; for (int i = 0; i < n; i++) { verts[i].y = sin(angle) * game->circle.radius; verts[i].x = cos(angle) * game->circle.radius; angle += incr; } firsttime = 0; } //glColor3ub(90, 140, 90); //glPushMatric(); glBegin(GL_TRIANGLE_FAN); for (int i = 0; i < n; i++) { glVertex2i(game->circle.center.x + verts[i].x, game->circle.center.y + verts[i].y); } glEnd(); //glPopMatrix(); //draw all particles here //for (int i = 0; i < game->n; i++) { glPushMatrix(); //glColor3ub(rnd() * 150, rnd() * 160, rnd() * 220); for (int i = 0; i < game-> n; i++) { glColor3ub(rnd() * 150, rnd() * 160, rnd() * 220); Vec *c = &game->particle[i].s.center; w = 2; h = 2; glBegin(GL_QUADS); glVertex2i(c->x-w, c->y-h); glVertex2i(c->x-w, c->y+h); glVertex2i(c->x+w, c->y+h); glVertex2i(c->x+w, c->y-h); glEnd(); glPopMatrix(); } //glPopMatrix(); //} //texts/fonts glEnable(GL_TEXTURE_2D); initialize_fonts(); rct.bot = 585; rct.left = 90; ggprint8b (&rct, 16, 0x99CCFF, "Waterfall Model."); rct.bot = 570; rct.left = 100; ggprint8b (&rct, 16, 0x00ffff0, "Press b for bubbler."); rct.bot = 490; rct.left = 100; rct.center = 1; ggprint16 (&rct, 16, 0xFF0099, "Requirements."); rct.bot = 428; rct.left = 150; ggprint16 (&rct, 16, 0xFF0099, "Design."); rct.bot -= 45; rct.left += 70; ggprint16 (&rct, 16, 0xFF0099, "Coding."); rct.bot -= 45; rct.left += 70; ggprint16 (&rct, 16, 0xFF0099, "Testing."); rct.bot -= 40; rct.left += 90; ggprint16 (&rct, 16, 0xFF0099, "Maintenance."); //if(bubble) { //if (game->n < MAX_PARTICLES) { //for (int i = 0; i < 10; i++) { //makeParticle(game, 120, 550); //} //} //} }
void render(Game *game) { float w, h; glClear(GL_COLOR_BUFFER_BIT); //Draw shapes... //set circle const int n=10; static int firsttime=1; static Vec vert[40]; if (firsttime) { float ang = 0.0, inc = (3.14159 *2.0) / (float)n; for (int i=0; i<n; i++) { vert[i].x = cos(ang)*game->circle.radius; vert[i].y = sin(ang)*game->circle.radius; ang += inc; } firsttime=0; } glColor3ub(255,255,255); glBegin(GL_LINE_LOOP); for (int i=0;i<n;i++){ glVertex2i(game->circle.center.x + vert[i].x, game->circle.center.y + vert[i].y); } glEnd(); glColor3f(0.60,0.40,0.12); glBegin(GL_TRIANGLE_FAN); glVertex2f(game->circle.center.x,game->circle.center.y); for (int i=0; i<=360;i++) { glVertex2f( game->circle.center.x+(game->circle.radius *cos(i * (3.14159*2.0)/360 )), game->circle.center.y+(game->circle.radius *sin(i * (3.14159*2.0)/ 360))); } glEnd(); //draw box Shape *s; glColor3ub(90,140,90); for (int i=0; i<5; i++) { s = &game->box[i]; glPushMatrix(); glTranslatef(s->center.x, s->center.y, s->center.z); w = s->width; h = s->height; glBegin(GL_QUADS); glVertex2i(-w,-h); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w,-h); glEnd(); glPopMatrix(); } //draw all particles here glPushMatrix(); glColor3f(0.0,0.0,1.0);//(rnd()*255,rnd()*255,rnd()*255); for (int i=0; i<game->n; i++) { Vec *c = &game->particle[i].s.center; w = 2; h = 2; glBegin(GL_QUADS); glVertex2i(c->x-w, c->y-h); glVertex2i(c->x-w, c->y+h); glVertex2i(c->x+w, c->y+h); glVertex2i(c->x+w, c->y-h); glEnd(); } glPopMatrix(); glDisable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, 0); Rect requirements; Rect design; Rect coding; Rect testing; Rect maintenance; requirements.left = game->box[0].center.x-(game->box[0].width/2); design.left = game->box[1].center.x-(game->box[1].width/2); coding.left = game->box[2].center.x-(game->box[2].width/2); testing.left = game->box[3].center.x-(game->box[3].width/2); maintenance.left = game->box[4].center.x-(game->box[4].width/2); requirements.bot = game->box[0].center.y-game->box[0].height; design.bot = game->box[1].center.y-game->box[1].height; coding.bot = game->box[2].center.y-game->box[2].height; testing.bot = game->box[3].center.y-game->box[3].height; maintenance.bot = game->box[4].center.y-game->box[4].height; unsigned int cref = 0x00117200; ggprint16(&requirements,100, cref, "Requirments"); ggprint16(&design, 200, cref, "Design"); ggprint16(&coding, 200, cref, "Coding"); ggprint16(&testing, 200, cref, "Testing"); ggprint16(&maintenance, 100, cref, "Maintenance"); }
void render(Game *game) { float w, h; glClear(GL_COLOR_BUFFER_BIT); //Draw shapes... static int firsttime = 1; static int verts[60][2]; static int n = 60; glColor3ub(50, 150,50); if(firsttime){ float angle = 0; float inc = (3.14459 * 2.0) / (float)n; for(int i = 0; i < n; i++){ verts[i][0] = cos(angle) * game->circle.radius + game->circle.center.x; verts[i][1] = sin(angle) * game->circle.radius + game->circle.center.y; angle += inc; } firsttime = 0; } glPushMatrix(); glBegin(GL_TRIANGLE_FAN); for(int i = 0; i < n; i++){ glVertex2i(verts[i][0], verts[i][1]); } glEnd(); glPopMatrix(); Rect rect; rect.bot=WINDOW_HEIGHT-30; rect.left=0; rect.center=0; ggprint16(&rect, 50, 0x00ffffff,"Waterfall Model"); //Draw the boxes here for(int j = 0; j < NUM_BOXES; j++){ Shape *s; glColor3ub(44,70,80); s = &game->box[j]; glPushMatrix(); glTranslatef(s->center.x, s->center.y, s->center.z); w = s->width; h = s->height; glBegin(GL_QUADS); glVertex2i(-w,-h); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w,-h); glEnd(); glPopMatrix(); } //draw all particles here for(int i=0; i < game->n; i++){ int red = rand() % 20; int green = rand() % 100; int blue = rand() % 255; glPushMatrix(); glColor3ub(red,green, blue); Vec *c = &game->particle[i].s.center; w = 2; h = 2; glBegin(GL_QUADS); glVertex2i(c->x-w, c->y-h); glVertex2i(c->x-w, c->y+h); glVertex2i(c->x+w, c->y+h); glVertex2i(c->x+w, c->y-h); glEnd(); glPopMatrix(); } int bot = 240; int left = 55; int center = 0; Rect rect2; rect2.bot=bot; rect2.left=left; rect2.center=center; ggprint12(&rect2, 37, 0x00ffffff,"Requirements"); Rect rect3; rect3.bot=bot-30; rect3.left=left+75; rect3.center=center; ggprint12(&rect3, 37, 0x00ffffff,"Design"); Rect rect4; rect4.bot=bot - 60; rect4.left= left + 130; rect4.center=0; ggprint12(&rect4, 37, 0x10ffffff,"Coding"); Rect rect5; rect5.bot= bot -90; rect5.left= left + 180; rect5.center=0; ggprint12(&rect5, 37, 0x00ffffff,"Testing"); Rect rect6; rect6.bot= bot - 120; rect6.left= left + 210; rect6.center=0; ggprint12(&rect6, 37, 0x00ffffff,"Maintenance"); }
extern void render(Game *g) { //GLuint silhouetteTexture; //GLuint silhouette_player_Texture; //std::cout<<"multi: " << g->player1.multi << "\n"; //float wid; if (g->nzombies == 0) { init(g); std::cout<<"here\n"; } Rect r; glClear(GL_COLOR_BUFFER_BIT); sscreen_background(g->zhead->zTexture, 1.0, 1.0, 1.0, 1.0); //draw loot Loot *l = new Loot; l = g->lhead; while (l != NULL) { struct timespec bt; clock_gettime(CLOCK_REALTIME, &bt); double ts = timeDiff(&l->lootTimer, &bt); if (ts > 3) { //MAKE IT BLINK!!!!!!!! if (ts < 3.15) lootDraw(l->lootTex, l ,1.0, 1.0, 1.0, 1.0); else if(ts > 3.30 && ts < 3.45) lootDraw(l->lootTex, l ,1.0, 1.0, 1.0, 1.0); else if(ts > 3.60 && ts < 3.75) lootDraw(l->lootTex, l ,1.0, 1.0, 1.0, 1.0); else if(ts > 3.90 && ts < 4.05) lootDraw(l->lootTex, l ,1.0, 1.0, 1.0, 1.0); else if(ts > 4.20 && ts < 4.35) lootDraw(l->lootTex, l ,1.0, 1.0, 1.0, 1.0); else if(ts > 4.50 && ts < 4.65) lootDraw(l->lootTex, l ,1.0, 1.0, 1.0, 1.0); else if(ts > 4.80 && ts < 5.00) lootDraw(l->lootTex, l ,1.0, 1.0, 1.0, 1.0); } else if (ts > 5 || l->type == 0) { //time to delete loot deleteLoot(g,l); } else { lootDraw(l->lootTex, l ,1.0, 1.0, 1.0, 1.0); } l = l->next; } // r.bot = yres - 64; r.left = 10; r.center = 0; ggprint16(&r, 32, 0x0011ff11, "PLAYER 1 SCORE: %i", g->player1.score); ggprint16(&r, 16, 0x00ff1111, "MULTI : %.3g", g->player1.multi); ggprint8b(&r, 16, 0x00ff1111, "Zone %i, Wave %i", g->zcnt, g->wcnt); ggprint8b(&r, 16, 0x00ff1111, "n bullets: %i", g->nbullets); ggprint8b(&r, 16, 0x00ff1111, "Zombies left: %i", g->nzombies); //------------------------------------------------------------------------- //Draw the player1 glColor3fv(g->player1.color); glPushMatrix(); glTranslatef(g->player1.pos[0], g->player1.pos[1], g->player1.pos[2]); //float angle = atan2(player1.dir[1], player1.dir[0]); //std::cout<<"angle = " << g->player1.angle << std::endl; if ( g->player1.bulletType == 2) { glBindTexture(GL_TEXTURE_2D, silhouette_player_Texture_2); } else if ( g->player1.bulletType == 3) { glBindTexture(GL_TEXTURE_2D, silhouette_player_Texture_3); } else { glBindTexture(GL_TEXTURE_2D, silhouette_player_Texture); } glRotatef(g->player1.angle, 0.0f, 0.0f, 1.0f); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.0f); glColor4ub(255,255,255,255); glBegin(GL_QUADS); //float w = g->player1.width; float w = 28.0f; glTexCoord2f(0.0f, 0.0f); glVertex2f(-w, w); glTexCoord2f(1.0f, 0.0f); glVertex2f( w, w); glTexCoord2f(1.0f, 1.0f); glVertex2f( w, -w); glTexCoord2f(0.0f, 1.0f); glVertex2f(-w, -w); glEnd(); glPopMatrix(); glBindTexture(GL_TEXTURE_2D, 0); glDisable(GL_ALPHA_TEST); //glRotatef(g->player1.angle, 0.0f, 0.0f, 1.0f); //glVertex2f(-10.0f, -10.0f); //glVertex2f( 0.0f, 20.0f); //glVertex2f( 10.0f, -10.0f); glColor3f(1.0f, 0.0f, 0.0f); glBegin(GL_POINTS); glVertex2f(0.0f, 0.0f); glEnd(); glPopMatrix(); if (g->player1.invuln) { float col[3] = {0.0, 0.0, 0.0}; glColor3fv(col); glPushMatrix(); glTranslatef(g->player1.pos[0], g->player1.pos[1], g->player1.pos[2]); glRotatef(g->player1.angle, 0.0f, 0.0f, 1.0f); glBegin(GL_TRIANGLES); glVertex2f(-12.0f, -10.0f); glVertex2f( 0.0f, 20.0f); glVertex2f( 0.0f, -6.0f); glVertex2f( 0.0f, -6.0f); glVertex2f( 0.0f, 20.0f); glVertex2f( 12.0f, -10.0f); glEnd(); glColor3f(1.0f, 0.0f, 0.0f); glBegin(GL_POINTS); glVertex2f(0.0f, 0.0f); glEnd(); glPopMatrix(); //std::cout<< "blinking!" << "\n"; } /*if (keys[XK_Up]) { int i; //draw thrust Flt rad = ((g->player1.angle+90.0) / 360.0f) * PI * 2.0; //convert angle to a vector Flt xdir = cos(rad); Flt ydir = sin(rad); Flt xs,ys,xe,ye,r; glBegin(GL_LINES); for (i=0; i<16; i++) { xs = -xdir * 11.0f + rnd() * 4.0 - 2.0; ys = -ydir * 11.0f + rnd() * 4.0 - 2.0; r = rnd()*40.0+40.0; xe = -xdir * r + rnd() * 18.0 - 9.0; ye = -ydir * r + rnd() * 18.0 - 9.0; glColor3f(rnd()*.3+.7, rnd()*.3+.7, 0); glVertex2f(g->player1.pos[0]+xs,g->player1.pos[1]+ys); glVertex2f(g->player1.pos[0]+xe,g->player1.pos[1]+ye); } glEnd(); }*/ //------------------------------------------------------------------------- //Draw the zombies { Zombie *a = g->ahead; int count = 1; while (a) { //Log("draw asteroid...\n"); //glColor3fv(a->color); glColor3fv(g->player1.color); glPushMatrix(); glTranslatef(a->pos[0], a->pos[1], a->pos[2]); glBindTexture(GL_TEXTURE_2D, silhouetteTexture); glRotatef(a->angle, 0.0f, 0.0f, 1.0f); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.0f); glBegin(GL_QUADS); // float w is zombie size float w = 27.0f; glTexCoord2f(0.0f, 0.0f); glVertex2f(-w, w); glTexCoord2f(1.0f, 0.0f); glVertex2f( w, w); glTexCoord2f(1.0f, 1.0f); glVertex2f( w, -w); glTexCoord2f(0.0f, 1.0f); glVertex2f(-w, -w); glEnd(); glPopMatrix(); glBindTexture(GL_TEXTURE_2D, 0); glDisable(GL_ALPHA_TEST); //glRotatef(a->angle, 0.0f, 0.0f, 1.0f); //Log("%i verts\n",a->nverts); //for (int j=0; j<a->nverts; j++) { // glVertex2f(a->vert[j][0], a->vert[j][1]); //} //glBegin(GL_LINES); // glVertex2f(0, 0); // glVertex2f(a->radius, 0); //glEnd(); glColor3f(1.0f, 0.0f, 0.0f); // glBegin(GL_POINTS); // glVertex2f(a->pos[0], a->pos[1]); glBegin(GL_POINTS); glVertex2f(a->pos[0], a->pos[1]); glEnd(); //std::cout<<"asteroid angle: " << a->angle << "\n"; count++; a = a->next; } } //std::cout<<"player angle: " << g->player1.angle << "\n"; //------------------------------------------------------------------------- //Draw the bullets //std::cout<<"player posxy: " << g->player1.pos[0] << ", " << g->player1.pos[1] << ", " << g->player1.pos[2] << "\n"; bulletDraw(g->bhead, g); bulletDraw(g->chead, g); bulletDraw(g->dhead, g); //Draw Loot //sscreen_background(g->zhead->zTexture, 1.0, 1.0, 1.0, 1.0); }
void render(Game *game) { float w, h; glClear(GL_COLOR_BUFFER_BIT); //Draw shapes... // //circle static int firsttime=1; static int verts[60][2]; static int n = 60; if (firsttime) { float angle = 0.0; float inc = (3.14159 * 2.0) / (float)n; for (int i=0; i<n; i++) { verts[i][0] = cos(angle) * game->circle.radius + game->circle.center.x; verts[i][1] = sin(angle) * game->circle.radius + game->circle.center.y; angle += inc; } firsttime=0; } glColor3ub(90,140,90); glPushMatrix(); glBegin(GL_TRIANGLE_FAN); for (int i=0; i<n; i++) glVertex2i(verts[i][0], verts[i][1]); glEnd(); glPopMatrix(); //press b to turn on bubbler if(bubbler){ for(int i=0; i<10; i++) makeParticle(game, game->lastMousex, game->lastMousey); } //draw box Shape *s; glColor3ub(90,140,90); for (int j=0; j<5; j++){ s = &game->box[j]; glPushMatrix(); glTranslatef(s->center.x, s->center.y, s->center.z); w = s->width; h = s->height; glBegin(GL_QUADS); glVertex2i(-w,-h); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w,-h); glEnd(); glPopMatrix(); } //draw all particles here for(int i=0; i<game->n; i++){ glPushMatrix(); glColor3ub(rnd()*150,rnd()*160,220); Vec *c = &game->particle[i].s.center; w = 2; h = 2; glBegin(GL_QUADS); glVertex2i(c->x-w, c->y-h); glVertex2i(c->x-w, c->y+h); glVertex2i(c->x+w, c->y+h); glVertex2i(c->x+w, c->y-h); glEnd(); glPopMatrix(); } Rect r[4]; Rect re; Rect rec; glBindTexture(GL_TEXTURE_2D, 0); r[0].bot = 495 - 5 * 60; r[0].left = 270 + 5 * 65; r[0].center = -100; r[1].bot = 495 - 5 * 60 + 45; r[1].left = 270 + 5 * 65 - 75; r[1].center = -100; r[2].bot = 495 - 5 * 60 + 90; r[2].left = 270 + 5 * 65 - 150; r[2].center = -100; r[3].bot = 495 - 5 * 60 + 135; r[3].left = 270 + 5 * 65 - 225; r[3].center = -100; re.bot = 495 - 5 * 60 + 180; re.left = 270 + 5 * 65 - 300; re.center = -100; rec.bot = 495 - 5 * 60 + 225; rec.left = 270 + 5 * 65 - 375; rec.center = -100; unsigned int cref = 0x00ffff; ggprint8b(&r[0], 16, cref, "Maintenance"); ggprint8b(&r[1], 16, cref, "Testing"); ggprint8b(&r[2], 16, cref, "Coding"); ggprint8b(&r[3], 16, cref, "Design"); ggprint8b(&re, 16, cref, "Requirements"); ggprint16(&rec, 16, 0x00ffffff, "Waterfall Model"); }
void render(Game *game) { if(!start_flag) { float w, h; glClear(GL_COLOR_BUFFER_BIT); //Pop default matrix onto current matrix glMatrixMode(GL_MODELVIEW); //Save default matrix again glPushMatrix(); //push ragdoll matrix glTranslatef(0.f, gCameraY, 0.f); //Vec *c = &game->character.s.center; w = 49; h = 79; glColor3f(1.0, 1.0, 1.0); if (sky) { glBindTexture(GL_TEXTURE_2D, skyTexture); glBegin(GL_QUADS); int ybottom = game->altitude - yres; glTexCoord2f(0.0f, 1.0f); glVertex2i(0, ybottom); glTexCoord2f(0.0f, 0.0f); glVertex2i(0, game->altitude); glTexCoord2f(1.0f, 0.0f); glVertex2i(xres, game->altitude); glTexCoord2f(1.0f, 1.0f); glVertex2i(xres, ybottom); glEnd(); } //glBindTexture(GL_TEXTURE_2D, characterTexture); glBindTexture(GL_TEXTURE_2D, silhouetteTexture); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.0f); glColor4ub(255,255,255,255); glBegin(GL_QUADS); /* if (game->character.velocity.x < 0) { glTexCoord2f(0.0f, 1.0f); glVertex2i(c->x-w, c->y-h); glTexCoord2f(0.0f, 0.0f); glVertex2i(c->x-w, c->y+h); glTexCoord2f(0.5f, 0.0f); glVertex2i(c->x+w, c->y+h); glTexCoord2f(0.5f, 1.0f); glVertex2i(c->x+w, c->y-h); } if (game->character.velocity.x >= 0) { glTexCoord2f(0.5f, 1.0f); glVertex2i(c->x-w, c->y-h); glTexCoord2f(0.5f, 0.0f); glVertex2i(c->x-w, c->y+h); glTexCoord2f(1.0f, 0.0f); glVertex2i(c->x+w, c->y+h); glTexCoord2f(1.0f, 1.0f); glVertex2i(c->x+w, c->y-h); } glEnd(); */ int i = STARTING_ALTITUDE; while (i > 0) { if ((game->altitude < (i + 400)) && (game->altitude > (i - 400))) { Rect r; char cstr[10]; r.left = xres - 50; r.bot = i - yres/2; r.center = xres - 50; r.width = 500; r.height = 100; sprintf (cstr, "%d", i); strcat (cstr, "ft"); ggprint16(&r, 16, 0xdd4814, "%s", cstr); } i = i - 100; } //glPopMatrix(); //draw body glPushMatrix(); Shape *s1 = &game->body; glColor3ubv(s1->color); glTranslatef(s1->center[0], s1->center[1], 0.0f); //glRotatef(-s1->rot, 0.0f, 0.1f, 0.0f); w = s1->width; h = s1->height/2.0; glBegin(GL_QUADS); glVertex2i(-w, -h); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w, -h); glEnd(); //head w = s1->width - 10; h = 20; glBegin(GL_QUADS); glVertex2f(-(float)w, h+5); glVertex2f(-(float)w, h+30); glVertex2f( (float)w, h+30); glVertex2f( (float)w, h+5); glEnd(); // //draw right arm --------------------------------------------------------- glPushMatrix(); Shape *s2 = &game->rarm1; glColor3ubv(s2->color); glTranslatef(s2->center[0], s2->center[1], 0.0f); glRotatef(-s2->rot, 0.0f, 0.0f, 1.0f); w = s2->width; h = s2->height; glBegin(GL_QUADS); glVertex2i(-w, 0); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w, 0); glEnd(); // //draw lower arm --------------------------------------------------------- Shape *s3 = &game->rarm2; glColor3ubv(s3->color); glTranslatef(s3->center[0], s3->center[1], 0.0f); glRotatef(-s3->rot, 0.0f, 0.0f, 1.0f); w = s3->width; h = s3->height; glBegin(GL_QUADS); glVertex2i(-w, 0); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w, 0); glEnd(); glPopMatrix(); // //draw left arm glPushMatrix(); Shape *s4 = &game->larm1; glColor3ubv(s4->color); glTranslatef(s4->center[0]+20, s4->center[1]+20, 0.0f); glRotatef(-s4->rot, 0.0f, 0.0f, 1.0f); w = s4->width; h = s4->height; glBegin(GL_QUADS); glVertex2i(-w, 0); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w, 0); glEnd(); //draw lower left arm Shape *s5 = &game->larm2; glColor3ubv(s5->color); glTranslatef(s5->center[0], s5->center[1], 0.0f); glRotatef(-s5->rot, 0.0f, 0.0f, 1.0f); w = s5->width; h = s5->height; glBegin(GL_QUADS); glVertex2i(-w, 0); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w, 0); glEnd(); glPopMatrix(); //draw right quad glPushMatrix(); Shape *s6 = &game->rleg1; glColor3ubv(s6->color); glTranslatef(s6->center[0], s6->center[1]-43, 0.0f); glRotatef(-s6->rot-105, 0.0f, 0.0f, 1.0f); w = s6->width; h = s6->height+5; glBegin(GL_QUADS); glVertex2i(-w, 0); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w, 0); glEnd(); //draw right shin Shape *s7 = &game->rleg2; glColor3ubv(s7->color); glTranslatef(s7->center[0], s7->center[1]+8, 0.0f); glRotatef(-s7->rot-75, 0.0f, 0.0f, 1.0f); glRotatef(0.0, 1.0f, 0.0f, 0.0f); w = s7->width; h = s7->height+5; glBegin(GL_QUADS); glVertex2i(-w, 0); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w, 0); glEnd(); glPopMatrix(); //draw left quad glPushMatrix(); Shape *s8 = &game->lleg1; glColor3ubv(s8->color); glTranslatef(s8->center[0]+20, s8->center[1]-23, 0.0f); glRotatef(-s8->rot+150, 0.0f, 0.0f, 1.0f); w = s8->width; h = s8->height+5; glBegin(GL_QUADS); glVertex2i(-w, 0); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w, 0); glEnd(); //draw left shin Shape *s9 = &game->lleg2; glColor3ubv(s9->color); glTranslatef(s9->center[0], s9->center[1]+5, 0.0f); glRotatef(-s9->rot+70, 0.0f, 0.0f, 1.0f); glRotatef(0.0, 1.0f, 0.0f, 0.0f); w = s9->width; h = s9->height+5; glBegin(GL_QUADS); glVertex2i(-w, 0); glVertex2i(-w, h); glVertex2i( w, h); glVertex2i( w, 0); glEnd(); glPopMatrix(); glPopMatrix(); //pop body matrix glPopMatrix(); w = 3; h = 3; Vec v0 = {s2->center[0], s2->center[1], 0.0}; Vec v1; //rotate the shoulder by the body rotation. trans_vector(s1->m, v0, v1); glColor3ub(255,255,255); //offset shoulder by body position v1[0] += s1->center[0]; v1[1] += s1->center[1]; //rotate left arm Vec v5 = {s4->center[0]+20, s4->center[1]+20, 0.0}; Vec v7; trans_vector(s1->m, v5, v7); glColor3ub(255,255,255); //offset shoulder by body position v7[0] += s1->center[0]; v7[1] += s1->center[1]; //rotate right quad Vec v8 = {s6->center[0]-20, s6->center[1]-20, 0.0}; Vec v10; trans_vector(s1->m, v8, v10); glColor3ub(255,255,255); //offset hip by body position v10[0] += s1->center[0]; v10[1] += s1->center[1]; //rotate left quad Vec v11 = {s8->center[0]+20, s8->center[1]-20, 0.0}; Vec v13; trans_vector(s1->m, v11, v13); glColor3ub(255,255,255); //offset hip by body position v13[0] += s1->center[0]; v13[1] += s1->center[1]; } if(start_flag) { glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); //glPopMatrix(); glPushMatrix(); glColor3f(1.0, 1.0, 1.0); if (sky) { glBindTexture(GL_TEXTURE_2D, skyTexture); glBegin(GL_QUADS); int ybottom = game->altitude - yres; glTexCoord2f(0.0f, 1.0f); glVertex2i(0, ybottom); glTexCoord2f(0.0f, 0.0f); glVertex2i(0, game->altitude); glTexCoord2f(1.0f, 0.0f); glVertex2i(xres, game->altitude); glTexCoord2f(1.0f, 1.0f); glVertex2i(xres, ybottom); glEnd(); } glPopMatrix(); Rect start; Rect click; start.centerx = xres/2; start.centery = game->altitude - 200; start.bot = game->altitude - 200; start.width = 500; start.height = 100; start.center = xres/2 + 200; start.left = start.centerx; start.right = start.centerx; start.top = game->altitude - 200; click.centerx = xres/2; click.centery = game->altitude - 400; click.bot = game->altitude - 400; click.width = 500; click.height = 100; click.center = xres/2; click.left = click.centerx; click.right = click.centerx; click.top = game->altitude - 400; ggprint16(&start, 1000, 0x00fff000, "PARASHOOT!"); ggprint16(&click, 1000, 0x00fff000, "Click to start"); } }