aboutsummaryrefslogblamecommitdiff
path: root/src/GameDraw.cpp
blob: 6db98b9b381f04e16b092b5f656e70241564176b (plain) (tree)
1
2
3
4
5



                                     
                                               















                                                                         
                 
 

                   
                 
                 
 
                       
                        
                    
                    
                                  
                     
                       
                         
               
                       
                       
                       
                       
                           
                       

                     









                                                                             
                            
 
                   
                         
                                             
                                             
                                              
                                 
                                      
                                          
                                  

                                                                   
                                
                                         
                                                                                                                         
                                        
                                       
                                                 
                               
                                                                                                                       
                                                                                                                                      
                                                                                                                                      
                                                                                                                 


                                                                                                                              
                                                                                                                                     
                                                                                                                                     
                                                                        
                                                                     
                                              
                                          
                                                          
                                                
                                                                               
                                           
                                                        
                                              
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                   
                                                                                  
                                
                              
                                                                                                                                     
                                                                                                                                     
                                                                        
                                                                     
                                              
                                          
                                                           
                                                
                                                                               
                                           
                                                        
                                              
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                   
                                                                                  
                                
                                                                                                                       
                                                                                                                                            
                                                                                                                              
                                                                                                                                            

                               

                                     
                                        

                                                                               
 
                             
                                         
                                         
                                        
                                       
                                                 
                               




                                                   

                            

                                         
                                                                         
                                                                     
                                              
                                          
                                                          
                                                
                                                                                                     
                                                                                             
                                           
                                                        
                                              
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                   
                                                                                  
                                
                              
                                                                                                                                     
                                                                                                                                     
                                                                         
                                                                     
                                              
                                          
                                                           
                                                
                                                                                                     
                                                                                             
                                           
                                                        
                                              
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                   
                                                                                  
                                
                                                                                                                       
                                                                                                                                            
                                                                                                                              
                                                                                                                                            

                               
                       
                                        
                                   


                                                                          
 
                         
                                         
                                                                                                                         
                                        
                                       
                                                 
                               
                                                                                                                       
                                                                                                                                      
                                                                                                                                      
                                                                                                                 

                                                                                                                              
                             
                                                                                                                                     
                                                                                                                                     
                                                                         
                                                                     
                                              
                                          
                                                          


                                                                                                     


                                                                                             
                                                        
                                              
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                   
                                                                                  
                                
                              
                                                                                                                                     
                                                                                                                                     
                                                                         
                                                                     
                                              
                                          
                                                           
                                                
                                                                                                     
                                                                                             
                                           
                                                        
                                              
                                                                                  
                                                                                  
                                                                                  
                                                                                  
                                                                                   
                                                                                  
                                
                                                                                                                       
                                                                                                                                            
                                                                                                                              
                                                                                                                                            

                               
                       
                                        



                                                                         
 

                                                                     
                                                           
                                                        
                                                                  
 
                        
                                      
                                                       
                                                
                                                       
                                                                                                                                 
                                                
                                               
                                       
                                                                                                                               
                                                                                                                                              
                                                                                                                                              
                                                                                                                                         
                                                                                                                                      
                                                                                                                                             
                                                                                                                                     
                                                             
                                                                         
                                           
                                                                    
                                          
                                                                       
                                                               
                                                           
                                                           
                                
                                                                                                                               
                                                                                                                                                    
                                                                                                                                      
                                                                                                                                                    
                                                                                                                                
                                               
                                            
                                       
                 
                           
                                 
                                                                   
                                        


                                          
                                             
                                            


                                               
                                                  
                                             
                                             
                                             

                                               
                                                 
                                             
                                             
                                             

                                               
                                                 
                                              
                                              
                                             

                                               
                                                 
                                             
                                             
                                             

                                               
                                                 
                                             
                                             
                                             

                                               
                                                 
                                             
                                             
                                            
                                      


                                                                      
                                                               
                                                                                                          
                                                                                                       
                                                                                                                 
                                                                               
                                                                               
                                
                                                                                                          
                                                                                                             
                                                                                                              
                                                                               
                                                                               
                         
 
                                            

                                                           
                                                                 
                            
                                                                 
                                   


                                                                                                                    
                                            

                                                   
                                    
                                    
                                                                                                                         

                                                                      
                                                                              
                                                       


                                                           
                                                                                                               
                                                                                                               

                 
















                                                                               

                 




                                                                             


                                                                             
                 

                                                                
 
                               
                                                         
                                                  

                              

                                                   
                                                              
                                                   


                                                             
                                                              
                                                                 
                                         
                                 
                                            
                                       

                               
                             
                               
                                       
                                                 
                                              
                                                                            
                                                                          



                                                                 
                                                
                                       
                              



                                               
 
                             
                                   
                         
                                
                                
                                
                                    
                                                                                        
                                     
                                                                                        
                                     
                                                                                      
                                                       
                                                                                      

                                                       
                          
                             
                              
                                              
                                                      
                                              
                         

                 
                                            
                                              
                                                      
                                       
                                                      
                                                                                                                                                                                                    
                                                                                                                 
                                                                                                                                                
 
                                                                                                                                                                                                                                                                                                                        

                                         
                                                       
                                                                                                
                                                                                       
                                                                              
                                                      
                                        
                                                 
                                                               
                                                               

                                                                                    
                                 
                         

                 
                                    
 
                                   
                                                                           





                                                                           







                                                                         
                            
                              

                              




                                                                                  
 
                                       
                                            
                                   
                                             
                               
                                                      
                                                                                                                                                           
                                                                                                       
                                             
                                        
                                                                                                                                                

                                                                                                       
                                        
                                                              
                                                                      
                                                         
                                                                 
                                                                               
                                                                               
                                                                                                      
                                                                                                                                                           
                                                                                       
                                                         
                                                 
                                         


                                         
                                                 
                                                                                   
                                                                                   
                                                                                                                                   
                                                               
                                 
                                               


                                                       
                                        
                                                                                                                                                                      

                                                                                                     
                                        


                                                                                     
                                                                      
                                                         
                                                                 
                                                                               
                                                                               
                                                                                                      
                                                                                                                                                         
                                                                                       
                                                         
                                                 
                                         
                                 
                                         
                                                 
                                                                                   
                                                                                   
                                                                                                                                 
                                                               
                                 
                                               


                                                        



                                                                                                                
                                                       
                                                                               
                                                                                                                                                 
                                                                                                  



                                                                                              
                                                 
                                                                         
                                                                                                   
                                                                                                  
                                                                                                                   
                                                      
                                        
                                                       
                                                                                                           
                                                                   
                                                                   
                                                                        
                                                                        
                                                                       
                                                               
                                                                                                 
                                                                              
                                                                                                             
                                                                                                                                                           
                                                 
                                                                               
                                                                                                                 
                                                                                                                                                     
                                                 
                                                                                   
                                                                  
                                                                  
                                                                  
                                                                 
                                                                                                    
                                                                      
                                                                                                                        
                                                                                                                        
                                                                                                                        
                                                                                                                        
                                                                                                                         
                                                                                                                        
                                                        
                                                      
                                                       
                                                                 
                                                               

                                                                      
                                 
                         
                                                                                          
                                               

                                                                                                      
                 
                                             

                                    
                                      




                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               




                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                     




                         





                                         

                                          





                                              









































































                                                                                                                                                    
                 




































































                                                                                                                                                    
                 




























































                                                                                                                                                    
                 

                      
                                        



                                                  
                                      

























                                                     
                                                                                  
                                                                                                              
                                                   

                                                                         
                                                   










                                                                                                      
                         


















                                                                                                                           
                                      










                                                                                
                                                                       






                                                                                                            
                 
         
 
