]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameDraw.cpp
Move stats vars and award computation to Awards.cpp
[lugaru.git] / Source / GameDraw.cpp
index 888a7b452ac9721bbe01fe7392371ffd9877945d..79625b1795d23be8a81f5bf5f5b539c95cfc098d 100644 (file)
@@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include "Game.h"
 #include "openal_wrapper.h"
 #include "Input.h"
+#include "Awards.h"
 
 using namespace std;
 
@@ -44,8 +45,6 @@ extern int detail;
 extern float usermousesensitivity;
 extern bool osx;
 extern float camerashake;
-extern Weapons weapons;
-extern Person player[maxplayers];
 extern int slomo;
 extern float slomodelay;
 extern bool ismotionblur;
@@ -53,7 +52,6 @@ extern float woozy;
 extern float blackout;
 extern bool damageeffects;
 extern float volume;
-extern int numplayers;
 extern bool texttoggle;
 extern float blurness;
 extern float targetblurness;
@@ -97,7 +95,6 @@ extern float tutorialmaxtime;
 extern int tutorialstage;
 extern bool againbonus;
 extern float damagedealt;
-extern float damagetaken;
 extern bool invertmouse;
 
 extern int numhotspots;
@@ -109,23 +106,6 @@ extern float hotspotsize[40];
 extern char hotspottext[40][256];
 extern int currenthotspot;;
 
-extern int numfalls;
-extern int numflipfail;
-extern int numseen;
-extern int numstaffattack;
-extern int numswordattack;
-extern int numknifeattack;
-extern int numunarmedattack;
-extern int numescaped;
-extern int numflipped;
-extern int numwallflipped;
-extern int numthrowkill;
-extern int numafterkill;
-extern int numreversals;
-extern int numattacks;
-extern int maxalarmed;
-extern int numresponded;
-
 extern bool campaign;
 extern bool winfreeze;
 
@@ -159,7 +139,6 @@ 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);
 
@@ -262,16 +241,15 @@ int Game::DrawGLScene(StereoSide side)
 
                if(winfreeze||mainmenu)drawmode=normalmode;
 
-               //drawmode=glowmode;
+#if PLATFORM_MACOSX
                if(drawmode==glowmode){
                        RGBColor color2;
                        color2.red=0;
                        color2.green=0;
                        color2.blue=0;
-#if PLATFORM_MACOSX
                        DSpContext_FadeGamma(NULL,200,&color2);
-#endif
                }
+#endif
 
                if(drawtoggle!=2)drawtoggle=1-drawtoggle;
 
@@ -1742,83 +1720,6 @@ int Game::DrawGLScene(StereoSide side)
 
                        glEnable(GL_TEXTURE_2D);
 
-                       //Awards
-                       int numawards = 0;
-                       int awards[30];
-
-                       if(damagetaken==0&&player[0].bloodloss==0){
-                               awards[numawards]=awardflawless;
-                               numawards++;
-                       }
-                       bool alldead = true;
-                       for(i=1;i<numplayers;i++){              
-                               if(player[i].dead!=2)alldead=0;
-                       }
-                       if(alldead){
-                               awards[numawards]=awardalldead;
-                               numawards++;
-                       }
-                       alldead=1;
-                       for(i=1;i<numplayers;i++){              
-                               if(player[i].dead!=1)alldead=0;
-                       }
-                       if(alldead){
-                               awards[numawards]=awardnodead;
-                               numawards++;
-                       }
-                       if(numresponded==0&&!numthrowkill){
-                               awards[numawards]=awardstealth;
-                               numawards++;
-                       }
-                       if(numattacks==numstaffattack&&numattacks>0){
-                               awards[numawards]=awardbojutsu;
-                               numawards++;
-                       }
-                       if(numattacks==numswordattack&&numattacks>0){
-                               awards[numawards]=awardswordsman;
-                               numawards++;
-                       }
-                       if(numattacks==numknifeattack&&numattacks>0){
-                               awards[numawards]=awardknifefighter;
-                               numawards++;
-                       }
-                       if(numattacks==numunarmedattack&&numthrowkill==0&&weapons.numweapons>0){
-                               awards[numawards]=awardkungfu;
-                               numawards++;
-                       }
-                       if(numescaped>0){
-                               awards[numawards]=awardevasion;
-                               numawards++;
-                       }
-                       if(numflipfail==0&&numflipped+numwallflipped*2>20){
-                               awards[numawards]=awardacrobat;
-                               numawards++;
-                       }
-                       if(numthrowkill==numplayers-1){
-                               awards[numawards]=awardlongrange;
-                               numawards++;
-                       }
-                       alldead=1;
-                       for(i=1;i<numplayers;i++){              
-                               if(player[i].dead!=2)alldead=0;
-                       }
-                       if(numafterkill>0&&alldead){
-                               awards[numawards]=awardbrutal;
-                               numawards++;
-                       }
-                       if(numreversals>((float)numattacks)*.8&&numreversals>3){
-                               awards[numawards]=awardaikido;
-                               numawards++;
-                       }
-                       if(maxalarmed==1&&numplayers>2){
-                               awards[numawards]=awardstrategy;
-                               numawards++;
-                       }
-                       if(numflipfail>3){
-                               awards[numawards]=awardklutz;
-                               numawards++;
-                       }
-
                        //Win Screen Won Victory
 
                        glEnable(GL_TEXTURE_2D);
