X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameDraw.cpp;h=083af9d86f8f8aa06c964e1b498749d29ec881e7;hb=963584c62f5a1ec1f2b505f5c64672b7d4bc7547;hp=0e153a9420bfd6c07be9c524e868c9dc27d6623f;hpb=c0a6dc9211fd7855250be34151a70ec4bceb5126;p=lugaru.git diff --git a/Source/GameDraw.cpp b/Source/GameDraw.cpp index 0e153a9..083af9d 100644 --- a/Source/GameDraw.cpp +++ b/Source/GameDraw.cpp @@ -175,6 +175,8 @@ extern float accountcampaigntime[10]; extern bool gamestarted; +extern bool showdamagebar; + extern OPENAL_SAMPLE *samp[100]; extern int channels[100]; extern "C" void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused); @@ -565,29 +567,6 @@ int Game::DrawGLScene(StereoSide side) } glPopMatrix(); - //if(cellophane){ - /*glEnable(GL_CULL_FACE); - glCullFace(GL_FRONT); - glDepthMask(1); - for(k=0;k=1)glDisable(GL_BLEND); - if(distance>0){ - checkpoint=DoRotation(player[k].skeleton.joints[abs(Random()%player[k].skeleton.num_joints)].position,0,player[k].rotation,0)*player[k].scale+player[k].coords; - checkpoint.y+=1; - if(checkcollide(viewer,checkpoint)){ - player[k].occluded+=1; - } - else player[k].occluded=0; - if(player[k].occluded<25)player[k].DrawSkeleton(); - } - }*/ - glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_CULL_FACE); glCullFace(GL_FRONT); @@ -1241,6 +1220,90 @@ int Game::DrawGLScene(StereoSide side) text.glPrintOutline(1024/40-4,768/16-4+768*14/16,string,1,1.5*1.25,1024,768); glColor4f(1,0,0,1); text.glPrint(1024/40,768/16+768*14/16,string,1,1.5,1024,768); + if(showdamagebar) { + glDisable(GL_DEPTH_TEST); // Disables Depth Testing + glDisable(GL_CULL_FACE); + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + 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 + glTranslatef(15,screenheight*17.5/20,0); + glScalef(screenwidth/3+20,screenheight/20,1); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glColor4f(0.0,0.4,0.0,0.7); + float bar=((float)player[0].damage)/player[0].damagetolerance; + glBegin(GL_QUADS); + glVertex3f((bar<1?bar:1),0,0.0f); + glVertex3f(1,0,0.0f); + glVertex3f(1,1,0.0f); + glVertex3f((bar<1?bar:1),1,0.0f); + glEnd(); + glColor4f(0.1,0.0,0.0,1); + bar = ((float)player[0].bloodloss)/player[0].damagetolerance; + glBegin(GL_QUADS); + glVertex3f(0,0,0.0f); + glVertex3f((bar<1?bar:1),0,0.0f); + glVertex3f((bar<1?bar:1),1,0.0f); + glVertex3f(0,1,0.0f); + glEnd(); + glColor4f(0.4,0.0,0.0,0.7); + bar = ((float)player[0].damage)/player[0].damagetolerance; + glBegin(GL_QUADS); + glVertex3f(0,0,0.0f); + glVertex3f((bar<1?bar:1),0,0.0f); + glVertex3f((bar<1?bar:1),1,0.0f); + glVertex3f(0,1,0.0f); + glEnd(); + glColor4f(0.4,0.0,0.0,0.7); + bar = ((float)player[0].permanentdamage)/player[0].damagetolerance; + glBegin(GL_QUADS); + glVertex3f(0,0,0.0f); + glVertex3f((bar<1?bar:1),0,0.0f); + glVertex3f((bar<1?bar:1),1,0.0f); + glVertex3f(0,1,0.0f); + glEnd(); + glColor4f(0.4,0.0,0.0,0.7); + bar = ((float)player[0].superpermanentdamage)/player[0].damagetolerance; + glBegin(GL_QUADS); + glVertex3f(0,0,0.0f); + glVertex3f((bar<1?bar:1),0,0.0f); + glVertex3f((bar<1?bar:1),1,0.0f); + glVertex3f(0,1,0.0f); + glEnd(); + glColor4f(0.0,0.0,0.0,0.7); + glLineWidth(2.0); + glBegin(GL_LINE_STRIP); + glVertex3f(0,0,0.0f); + glVertex3f(1,0,0.0f); + glVertex3f(1,1,0.0f); + glVertex3f(0,1,0.0f); + glVertex3f(0,0,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); + glEnable(GL_TEXTURE_2D); + + // writing the numbers : + sprintf (string, "Damages : %d/%d (%d)",(int)(player[0].damage),(int)(player[0].damagetolerance),(int)(player[0].bloodloss)); + glColor4f(0,0,0,1); + text.glPrintOutline(1024/40-4,768/16-4+768*14/16-40,string,1,1.5*1.25,1024,768); + glColor4f(1,0,0,1); + text.glPrint(1024/40,768/16+768*14/16-40,string,1,1.5,1024,768); + } } glColor4f(.5,.5,.5,1); @@ -2436,7 +2499,7 @@ int Game::DrawGLScene(StereoSide side) glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix if(mainmenu==3){ - nummenuitems=13; + nummenuitems=14; if((float)newscreenwidth>(float)newscreenheight*1.61||(float)newscreenwidth<(float)newscreenheight*1.59)sprintf (menustring[0], "Resolution: %d*%d",(int)newscreenwidth,(int)newscreenheight); else sprintf (menustring[0], "Resolution: %d*%d (widescreen)",(int)newscreenwidth,(int)newscreenheight); startx[0]=10+20; @@ -2522,15 +2585,23 @@ int Game::DrawGLScene(StereoSide side) sprintf (menustring[11], "Volume: %d%%", (int)(volume*100)); startx[11]=10+60; - starty[11]=155; + starty[11]=160; endx[11]=startx[11]+strlen(menustring[11])*10; endy[11]=starty[11]+20; movex[11]=0; movey[11]=0; + sprintf (menustring[13], "Damage Bar: %s",(showdamagebar?"on":"off")); + startx[13]=30; + starty[13]=125; + endx[13]=startx[13]+strlen(menustring[13])*10; + endy[13]=starty[13]+20; + movex[13]=0; + movey[13]=0; + sprintf (menustring[7], "-Configure Controls-"); startx[7]=10+15; - starty[7]=100; + starty[7]=90; endx[7]=startx[7]+strlen(menustring[7])*10; endy[7]=starty[7]+20; movex[7]=0; @@ -2538,7 +2609,7 @@ int Game::DrawGLScene(StereoSide side) sprintf (menustring[12], "-Configure Stereo -"); startx[12]=10+15; - starty[12]=60; + starty[12]=55; endx[12]=startx[12]+strlen(menustring[7])*10; endy[12]=starty[12]+20; movex[12]=0; @@ -2839,7 +2910,8 @@ int Game::DrawGLScene(StereoSide side) movex[0]=0; movey[0]=0; - if(entername)startx[0]+=10; + if(entername) + startx[0]+=10; num=1; @@ -3504,29 +3576,20 @@ int Game::DrawGLScene(StereoSide side) //if(1-((float)i)/10-(1-selectedlong[j])>0){ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); - if(mainmenu!=7||j!=0||!entername)text.glPrint(startx[j],starty[j],menustring[j],0,1,640,480); + if(mainmenu!=7||j!=0||!entername) + text.glPrint(startx[j],starty[j],menustring[j],0,1,640,480); else { if(displayblink){ sprintf (string, "_"); text.glPrint(startx[j]+(float)(displayselected)*10,starty[j],string,0,1,640,480); } - k=0; - for(l=0;l