// Game drawing
// Copyright (C) 2002  David Rosen
// Copyright (C) 2003  Ryan C. Gordon
// Copyright (C) 2003  Steven Fuller
// Copyright (C) 2021, 2023  Nguyễn Gia Phong
//
// This file is part of Black Shades.
//
// Black Shades is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published
// by the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Black Shades is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Black Shades.  If not, see <https://www.gnu.org/licenses/>.

#include <string>

#include <GL/glu.h>

#include "Game.h"
#include "misc.h"

extern int thirdperson;
extern float multiplier;
extern int nocolors;
extern bool visions;
extern unsigned int gSourceID[37];
extern Camera camera;
extern Sprites sprites;
extern float camerashake;
extern Fog fog;
extern float fogcolorr;
extern float fogcolorg;
extern float fogcolorb;
extern float sinefluct;
extern float sinefluctprog;
extern int environment;
extern Decals decals;

GLvoid ReSizeGLScene(Game* game, float fov, float near)
{
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(fov, game->screenwidth / (GLfloat) game->screenheight,
		near, game->viewdistance);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

void Game::DrawGLScene(void)
{
	//Main menu
	if (this->menu) {
		//Setup fast sine fluctuation
		sinefluct=sin(sinefluctprog);
		sinefluctprog+=multiplier*1.5;
		glLoadIdentity();
		glClearColor(0,0,0,1);
		glDisable(GL_CLIP_PLANE0);
		glDisable(GL_FOG);
		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

		//"Black Shades"
		glDisable(GL_TEXTURE_2D);
		glDisable(GL_DEPTH_TEST);							// Disables Depth Testing
		glDisable(GL_CULL_FACE);
		glDisable(GL_LIGHTING);
		glBlendFunc(GL_SRC_ALPHA,GL_ONE);
		glDepthMask(0);
		glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix
		glPushMatrix();										// Store The Projection Matrix
		glLoadIdentity();									// Reset The Projection Matrix
		glOrtho(0,640,0,480,-100,100);						// Set Up An Ortho Screen
		glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix

		//Draw smoke
		glPushMatrix();										// Store The Modelview Matrix
			glLoadIdentity();								// Reset The Modelview Matrix
			glTranslatef(60+sinefluct*40,335-sinefluct*9,0);
			glScalef(500-sinefluct*80,70+sinefluct*18,1);
			glTranslatef(.5,.5,0);
			glScalef(.5,.5,1);
			glRotatef(sinefluctprog*50,0,0,1);
			glEnable(GL_TEXTURE_2D);
			glBindTexture(GL_TEXTURE_2D,  sprites.smoketextureptr);
			glEnable(GL_BLEND);
			glColor4f(1,1,1,.4+sinefluct/8);
			glBegin(GL_TRIANGLES);
				glTexCoord2f(1.0f, 1.0f); glVertex3f( 1, 1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1,-1, 0.0f);
				glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,-1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1, -1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
			glEnd();
		glPopMatrix();
		glPushMatrix();										// Store The Modelview Matrix
			glLoadIdentity();								// Reset The Modelview Matrix
			glTranslatef(60+sinefluct*40,335-sinefluct*9,0);
			glScalef(530-sinefluct*80,50+sinefluct*18,1);
			glTranslatef(.5,.5,0);
			glScalef(.5,.5,1);
			glRotatef(-sinefluctprog*50,0,0,1);
			glEnable(GL_TEXTURE_2D);
			glBindTexture(GL_TEXTURE_2D,  sprites.smoketextureptr);
			glEnable(GL_BLEND);
			glColor4f(1,1,1,.4-sinefluct/8);
			glBegin(GL_TRIANGLES);
				glTexCoord2f(1.0f, 1.0f); glVertex3f( 1, 1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1,-1, 0.0f);
				glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,-1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1, -1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
			glEnd();
		glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix
		glPopMatrix();										// Restore The Old Projection Matrix
		glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix
		glPopMatrix();										// Restore The Old Projection Matrix
		glDepthMask(1);

		// Text
		static char str[256];
		glEnable(GL_TEXTURE_2D);
		glColor4f(0, 0, 0, 1);
		glPrint(&this->text, 100, 175, "Black Shades", 1, 2, 640, 480);

		// "New Game"
		glDisable(GL_TEXTURE_2D);
		glDisable(GL_DEPTH_TEST);
		glDisable(GL_CULL_FACE);
		glDisable(GL_LIGHTING);
		glBlendFunc(GL_SRC_ALPHA,GL_ONE);
		glDepthMask(0);
		glMatrixMode(GL_PROJECTION);
		glPushMatrix();
		glLoadIdentity();
		glOrtho(0, 640, 0, 480, -100, 100);
		glMatrixMode(GL_MODELVIEW);

		//Draw smoke
		glPushMatrix();
			glLoadIdentity();
			glTranslatef(120-sinefluct*40,235+sinefluct*9,0);
			glScalef(440+sinefluct*80,70-sinefluct*18,1);
			glTranslatef(.5,.5,0);
			glScalef(.5,.5,1);
			glRotatef(sinefluctprog*50,0,0,1);
			glEnable(GL_TEXTURE_2D);
			if(mouseoverbutton!=1)glBindTexture(GL_TEXTURE_2D,  sprites.smoketextureptr);
			if(mouseoverbutton==1)glBindTexture(GL_TEXTURE_2D,  flaretextureptr);
			glEnable(GL_BLEND);
			glColor4f(1,0,0,.5+sinefluct/6);
			glBegin(GL_TRIANGLES);
				glTexCoord2f(1.0f, 1.0f); glVertex3f( 1, 1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1,-1, 0.0f);
				glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,-1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1, -1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
			glEnd();
		glPopMatrix();
		glPushMatrix();										// Store The Modelview Matrix
			glLoadIdentity();								// Reset The Modelview Matrix
			glTranslatef(120-sinefluct*40,235+sinefluct*9,0);
			glScalef(460+sinefluct*80,50-sinefluct*18,1);
			glTranslatef(.5,.5,0);
			glScalef(.5,.5,1);
			glRotatef(-sinefluctprog*50,0,0,1);
			glEnable(GL_TEXTURE_2D);
			if(mouseoverbutton!=1)glBindTexture(GL_TEXTURE_2D,  sprites.smoketextureptr);
			if(mouseoverbutton==1)glBindTexture(GL_TEXTURE_2D,  flaretextureptr);
			glEnable(GL_BLEND);
			glColor4f(1,0,0,.5-sinefluct/6);
			glBegin(GL_TRIANGLES);
				glTexCoord2f(1.0f, 1.0f); glVertex3f( 1, 1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1,-1, 0.0f);
				glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,-1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1, -1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
			glEnd();
		glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix
		glPopMatrix();										// Restore The Old Projection Matrix
		glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix
		glPopMatrix();										// Restore The Old Projection Matrix
		glDepthMask(1);

		// Text
		glEnable(GL_TEXTURE_2D);
		glColor4f(0,0,0,1);
		glPrint(&this->text, 190 - this->gameinprogress * 10, 170,
			this->gameinprogress ? "Resume Game" : "New Game",
			1, 1.5, 640, 480);

		// "Quit"
		glDisable(GL_TEXTURE_2D);
		glDisable(GL_DEPTH_TEST);							// Disables Depth Testing
		glDisable(GL_CULL_FACE);
		glDisable(GL_LIGHTING);
		glBlendFunc(GL_SRC_ALPHA,GL_ONE);
		glDepthMask(0);
		glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix
		glPushMatrix();										// Store The Projection Matrix
		glLoadIdentity();									// Reset The Projection Matrix
		glOrtho(0,640,0,480,-100,100);						// Set Up An Ortho Screen
		glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix

		// Draw smoke
		glPushMatrix();										// Store The Modelview Matrix
			glLoadIdentity();								// Reset The Modelview Matrix
			glTranslatef(120-sinefluct*40,112+sinefluct*9,0);
			glScalef(440+sinefluct*80,70-sinefluct*18,1);
			glTranslatef(.5,.5,0);
			glScalef(.5,.5,1);
			glRotatef(sinefluctprog*50,0,0,1);
			glEnable(GL_TEXTURE_2D);

			if(mouseoverbutton!=2)glBindTexture(GL_TEXTURE_2D,  sprites.smoketextureptr);
			if(mouseoverbutton==2)glBindTexture(GL_TEXTURE_2D,  flaretextureptr);

			glEnable(GL_BLEND);
			glColor4f(1,0,0,.5+sinefluct/6);
			glBegin(GL_TRIANGLES);
				glTexCoord2f(1.0f, 1.0f); glVertex3f( 1, 1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1,-1, 0.0f);
				glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,-1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1, -1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
			glEnd();
		glPopMatrix();
		glPushMatrix();										// Store The Modelview Matrix
			glLoadIdentity();								// Reset The Modelview Matrix
			glTranslatef(120-sinefluct*40,112+sinefluct*9,0);
			glScalef(460+sinefluct*80,50-sinefluct*18,1);
			glTranslatef(.5,.5,0);
			glScalef(.5,.5,1);
			glRotatef(-sinefluctprog*50,0,0,1);
			glEnable(GL_TEXTURE_2D);
			if(mouseoverbutton!=2)glBindTexture(GL_TEXTURE_2D,  sprites.smoketextureptr);
			if(mouseoverbutton==2)glBindTexture(GL_TEXTURE_2D,  flaretextureptr);
			glEnable(GL_BLEND);
			glColor4f(1,0,0,.5-sinefluct/6);
			glBegin(GL_TRIANGLES);
				glTexCoord2f(1.0f, 1.0f); glVertex3f( 1, 1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1,-1, 0.0f);
				glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,-1, 0.0f);
				glTexCoord2f(1.0f, 0.0f); glVertex3f( 1, -1, 0.0f);
				glTexCoord2f(0.0f, 1.0f); glVertex3f(-1, 1, 0.0f);
			glEnd();
		glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix
		glPopMatrix();										// Restore The Old Projection Matrix
		glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix
		glPopMatrix();										// Restore The Old Projection Matrix
		glDepthMask(1);

		// Text
		glEnable(GL_TEXTURE_2D);
		glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
		glPrint(&this->text, 197 - this->gameinprogress * 15, 87,
			this->gameinprogress ? "End Game" : "Quit",
			1, 1.5, 640, 480);

		// High score
		glColor4f(0.5f + sinefluct / 5.0f, 0.0f, 0.0f, 1.0f);
		sprintf(str, "High Score: %d%s", highscore,
			beatgame ? " *COMPLETED*" : "");
		glPrint(&this->text, 0, 0, str, 1, 0.8, 640, 480);

		// Flash
		if (flashamount > 0) {
			if(flashamount>1)flashamount=1;
			flashamount-=multiplier;
			if(flashamount<0)flashamount=0;
			glDisable(GL_DEPTH_TEST);							// Disables Depth Testing
			glDisable(GL_CULL_FACE);
			glDisable(GL_LIGHTING);
			glDepthMask(0);
			glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix
			glPushMatrix();										// Store The Projection Matrix
			glLoadIdentity();									// Reset The Projection Matrix
			glOrtho(0,screenwidth,0,screenheight,-100,100);						// Set Up An Ortho Screen
			glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix
			glPushMatrix();										// Store The Modelview Matrix
			glLoadIdentity();								// Reset The Modelview Matrix
			glScalef(screenwidth,screenheight,1);
			glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
			glEnable(GL_BLEND);
			glColor4f(flashr,flashg,flashb,flashamount);
			glBegin(GL_QUADS);
				glVertex3f(0,		0, 	 0.0f);
				glVertex3f(256,	0, 	 0.0f);
				glVertex3f(256,	256, 0.0f);
				glVertex3f(0, 	256, 0.0f);
			glEnd();
			glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix
			glPopMatrix();										// Restore The Old Projection Matrix
			glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix
			glPopMatrix();										// Restore The Old Projection Matrix
			glEnable(GL_DEPTH_TEST);							// Enables Depth Testing
			glEnable(GL_CULL_FACE);
			glDisable(GL_BLEND);
			glDepthMask(1);
		}
	} else { // in-game
		glLoadIdentity();
		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		glEnable(GL_DEPTH_TEST);
		glDisable(GL_CLIP_PLANE0);

		//Visions
		sinefluct=sin(sinefluctprog);
		sinefluctprog+=multiplier*3;
		if (!visions) {
			switch (environment) {
			case sunny_environment:
				viewdistance=2000;
				fogcolorr=.5;
				fogcolorg=.5;
				fogcolorb=.8;
				break;
			case foggy_environment:
				viewdistance=500;
				fogcolorr=.5;
				fogcolorg=.5;
				fogcolorb=.5;
				break;
			case night_environment:
				viewdistance=500;
				fogcolorr=.15;
				fogcolorg=.15;
				fogcolorb=.3;
				break;
			case snowy_environment:
				viewdistance=800;
				fogcolorr=.5;
				fogcolorg=.5;
				fogcolorb=.5;
				break;
			case rainy_environment:
				viewdistance=700;
				fogcolorr=.3;
				fogcolorg=.3;
				fogcolorb=.3;
				break;
			case firey_environment:
				viewdistance=600;
				fogcolorr=.3;
				fogcolorg=.1;
				fogcolorb=0;
				break;
			}

			glClearColor(fogcolorr,fogcolorg,fogcolorb,1);
			if (environment == sunny_environment) {
				setFog(&fog, fogcolorr, fogcolorg, fogcolorb, 0, viewdistance * 0.8, 0.1);
				GLfloat LightAmbient[]=	{ fogcolorr/4, fogcolorg/4, fogcolorb/4, 1.0f};
				GLfloat LightDiffuse[]=	{ fogcolorr*1.6f, fogcolorg*1.6f, fogcolorr*1.6f, 1.0f };
				glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient);
				glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse);
			} else {
				setFog(&fog, fogcolorr, fogcolorg, fogcolorb, 0, viewdistance * 0.8, 0.2);
				GLfloat LightAmbient[]=	{ fogcolorr*.8f, fogcolorg*.8f, fogcolorb*.8f, 1.0f};
				GLfloat LightDiffuse[]=	{ fogcolorr*.8f, fogcolorg*.8f, fogcolorr*.8f, 1.0f };
				glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient);
				glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse);
			}

			glEnable(GL_LIGHT0);
			// Change fov if zooming with scope
			if (zoom)
				ReSizeGLScene(this, 10.0f, 0.6f);
			else
				ReSizeGLScene(this, 90.0f, 0.1f);
			nocolors=0;
		} else {
			glLightfv(GL_LIGHT0, GL_AMBIENT, (GLfloat[]) { 0.0f, 0.0f, 0.0f, 1.0f });
			glLightfv(GL_LIGHT0, GL_DIFFUSE, (GLfloat[]) { 0.1f + sinefluct / 5.0f, 0.0f, 0.0f, 1.0f });
			glEnable(GL_LIGHT0);

			fogcolorr=(sinefluct/4+.5);
			fogcolorg=0;
			fogcolorb=0;
			setFog(&fog, fogcolorr,fogcolorg,fogcolorb,0,viewdistance*.8*.5*(sinefluct/4+.3),sinefluct/3+.7);
			glClearColor(fogcolorr,fogcolorg,fogcolorb,1);

			ReSizeGLScene(this, 120.0f - sinefluct * 20.0f, 0.3f);
			glRotatef(sinefluct*10,0,0,.1);
			nocolors=1;

			//Pitch higher if moving for effect
			if(person[0].currentanimation==idleanim)alSourcef(gSourceID[visionsound], AL_PITCH, 1);
			if(person[0].currentanimation!=idleanim)alSourcef(gSourceID[visionsound], AL_PITCH, 2);
		}

		// Set rotation/position
		if (thirdperson)
			glTranslatef(camera.targetoffset.x,
				camera.targetoffset.y, camera.targetoffset.z);
		if (thirdperson == 2) {
			glRotatef(oldrot2, 1, 0, 0);
			glRotatef(oldrot, 0, 1, 0);
		} else if (thirdperson == 0 && person[0].skeleton.free) {
			glRotatef(person[0].skeleton.joints[head].rotate3,
				0, 1, 0);
			glRotatef(90 - person[0].skeleton.joints[head].rotate2,
				0, 0, 1);
			glRotatef(person[0].skeleton.joints[head].rotate1 + 90,
				0, 1, 0);
		} else {
			glRotatef(camera.visrotation2, 1, 0, 0);
			glRotatef(camera.visrotation, 0, 1, 0);
		}

		// Shake camera if grenade explosion
		if (camerashake > 0) {
			if (person[0].aiming && person[0].whichgun != grenade
			    && thirdperson == 0)
				camerashake = 0;
			glTranslatef(randInt(-99, 99) / 100.0f * camerashake,
				randInt(-99, 99) / 100.0f * camerashake,
				randInt(-99, 99) / 100.0f * camerashake);
		}
		glTranslatef(-camera.position.x,
			-camera.position.y, -camera.position.z);

		glPushMatrix();
			glClipPlane(GL_CLIP_PLANE0, eqn);
			glDisable(GL_CLIP_PLANE0);
		glPopMatrix();

		alignas(16) GLfloat frustum[6][4];
		alignas(16) GLfloat projection[16];
		glGetFloatv(GL_PROJECTION_MATRIX, projection);
		alignas(16) GLfloat model_view[16];
		glGetFloatv(GL_MODELVIEW_MATRIX, model_view);
		setFrustum(frustum, projection, model_view);

		GLfloat LightPosition[] { -.5, 1, -.8, 0.0f };
		glLightfv(GL_LIGHT0, GL_POSITION, LightPosition);
		glDisable(GL_TEXTURE_2D);
		glEnable(GL_FOG);
		glEnable(GL_COLOR_MATERIAL);
		glEnable(GL_CULL_FACE);
		glDepthMask(1);

		//Draw street
		glPushMatrix();
			glDepthMask(0);
			glDisable(GL_DEPTH_TEST);
			glEnable(GL_LIGHTING);
			glTranslatef(camera.position.x,0,camera.position.z);
			glScalef(viewdistance*5/100,1,viewdistance*5/100);
			if (visions)
				street.draw(0.0f, 0.0f, 0.0f);
			else
				street.draw(0.22f, 0.22f, 0.22f);
			glEnable(GL_DEPTH_TEST);
			glDepthMask(1);
		glPopMatrix();
		if (visions)
			glDisable(GL_LIGHTING);
		else
			glEnable(GL_LIGHTING);

		//Draw blocks
		glEnable(GL_BLEND);
		XYZ move;
		int beginx,endx;
		int beginz,endz;
		int distsquared;
		//Only nearby blocks
		beginx=(camera.position.x-viewdistance+block_spacing/2)/block_spacing-2;
		if(beginx<0)beginx=0;
		beginz=(camera.position.z-viewdistance+block_spacing/2)/block_spacing-2;
		if(beginz<0)beginz=0;
		endx=(camera.position.x+viewdistance+block_spacing/2)/block_spacing+2;
		if(endx>num_blocks-1)endx=num_blocks-1;
		endz=(camera.position.z+viewdistance+block_spacing/2)/block_spacing+2;
		if(endz>num_blocks-1)endz=num_blocks-1;

		bool draw;
		int whichtri;
		XYZ collpoint;
		for(int i=beginx;i<=endx;i++){
			for(int j=beginz;j<=endz;j++){
				drawn[i][j]=1;
			}
		}

		if(beginx<endx&&beginz<endz)
		for(int i=beginx;i<=endx;i++){
			for(int j=beginz;j<=endz;j++){
				draw=1;
				//Only draw if visible
				distsquared=((i)*block_spacing-camera.position.x)*((i)*block_spacing-camera.position.x)+((j)*block_spacing-camera.position.z)*((j)*block_spacing-camera.position.z);
				if(distsquared>(viewdistance*viewdistance+block_spacing*block_spacing	))draw=0;
				if(draw&&citytype[i][j]!=3&&!cubeInFrustum(frustum, (i)*block_spacing,0,(j)*block_spacing,block_spacing))draw=0;

				if(draw&&citytype[i][j]!=3&&!sphereInFrustum(frustum, blocks[citytype[i][j]].boundingspherecenter.x+(i)*block_spacing,blocks[citytype[i][j]].boundingspherecenter.y,blocks[citytype[i][j]].boundingspherecenter.z+(j)*block_spacing,blocks[citytype[i][j]].boundingsphereradius))draw=0;

				if(draw){
					glPushMatrix();
						glTranslatef(i*block_spacing,0,j*block_spacing);
						glRotatef(cityrotation[i][j]*90,0,1,0);
						blocks[citytype[i][j]].draw();
					glPopMatrix();
				} else {
					move.y=0;
					move.x=i*block_spacing;
					move.z=j*block_spacing;
					if (sqrlen(move - camera.position) < 300000)
						drawn[i][j] = 0;
				}
			}
		}

		drawDecals(&decals);

		// Occluding blocks
		beginx=(camera.position.x+block_spacing/2)/block_spacing-2;
		if(beginx<0)beginx=0;

		beginz=(camera.position.z+block_spacing/2)/block_spacing-2;

		if(beginz<0)beginz=0;

		endx=(camera.position.x+block_spacing/2)/block_spacing+2;

		if(endx>num_blocks-1)endx=num_blocks-1;

		endz=(camera.position.z+block_spacing/2)/block_spacing+2;

		if(endz>num_blocks-1)endz=num_blocks-1;

		float M[16];
		XYZ drawpoint;
		float size=20;

		// Draw people
		if (visions)
			setFog(&fog, fogcolorr, fogcolorg, fogcolorb, 0,
				viewdistance * 0.8 * 0.5 * (-sinefluct / 4 + 0.3),
				-sinefluct / 3 + 0.7);

		glColor4f(1 , 1, 1, 1);
		glEnable(GL_COLOR_MATERIAL);
		glEnable(GL_BLEND);
		for(int i=0;i<numpeople;i++){
			draw=1;
			if(person[i].skeleton.free<1){
				if(person[i].whichblockx>=0&&person[i].whichblockx<num_blocks&&person[i].whichblocky>=0&&person[i].whichblocky<num_blocks){
					if(!drawn[person[i].whichblockx][person[i].whichblocky])draw=0;
				}else draw=0;
				if(draw)
				if(!cubeInFrustum(frustum, person[i].playercoords.x,person[i].playercoords.y,person[i].playercoords.z,5))draw=0;
				if (draw && sqrlen(person[i].playercoords - camera.position) > 1000000)
					draw = 0;
				if(draw)
				for(int j=beginx;j<=endx;j++){
					for(int k=beginz;k<=endz;k++){
						if(draw){
							move.y=0;
							move.x=j*block_spacing;
							move.z=k*block_spacing;
							if (sqrlen(move - camera.position) < 100000) {
								whichtri=blockocclude.LineCheck2(camera.position,person[i].playercoords,&collpoint,move,0);
								if(whichtri!=-1)draw=0;
							}
						}
					}
				}

				if(draw){
					move.y=0;
					move.x=person[i].whichblockx*block_spacing;
					move.z=person[i].whichblocky*block_spacing;
					whichtri=blockocclude.LineCheck2(camera.position,person[i].playercoords,&collpoint,move,0);
					if(whichtri!=-1)draw=0;
				}
				if(i==0)draw=1;
			}

			if(person[i].skeleton.free==1){
				if(draw)
				if(!person[i].skeleton.broken&&!cubeInFrustum(frustum, person[i].averageloc.x,person[i].averageloc.y,person[i].averageloc.z,5))draw=0;
				if (draw && sqrlen(person[i].averageloc - camera.position) > 1000000)
					draw = 0;
				if(draw)
				if(person[i].skeleton.joints[0].position.y<-2)draw=0;

				for(int j=beginx;j<=endx;j++){
					for(int k=beginz;k<=endz;k++){
						if(draw){
							move.y=0;
							move.x=j*block_spacing;
							move.z=k*block_spacing;
							if (sqrlen(move - camera.position) < 100000) {
								whichtri=blockocclude.LineCheck2(camera.position,person[i].averageloc,&collpoint,move,0);
								if(whichtri!=-1)draw=0;
							}
						}
					}
				}
				if(draw){
					move.y=0;
					move.x=person[i].whichblockx*block_spacing;
					move.z=person[i].whichblocky*block_spacing;
					whichtri=blockocclude.LineCheck2(camera.position,person[i].averageloc,&collpoint,move,0);
					if(whichtri!=-1)draw=0;
				}
				if(i==0)draw=1;
			}

			if(draw&&person[i].existing==1){
				if ((sqrlen(person[i].playercoords - camera.position) < 100000 + zoom * 3000000
				     && !person[i].skeleton.free)
				    || (sqrlen(person[i].averageloc - camera.position) < 100000 + zoom * 3000000
					&& person[i].skeleton.free)) {
					glPushMatrix();
						if(person[i].skeleton.free==0){
							glTranslatef(person[i].playercoords.x,person[i].playercoords.y,person[i].playercoords.z);
							glRotatef(person[i].playerrotation,0,1,0);
							if (i != 0 || !visions)
								person[i].DoAnimations(i);
							else
								person[i].DoAnimationslite(i);
						}
						if(visions==1)nocolors=1;
						if(visions==1&&person[i].type==eviltype)nocolors=2;
						if(visions==1&&person[i].type==viptype)nocolors=3;
						if(!(visions==1&&i==0)&&!(zoom==1&&i==0))person[i].DrawSkeleton(i);
					glPopMatrix();
				} else {
					glPushMatrix();
						if(person[i].skeleton.free<1)person[i].DoAnimationslite(i);
						glColor4f(1,1,1,1);
						glEnable(GL_BLEND);
						glDisable(GL_CULL_FACE);
						glEnable(GL_TEXTURE_2D);
						glDisable(GL_LIGHTING);
						glDepthMask(0);
						glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
						if(person[i].skeleton.free<1){
							glBindTexture(GL_TEXTURE_2D, personspritetextureptr);
							glTranslatef(person[i].playercoords.x,person[i].playercoords.y+size/2*.3,person[i].playercoords.z);
						}
						if(person[i].skeleton.free==1){
							glBindTexture(GL_TEXTURE_2D, deadpersonspritetextureptr);
							glTranslatef(person[i].averageloc.x,person[i].averageloc.y+size/2*.3,person[i].averageloc.z);
						}
						glGetFloatv(GL_MODELVIEW_MATRIX,M);
						drawpoint.x=M[12];
						drawpoint.y=M[13];
						drawpoint.z=M[14];
						glLoadIdentity();
						glTranslatef(drawpoint.x, drawpoint.y, drawpoint.z);
						glBegin(GL_TRIANGLES);
							glTexCoord2f(1.0f, 1.0f); glVertex3f( .3f*size, .3f*size, 0.0f);
							glTexCoord2f(0.0f, 1.0f); glVertex3f(-.3f*size, .3f*size, 0.0f);
							glTexCoord2f(1.0f, 0.0f); glVertex3f( .3f*size,-.3f*size, 0.0f);
							glTexCoord2f(0.0f, 0.0f); glVertex3f(-.3f*size,-.3f*size, 0.0f);
							glTexCoord2f(1.0f, 0.0f); glVertex3f( .3f*size, -.3f*size, 0.0f);
							glTexCoord2f(0.0f, 1.0f); glVertex3f(-.3f*size, .3f*size, 0.0f);
						glEnd();
					glPopMatrix();
					glDepthMask(1);
					glDisable(GL_TEXTURE_2D);
					glEnable(GL_CULL_FACE);
					if (!visions)
						glEnable(GL_LIGHTING);
				}
			}
			if(person[i].skeleton.free<1&&!draw)person[i].DoAnimationslite(i);
			if(!person[i].existing)
				if (!draw || sqrlen(person[i].playercoords - camera.position) > 10000)
					person[i].existing = 1;
		}
		glDisable(GL_COLOR_MATERIAL);
		glDisable(GL_BLEND);

		//Attacker psychicness

		for(int i=0;i<numpeople;i++){

			if(person[i].killtarget>-1&&person[i].killtargetvisible&&person[i].skeleton.free==0&&person[person[i].killtarget].skeleton.free==0){

				sprites.MakeSprite(bulletinstant, (shotdelayamount/difficulty-person[i].shotdelay)/shotdelayamount/difficulty/2, 1, person[i].shotdelay/shotdelayamount/difficulty, person[i].shotdelay/shotdelayamount/difficulty, rotate(person[i].skeleton.joints[lefthand].position,0,person[i].playerrotation,0)+person[i].playercoords, person[person[i].killtarget].skeleton.joints[abdomen].position+person[person[i].killtarget].playercoords, person[i].shotdelay*2);

			}

			if(person[i].killtarget>-1&&person[i].killtargetvisible&&person[i].skeleton.free==0&&person[person[i].killtarget].skeleton.free!=0){

				sprites.MakeSprite(bulletinstant, (shotdelayamount/difficulty-person[i].shotdelay)/shotdelayamount/difficulty/2, 1, person[i].shotdelay/shotdelayamount/difficulty, person[i].shotdelay/shotdelayamount/difficulty, rotate(person[i].skeleton.joints[lefthand].position,0,person[i].playerrotation,0)+person[i].playercoords, person[person[i].killtarget].skeleton.joints[abdomen].position, person[i].shotdelay*2);

			}

		}

		//Sprites

		glEnable(GL_CLIP_PLANE0);

		sprites.draw();

		glDisable(GL_CLIP_PLANE0);

		glDisable(GL_FOG);

		//Zoom

		glAlphaFunc(GL_GREATER, 0.01);

		if(zoom){

			glDisable(GL_DEPTH_TEST);							// Disables Depth Testing

			glDisable(GL_CULL_FACE);

			glDisable(GL_LIGHTING);

			glDepthMask(0);

			glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix

			glPushMatrix();										// Store The Projection Matrix

			glLoadIdentity();									// Reset The Projection Matrix

			glOrtho(0,screenwidth,0,screenheight,-100,100);						// Set Up An Ortho Screen

			glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix

			glPushMatrix();										// Store The Modelview Matrix

			glLoadIdentity();								// Reset The Modelview Matrix

			glScalef(screenwidth,screenheight,1);

			glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

			glEnable(GL_BLEND);

			glEnable(GL_TEXTURE_2D);

			glColor4f(.5,.5,.5,1);

			glBindTexture(GL_TEXTURE_2D, scopetextureptr);

			glBegin(GL_QUADS);

				glTexCoord2f(0,0);

				glVertex3f(0,		0, 	 0.0f);

				glTexCoord2f(1,0);

				glVertex3f(1,	0, 	 0.0f);

				glTexCoord2f(1,1);

				glVertex3f(1,	1, 0.0f);

				glTexCoord2f(0,1);

				glVertex3f(0, 	1, 0.0f);

			glEnd();

			glDisable(GL_TEXTURE_2D);

			glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix

			glPopMatrix();										// Restore The Old Projection Matrix

			glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix

			glPopMatrix();										// Restore The Old Projection Matrix

			glEnable(GL_DEPTH_TEST);							// Enables Depth Testing

			glEnable(GL_CULL_FACE);

			glDisable(GL_BLEND);

			glDepthMask(1);

		}

		//Flash

		if(flashamount>0){

			if(flashamount>1)flashamount=1;

			flashamount-=multiplier;

			if(flashamount<0)flashamount=0;

			glDisable(GL_DEPTH_TEST);							// Disables Depth Testing

			glDisable(GL_CULL_FACE);

			glDisable(GL_LIGHTING);

			glDepthMask(0);

			glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix

			glPushMatrix();										// Store The Projection Matrix

			glLoadIdentity();									// Reset The Projection Matrix

			glOrtho(0,screenwidth,0,screenheight,-100,100);						// Set Up An Ortho Screen

			glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix

			glPushMatrix();										// Store The Modelview Matrix

			glLoadIdentity();								// Reset The Modelview Matrix

			glScalef(screenwidth,screenheight,1);

			glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

			glEnable(GL_BLEND);

			glColor4f(flashr,flashg,flashb,flashamount);

			glBegin(GL_QUADS);

				glVertex3f(0,		0, 	 0.0f);

				glVertex3f(256,	0, 	 0.0f);

				glVertex3f(256,	256, 0.0f);

				glVertex3f(0, 	256, 0.0f);

			glEnd();

			glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix

			glPopMatrix();										// Restore The Old Projection Matrix

			glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix

			glPopMatrix();										// Restore The Old Projection Matrix

			glEnable(GL_DEPTH_TEST);							// Enables Depth Testing

			glEnable(GL_CULL_FACE);

			glDisable(GL_BLEND);

			glDepthMask(1);

		}

		if(person[0].skeleton.free>0&&thirdperson!=2){

			glDisable(GL_DEPTH_TEST);							// Disables Depth Testing

			glDisable(GL_CULL_FACE);

			glDisable(GL_LIGHTING);

			glDepthMask(0);

			glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix

			glPushMatrix();										// Store The Projection Matrix

			glLoadIdentity();									// Reset The Projection Matrix

			glOrtho(0,screenwidth,0,screenheight,-100,100);						// Set Up An Ortho Screen

			glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix

			glPushMatrix();										// Store The Modelview Matrix

			glLoadIdentity();								// Reset The Modelview Matrix

			glScalef(screenwidth,screenheight,1);

			glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

			glEnable(GL_BLEND);

			glColor4f(0,0,0,1-person[0].longdead);

			glBegin(GL_QUADS);

				glVertex3f(0,		0, 	 0.0f);

				glVertex3f(256,	0, 	 0.0f);

				glVertex3f(256,	256, 0.0f);

				glVertex3f(0, 	256, 0.0f);

			glEnd();

			glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix

			glPopMatrix();										// Restore The Old Projection Matrix

			glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix

			glPopMatrix();										// Restore The Old Projection Matrix

			glEnable(GL_DEPTH_TEST);							// Enables Depth Testing

			glEnable(GL_CULL_FACE);

			glDisable(GL_BLEND);

			glDepthMask(1);

		}

		//Text
		glEnable(GL_TEXTURE_2D);
		glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
		static char str[256] = "";

		if (!debug) {
			std::string s;
			switch (person[0].whichgun) {
			case nogun:
				s = "UNARMED";
				break;
			case knife:
				s = "KNIFE";
				break;
			case assaultrifle:
				s = "ASSAULT RIFLE";
				break;
			case shotgun:
				s = "SHOTGUN";
				break;
			case sniperrifle:
				s = "SNIPER RIFLE";
				break;
			case grenade:
				s = "HAND GRENADE";
				break;
			case handgun1:
				s = "MAGNUM";
				break;
			case handgun2:
				s = "HANDGUN";
				break;
			}
			glPrint(&this->text, 10, 90, s.c_str(), 1, 0.8, 640, 480);
			if(person[0].whichgun!=nogun&&person[0].whichgun!=knife&&person[0].whichgun!=grenade){
				glColor4f(0,1,0,1);
				glPrint(&this->text, 10, 30, "Magazines",
					0, 0.8, 640, 480);
				glColor4f(1,1,1,1);
				sprintf (str, "0%d",(int)person[0].reloads[person[0].whichgun]);
				glPrint(&this->text, 10,10,str,1,1,640,480);
				if(person[0].ammo>=0){
					glColor4f(0,1,0,1);
					glPrint(&this->text, 10, 65, "Ammo",
						0, 0.8, 640, 480);
					glColor4f(1,1,1,1);
					if(person[0].ammo>=10)sprintf (str, "%d",(int)person[0].ammo);
					if(person[0].ammo<10)sprintf (str, "0%d",(int)person[0].ammo);
					glPrint(&this->text, 10,40,str,1,1,640,480);
				}
			}
			if(person[0].whichgun==grenade){
				sprintf (str, "Grenades Left:  %d",(int)person[0].reloads[person[0].whichgun]+1);
				glPrint(&this->text, 10,20,str,0,.8,640,480);
			}
			glColor4f(1,1,0,1);
			glPrint(&this->text, 725, 575, "Score", 0, 0.8, 640, 480);
			glColor4f(1,1,1,1);
			sprintf(str, "%d", score);
			glPrint(&this->text, 580,440,str,1,1,640,480);
			glColor4f(1,1,0,1);
			glPrint(&this->text, 50, 575, "Time Remaining",
				0, 0.8, 640, 480);
			glColor4f(1,1,1,1);
			if((int)timeremaining%60>=10)sprintf (str, "%d:%d", (int)(timeremaining/60),(int)timeremaining%60);
			if((int)timeremaining%60<10)sprintf (str, "%d:0%d", (int)(timeremaining/60),(int)timeremaining%60);
			glPrint(&this->text, 72, 440, str, 1, 1, 640, 480);
		} else {
			sprintf(str, "FPS: %.0f", 1.0f / multiplier);
			glPrint(&this->text, 10,30,str,0,.8,screenwidth,screenheight);
			std::string s;
			switch (enemystate) {
			case 0:
				s = "Enemies are in random assassination mode.";
				break;
			case 1:
				s = "Enemies are in passive mode.";
				break;
			case 2:
				s = "Enemies are in DIE!!!! mode.";
				break;
			}
			glPrint(&this->text, 10, 20, s.c_str(), 0, 0.8,
				screenwidth, screenheight);
			sprintf(str, "You have pointlessly shot or beaten %d unarmed civilians.", civkills);
			glPrint(&this->text, 10,60,str,0,.8,screenwidth,screenheight);
			sprintf(str, "You have incapacitated %d assassins.", goodkills);
			glPrint(&this->text, 10,70,str,0,.8,screenwidth,screenheight);
			sprintf(str, "You have allowed %d successful murders.", badkills);
			glPrint(&this->text, 10,80,str,0,.8,screenwidth,screenheight);
		}
	}
}