@@ -1845,32 +1746,12 @@ int Game::DrawGLScene(StereoSide side)
                        strcat(string,temp);
                        text.glPrintOutlined(1024/30,768*6/8-40,string,1,2,1024,768);
 
-                       for(i=0;i<numawards;i++){
-                               if(i<6){
-                                       if(awards[i]==awardklutz)sprintf (string, "Suicidal");
-                                       if(awards[i]==awardflawless)sprintf (string, "Flawless!");
-                                       if(awards[i]==awardalldead)sprintf (string, "Take no prisoners");
-                                       if(awards[i]==awardnodead)sprintf (string, "Merciful");
-                                       if(awards[i]==awardstealth)sprintf (string, "One with the shadows!");
-                                       if(awards[i]==awardswordsman)sprintf (string, "Swordsman");
-                                       if(awards[i]==awardkungfu)sprintf (string, "Unarmed!");
-                                       if(awards[i]==awardknifefighter)sprintf (string, "Knife fighter");
-                                       if(awards[i]==awardcoward)sprintf (string, "Coward");
-                                       if(awards[i]==awardevasion)sprintf (string, "Escape artist");
-                                       if(awards[i]==awardacrobat)sprintf (string, "Gymnast");
-                                       if(awards[i]==awardlongrange)sprintf (string, "Blade slinger");
-                                       if(awards[i]==awardbrutal)sprintf (string, "Brutal");
-                                       if(awards[i]==awardhyper)sprintf (string, "Hyper");
-                                       if(awards[i]==awardaikido)sprintf (string, "Aikido master!");
-                                       if(awards[i]==awardrambo)sprintf (string, "Rambo");
-                                       if(awards[i]==awardfast)sprintf (string, "Fast");
-                                       if(awards[i]==awardrealfast)sprintf (string, "Real fast");
-                                       if(awards[i]==awarddamnfast)sprintf (string, "Damn fast");
-                                       if(awards[i]==awardstrategy)sprintf (string, "Divide and conquer");
-                                       if(awards[i]==awardbojutsu)sprintf (string, "Bojutsu");
-                                       text.glPrintOutlined(1024/30,768*6/8-90-40*i,string,1,2,1024,768);
-                               }
-                       }
+                       //Awards
+                       int awards[award_count];
+                       int numawards = award_awards(awards);
+
+                       for (i = 0; i < numawards && i < 6; i++)
+                         text.glPrintOutlined(1024/30,768*6/8-90-40*i,award_names[awards[i]],1,2,1024,768);
                }
 
                if(drawmode!=normalmode){
@@ -2240,7 +2121,7 @@ int Game::DrawGLScene(StereoSide side)
 
                oldmainmenu=mainmenu;
 
-               if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==119||mainmenu==13||mainmenu==17||mainmenu==18){
+               if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==119||mainmenu==18){
                        glClear(GL_DEPTH_BUFFER_BIT);
                        glEnable(GL_ALPHA_TEST);
                        glAlphaFunc(GL_GREATER, 0.001f);
@@ -2816,51 +2697,6 @@ int Game::DrawGLScene(StereoSide side)
 
                                //numchallengelevels=tempncl;
 
-                       }
-                       if(mainmenu==11){                       
-                               nummenuitems=2+numchallengelevels;
-                               char temp[255];
-
-                               for(j=0;j<numchallengelevels;j++){
-                                       for(i=0;i<255;i++)menustring[j][i]='\0';
-                                       sprintf (temp, "Level %d",j+1);
-                                       strcpy(menustring[j],temp);
-                                       for(i=0;i<17;i++)if(menustring[j][i]=='\0')menustring[j][i]=' ';
-                                       menustring[j][17]='\0';
-                                       sprintf (temp, "%d",(int)accountactive->getHighScore(j));
-                                       strcat(menustring[j],temp);
-                                       for(i=18;i<32;i++)if(menustring[j][i]=='\0')menustring[j][i]=' ';
-                                       menustring[j][32]='\0';
-                                       sprintf (temp, "%d:",(int)(((int)accountactive->getFastTime(j)-(int)(accountactive->getFastTime(j))%60)/60));
-                                       strcat(menustring[j],temp);
-                                       if((int)(accountactive->getFastTime(j))%60<10)strcat(menustring[j],"0");
-                                       sprintf (temp, "%d",(int)(accountactive->getFastTime(j))%60);
-                                       strcat(menustring[j],temp);
-
-                                       startx[j]=10;
-                                       starty[j]=360-j*40;
-                                       endx[j]=startx[j]+strlen(menustring[j])*10;
-                                       endy[j]=starty[j]+20;
-                                       movex[j]=0;
-                                       movey[j]=0;
-                               }
-
-                               sprintf (menustring[numchallengelevels], "Back");
-                               startx[numchallengelevels]=10;
-                               endx[numchallengelevels]=startx[numchallengelevels]+strlen(menustring[numchallengelevels])*10;
-                               starty[numchallengelevels]=10;
-                               endy[numchallengelevels]=starty[numchallengelevels]+20;
-                               movex[numchallengelevels]=0;
-                               movey[numchallengelevels]=0;
-
-                               sprintf (menustring[numchallengelevels+1], "             High Score      Best Time");
-                               startx[numchallengelevels+1]=10;
-                               starty[numchallengelevels+1]=400;
-                               endx[numchallengelevels+1]=startx[numchallengelevels+1]+strlen(menustring[numchallengelevels+1])*10;
-                               endy[numchallengelevels+1]=starty[numchallengelevels+1]+20;
-                               movex[numchallengelevels+1]=0;
-                               movey[numchallengelevels+1]=0;
-
                        }
                        if(mainmenu==10){                       
                                nummenuitems=6;
@@ -3157,13 +2993,12 @@ int Game::DrawGLScene(StereoSide side)
                                }
                        }
 
