void OGLShapes::wireCube(GLdouble size) { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); solidCube(size); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); }
void Tile::draw(GLint texturePellets, GLint texturePPellets) { /* Setup position */ glTranslatef(this->x, 0.0, this->z); /* Draw */ glPushMatrix(); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, tile_color); switch (this->type) { case 'W': /* Draw a Wall */ glMaterialfv(GL_FRONT, GL_SHININESS, no_shininess); glMaterialfv(GL_FRONT, GL_SPECULAR, no_specular); glColor4fv(tile_color); solidCube(1.0, this->wallTextureID); break; case 'Y': /* Draw a Tile */ glPushMatrix(); glColor4fv(tile_color); glTranslatef(0.0, -0.4, 0.0); glScalef(1.0, 0.2, 1.0); solidCube(1.0, this->floorTextureID); glPopMatrix(); /* Draw the Number 8 */ /* glPushMatrix(); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, group_number); glColor4fv(group_number); glTranslatef(0.0, -0.2, 0.0); glRotatef(90, 1.0, 0.0, 0.0); number(); glPopMatrix(); glPushMatrix(); glTranslatef(0.0, -0.2, 0.2); glRotatef(90, 1.0, 0.0, 0.0); number(); glPopMatrix(); */ break; case 'Z': /* Draw a Tile */ glPushMatrix(); glColor4fv(tile_color); glTranslatef(0.0, -0.4, 0.0); glScalef(1.0, 0.2, 1.0); solidCube(1.0, this->floorTextureID); glPopMatrix(); /* Draw the Number 8 */ /* glPushMatrix(); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, group_number); glColor4fv(group_number); glTranslatef(0.0, -0.2, 0.0); glRotatef(90, 1.0, 0.0, 0.0); number(); glPopMatrix(); glPushMatrix(); glTranslatef(0.0, -0.2, 0.2); glRotatef(90, 1.0, 0.0, 0.0); number(); glPopMatrix(); */ break; case 'X': /* Draw a Tile */ glPushMatrix(); glColor4fv(tile_color); glTranslatef(0.0, -0.4, 0.0); glScalef(1.0, 0.2, 1.0); solidCube(1.0, this->floorTextureID); glPopMatrix(); break; default: break; } glPopMatrix(); /* Draw Pellet */ if (this->pellet) { if (texturePellets) { glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T); glBindTexture(GL_TEXTURE_2D, this->pelletTextureID); } glTranslatef(0.0, 0.1, 0.0); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, pellet_color); glColor4fv(pellet_color); glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, high_shininess); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular); glutSolidSphere(0.2, 20, 20); glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, no_shininess); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, no_specular); if (texturePellets) { glDisable(GL_TEXTURE_GEN_S); glDisable(GL_TEXTURE_GEN_T); } } /* Draw Power Pellet */ if (this->powerPellet) { if (texturePPellets) { glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T); glBindTexture(GL_TEXTURE_2D, this->pelletTextureID); } glTranslatef(0.0, 0.1, 0.0); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, pellet_color); glColor4fv(pellet_color); glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, high_shininess); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular); glutSolidSphere(0.4, 20, 20); glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, no_shininess); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, no_specular); if (texturePPellets) { glDisable(GL_TEXTURE_GEN_S); glDisable(GL_TEXTURE_GEN_T); } } }
void Alien::display(){ type = game->levelType(); if(active){ base = gluNewQuadric(); glPushMatrix(); glTranslatef(place.x, place.y, place.z); switch(type){ // Alien 1 case 1: glPushMatrix(); glColor3f(ZERO, ZERO, ONE); glTranslatef(ZERO, ZERO, ZERO); glRotatef(roty, ZERO, ONE, ZERO); glRotatef(-90.0f, ONE, ZERO, ZERO); glRotatef(-30.0f, ZERO, ONE, ZERO); glPushMatrix(); glTranslatef(ZERO, ZERO, ZERO); gluQuadricDrawStyle(base, GLU_FILL); gluCylinder(base, ONE, ZERO, 2.0f, 12, 12); gluQuadricOrientation(base, GLU_INSIDE); gluDisk(base, 0, ONE, 12, 12); gluQuadricOrientation(base, GLU_OUTSIDE); glPopMatrix(); glPushMatrix(); gluDisk(base, 0, ONE, 12, 12); glTranslatef(-ONE, ZERO, -ONE); gluQuadricDrawStyle(base, GLU_FILL); gluCylinder(base, 1.5f, ONE, ONE, 12, 12); gluQuadricOrientation(base, GLU_INSIDE); gluDisk(base, 0, 1.5f, 12, 12); gluQuadricOrientation(base, GLU_OUTSIDE); glPopMatrix(); glPopMatrix(); break; // Alien 2 case 2: glPushMatrix(); glRotatef(roty, ZERO, ONE, ZERO); glRotatef(-45.0f, ZERO, ONE, ZERO); glRotatef(15.0f, ZERO, ONE, ZERO); glTranslatef(ZERO, ZERO, ZERO); glPushMatrix(); glColor3f( ZERO, ONE, ZERO); //green solidTetrahedron(6.0f); glPopMatrix(); glPushMatrix(); glTranslatef ( ZERO, ZERO, ZERO ); glColor3f( ONE, ZERO, ZERO); //red gluSphere(base, 2.0f, 12, 12); glPopMatrix(); glPopMatrix(); break; // Alien 3 case 3: glPushMatrix(); glRotatef(roty, ZERO, ONE, ZERO); glPushMatrix(); glTranslatef(ZERO, 1.5f, ZERO); glColor3f(ONE, ZERO, ZERO); gluSphere(base, ONE, 12, 12); glPopMatrix(); glPushMatrix(); glColor3f(ZERO, ONE, ZERO); glTranslatef(0.866f, ZERO, ZERO); gluSphere(base, ONE, 12, 12); glPopMatrix(); glPushMatrix(); glColor3f(ZERO, ZERO, ONE); glTranslatef(-0.866f, ZERO, ZERO); gluSphere(base, ONE, 12, 12); glPopMatrix(); glPopMatrix(); break; // Alien 4 case 0: if((game->toc() % 4000) < 1000) { glPushMatrix(); glTranslatef(ZERO, ZERO, ZERO); glColor3f(ONE, ZERO, ZERO);//red gluSphere(base, 2.0f, 12, 12); glPopMatrix(); } else { glPushMatrix(); glTranslatef(ZERO, ZERO, ZERO); glRotatef(45, ZERO, ONE, ZERO); glRotatef(60, ONE, ZERO, ZERO); glRotatef(roty, ZERO, ONE, ZERO); glColor3f(ONE, ZERO, ZERO); solidCube(4.0f); glPopMatrix(); } break; default: break; } glPopMatrix(); gluDeleteQuadric(base); } }