- void drawLevel(void) {
- int x, z;
- glPushMatrix();
- /* Durch die Levelkacheln iterieren. */
- for (z = 0 ; z < LEVEL_HEIGHT; ++z) {
- glPushMatrix();
- for (x = 0; x < LEVEL_WIDTH; ++x) {
- /* Je nach Levelkachel das entsprechende zeichnen. */
- switch (getTile(x, z)) {
- /* Wand */
- case w:
- glMaterialfv (GL_FRONT, GL_AMBIENT, wMaterial);
- glMaterialfv (GL_FRONT, GL_DIFFUSE, wMaterial);
- glCallList(cubeListId);
- break;
- /* Leer oder eingesammelte Muenze */
- case e:
- case cl:
- glMaterialfv (GL_FRONT, GL_AMBIENT, fMaterial);
- glMaterialfv (GL_FRONT, GL_DIFFUSE, fMaterial);
- glPushMatrix();
- glScalef(1.0f, 0.1f, 1.0f);
- glCallList(cubeListId);
- glPopMatrix();
- break;
- /* Muenze */
- case c:
- /* Muenze */
- glMaterialfv (GL_FRONT, GL_AMBIENT, cMaterial);
- glMaterialfv (GL_FRONT, GL_DIFFUSE, cMaterial);
- glPushMatrix();
- glTranslatef(0.5f, 0.8f, 0.5f);
- glRotatef(getCoinStep(), 0.0f, 1.0f, 0.0f);
- glScalef(0.2f, 0.2f, 0.2f);
- glCallList(coinListId);
- glPopMatrix();
- /* Boden */
- glMaterialfv (GL_FRONT, GL_AMBIENT, fMaterial);
- glMaterialfv (GL_FRONT, GL_DIFFUSE, fMaterial);
- glPushMatrix();
- glScalef(1.0f, 0.1f, 1.0f);
- glCallList(cubeListId);
- glPopMatrix();
- break;
- }
- glTranslatef(1.0f, 0.0f, 0.0f);
- }
- glPopMatrix();
- glTranslatef(0.0f, 0.0f, 1.0f);
- }
- glPopMatrix();
- }