-               if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==11||mainmenu==13||mainmenu==17||mainmenu==18)
+               if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==18)
                        for(i=0;i<nummenuitems;i++){
                                if((mousecoordh/screenwidth*640)>startx[i]&&(mousecoordh/screenwidth*640)<endx[i]&&480-(mousecoordv/screenheight*480)>starty[i]&&480-(mousecoordv/screenheight*480)<endy[i]){
                                        if(mainmenu!=5)selected=i;
                                        if(mainmenu==5&&(i!=0&&i!=6))selected=i;
-                                       if(mainmenu==9&&(i!=numchallengelevels+1))selected=i;
-                                       if(mainmenu==11&&(i!=numchallengelevels+1))selected=i;
+                                       if(mainmenu==9&&(i!=numchallengelevels+1))selected=i; // seem useless, if mainmenu==9 then mainmenu!=5, so selected==i.
                                }
                        }
 
@@ -3331,14 +3166,12 @@ int Game::DrawGLScene(StereoSide side)
                                                }
                                        }
                                }
-                               if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==11||mainmenu==13||mainmenu==17||mainmenu==18)
+                               if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==18)
                                {
                                        if(mainmenu!=5||j<6)
                                        {
                                                glColor4f(1,0,0,1);
                                                if(mainmenu==9&&j>accountactive->getProgress()&&j<numchallengelevels)glColor4f(0.5,0,0,1);
-                                               if(mainmenu==11&&j>accountactive->getProgress()&&j<numchallengelevels)glColor4f(0.5,0,0,1);
-                                               //if(1-((float)i)/10-(1-selectedlong[j])>0){
                                                glMatrixMode(GL_MODELVIEW);                                                     // Select The Modelview Matrix
                                                glPushMatrix();
                                                        if(mainmenu!=7||j!=0||!entername)
@@ -3371,10 +3204,7 @@ int Game::DrawGLScene(StereoSide side)
                                                                if(mainmenu==7&&(j!=0||!entername)) text.glPrint(startx[j]-((float)i)+offsetx[j]*((float)i)/4,starty[j]+offsety[j]*((float)i)/4,menustring[j],0,1+((float)i)/70,640,480);
                                                                if(mainmenu==8)text.glPrint(startx[j]-((float)i)+offsetx[j]*((float)i)/4,starty[j]+offsety[j]*((float)i)/4,menustring[j],0,1+((float)i)/70,640,480);
                                                                if(mainmenu==9)text.glPrint(startx[j]-((float)i)+offsetx[j]*((float)i)/4,starty[j]+offsety[j]*((float)i)/4,menustring[j],0,1+((float)i)/70,640,480);
-                                                               if(mainmenu==11)text.glPrint(startx[j]-((float)i)+offsetx[j]*((float)i)/4,starty[j]+offsety[j]*((float)i)/4,menustring[j],0,1+((float)i)/70,640,480);
                                                                if(mainmenu==10)text.glPrint(startx[j]-((float)i)+offsetx[j]*((float)i)/4,starty[j]+offsety[j]*((float)i)/4,menustring[j],0,1+((float)i)/70,640,480);
-                                                               if(mainmenu==17)text.glPrint(startx[j]-((float)i)+offsetx[j]*((float)i)/4,starty[j]+offsety[j]*((float)i)/4,menustring[j],0,1+((float)i)/70,640,480);
-                                                               if(mainmenu==13&&j!=1)text.glPrint(startx[j]-((float)i)+offsetx[j]*((float)i)/4,starty[j]+offsety[j]*((float)i)/4,menustring[j],0,1+((float)i)/70,640,480);
                                                                if(mainmenu==18)text.glPrint(startx[j]-((float)i)+offsetx[j]*((float)i)/4,starty[j]+offsety[j]*((float)i)/4,menustring[j],0,1+((float)i)/70,640,480);
                                                        }
                                                }