/*********************** * Johnny Jetpack * by Paul Adam and Jamie Bradley * * panel.c * * this file contains misc used for basic game events and information * displays. *************************/ #include #include #include #include #include #include "johnny.h" #define FUEL_GAUGE_WIDTH 300 #define FUEL_GAUGE_HEIGHT 50 void DrawFuelGauge(void) { glShadeModel(GL_FLAT); glDisable (GL_DEPTH_TEST); disable(); glColor3f (0.0, 1.0, 0.0); glBegin(GL_TRIANGLES); glVertex3f(-WINDOW_SIZE + Fuel, -WINDOW_SIZE + 50,z_min); glVertex3f(-WINDOW_SIZE + Fuel, -WINDOW_SIZE + 50 + FUEL_GAUGE_HEIGHT,z_min); glVertex3f(-WINDOW_SIZE, -WINDOW_SIZE + 50 + FUEL_GAUGE_HEIGHT,z_min); glVertex3f(-WINDOW_SIZE + Fuel, -WINDOW_SIZE + 50,z_min); glVertex3f(-WINDOW_SIZE, -WINDOW_SIZE + 50 + FUEL_GAUGE_HEIGHT,z_min); glVertex3f(-WINDOW_SIZE, -WINDOW_SIZE + 50,z_min); glEnd(); lighting(); } void UpdateFuelGauge(void) { if(Thrust) Fuel--; } void SplashScreen(void) { glShadeModel(GL_FLAT); glDisable (GL_DEPTH_TEST); disable(); glColor3f (1.0, 1.0, 0.0); glPushMatrix(); glScalef(1,1,1); glTranslatef(-1100,0,0); glLineWidth(4.0); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'T'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'h'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'e'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 32); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'A'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'd'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'v'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'e'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'n'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 't'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'u'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'r'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'e'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 's'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 32); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'o'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'f'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 32); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'J'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'o'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'h'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'n'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'n'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'y'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 32); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'J'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'e'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 't'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'p'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'a'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'c'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'k'); glLineWidth(1.0); glPopMatrix(); lighting(); } void Message(void) { glShadeModel(GL_FLAT); glDisable (GL_DEPTH_TEST); disable(); glColor3f (1.0, 1.0, 0.0); glPushMatrix(); glScalef(1,1,1); glTranslatef(-500,0,0); glLineWidth(4.0); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'C'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'o'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'l'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'l'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'e'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'c'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 't'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 32); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'a'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'l'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'l'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 32 ); glutStrokeCharacter(GLUT_STROKE_ROMAN, 't'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'h'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'e'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 32 ); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'c'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'o'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'i'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'n'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 's'); glLineWidth(1.0); glPopMatrix(); lighting(); } void MessageLives(void) { glShadeModel(GL_FLAT); glDisable (GL_DEPTH_TEST); disable(); glColor3f (1.0, 1.0, 1.0); glPushMatrix(); glScalef(1,1,1); glTranslatef(-400,-150,0); glLineWidth(4.0); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'L'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'i'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'v'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'e'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 's'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 32 ); glutStrokeCharacter(GLUT_STROKE_ROMAN, '='); glutStrokeCharacter(GLUT_STROKE_ROMAN, 32); glutStrokeCharacter(GLUT_STROKE_ROMAN, Lives+48); glLineWidth(1.0); glPopMatrix(); lighting(); } void ShowMessage(void) { if(MessageTime < 120) { Message(); MessageLives(); MessageTime++; } } void ShowGameOver(void) { glShadeModel(GL_FLAT); glDisable (GL_DEPTH_TEST); disable(); glColor3f (1.0, 0.0, 0.0); glPushMatrix(); glScalef(3,3,3); glTranslatef(-400,0,0); glLineWidth(4.0); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'G'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'A'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'M'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'E'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 32); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'O'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'V'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'E'); glutStrokeCharacter(GLUT_STROKE_ROMAN, 'R'); glLineWidth(1.0); glPopMatrix(); lighting(); } void ResetLevel(int level) { Dead = 0; Fuel = 100; MessageTime = 0; InitializeJohnny(); InitializePlatforms(); InitializeCoins(); InitializeFuelCans(); InitializeLava(); } void UpdateFuel(void) { if(Thrust) { if(Fuel > 0) { Fuel--; } } }