]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameDraw.cpp
Move dialogue stuff to Game.{cpp,h}
[lugaru.git] / Source / GameDraw.cpp
index 34926564c6b4937fc0bb3921f5a57a808140b204..3d4b9f782391ac38ffb7796fa238f6307464e5c1 100644 (file)
@@ -81,13 +81,6 @@ extern bool decals;
 //extern int texdetail;
 extern float texdetail;
 extern bool musictoggle;
-extern int bonus;
-extern float bonusvalue;
-extern float bonustotal;
-extern float bonustime;
-extern int oldbonus;
-extern float startbonustotal;
-extern float bonusnum[100];
 extern int tutoriallevel;
 extern float smoketex;
 extern float tutorialstagetime;
@@ -95,7 +88,6 @@ extern float tutorialmaxtime;
 extern int tutorialstage;
 extern bool againbonus;
 extern float damagedealt;
-extern float damagetaken;
 extern bool invertmouse;
 
 extern int numhotspots;
@@ -107,23 +99,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;
 
@@ -131,34 +106,14 @@ extern float menupulse;
 
 extern bool gamestart;
 
-extern int numdialogues;
-extern int numdialogueboxes[max_dialogues];
-extern int dialoguetype[max_dialogues];
-extern int dialogueboxlocation[max_dialogues][max_dialoguelength];
-extern float dialogueboxcolor[max_dialogues][max_dialoguelength][3];
-extern int dialogueboxsound[max_dialogues][max_dialoguelength];
-extern char dialoguetext[max_dialogues][max_dialoguelength][128];
-extern char dialoguename[max_dialogues][max_dialoguelength][64];
-extern XYZ dialoguecamera[max_dialogues][max_dialoguelength];
-extern XYZ participantlocation[max_dialogues][10];
-extern int participantfocus[max_dialogues][max_dialoguelength];
-extern int participantaction[max_dialogues][max_dialoguelength];
-extern float participantrotation[max_dialogues][10];
-extern XYZ participantfacing[max_dialogues][max_dialoguelength][10];
-extern float dialoguecamerarotation[max_dialogues][max_dialoguelength];
-extern float dialoguecamerarotation2[max_dialogues][max_dialoguelength];
-extern int indialogue;
-extern int whichdialogue;
-extern int directing;
-extern float dialoguetime;
-extern int dialoguegonethrough[20];
-
 extern bool gamestarted;
 
 extern bool showdamagebar;
 
-extern int channels[100];
-extern "C"     void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused);
+enum drawmodes {
+  normalmode, motionblurmode, radialzoommode,
+  realmotionblurmode, doublevisionmode, glowmode,
+};
 
 void Game::flash() { // shouldn't be that way, these should be attributes and Person class should not change rendering.
        flashr=1;
@@ -604,38 +559,16 @@ int Game::DrawGLScene(StereoSide side)
 
                        if(!tutoriallevel)
                                if(bonus>0&&bonustime<1&&!winfreeze&&indialogue==-1/*bonustime<4*/){
-                                       if(bonus==tracheotomy)sprintf (string, "Tracheotomy!");
-                                       else if(bonus==backstab)sprintf (string, "Backstabber!");
-                                       else if(bonus==spinecrusher)sprintf (string, "Spinecrusher!");
-                                       else if(bonus==ninja)sprintf (string, "Ninja Bonus!");
-                                       else if(bonus==style)sprintf (string, "Style Bonus!");
-                                       else if(bonus==cannon)sprintf (string, "Leg Cannon!");
-                                       else if(bonus==aimbonus)sprintf (string, "Nice Aim!");
-                                       else if(bonus==deepimpact)sprintf (string, "Heavy Impact!");
-                                       else if(bonus==touchofdeath)sprintf (string, "Touch of Death!");
-                                       else if(bonus==swordreversebonus)sprintf (string, "Sword Disarm!");
-                                       else if(bonus==staffreversebonus)sprintf (string, "Staff Disarm!");
-                                       else if(bonus==reverseko)sprintf (string, "Reversal KO!");
-                                       else if(bonus==solidhit)sprintf (string, "Solid Hit!");
-                                       else if(bonus==twoxcombo)sprintf (string, "2X Combo!");
-                                       else if(bonus==threexcombo)sprintf (string, "3X Combo!");
-                                       else if(bonus==fourxcombo)sprintf (string, "4X COMBO!");
-                                       else if(bonus==megacombo)sprintf (string, "MEGA COMBO!");
-                                       else if(bonus==Reversal)sprintf (string, "Reversal!");
-                                       else if(bonus==Stabbonus)sprintf (string, "Punctured!");
-                                       else if(bonus==Slicebonus)sprintf (string, "Sliced!");
-                                       else if(bonus==Bullseyebonus)sprintf (string, "Bullseye!");
-                                       else if(bonus==Slashbonus)sprintf (string, "Slashed!");
-                                       else if(bonus==Wolfbonus)sprintf (string, "WOLF SLAYER!");
-                                       else if(bonus==FinishedBonus)sprintf (string, "SLAIN!");
-                                       else if(bonus==TackleBonus)sprintf (string, "Tackle!");
-                                       else if(bonus==AboveBonus)sprintf (string, "Death from Above!");
-                                       else sprintf (string, "Excellent!");
+                                       const char *bonus_name;
+                                       if (bonus < bonus_count)
+                                         bonus_name = bonus_names[bonus];
+                                       else
+                                         bonus_name = "Excellent!"; // When does this happen?
 
                                        glColor4f(0,0,0,1-bonustime);
-                                       text.glPrintOutline(1024/2-10*strlen(string)-4,768/16-4+768*4/5,string,1,2.5,1024,768);
+                                       text.glPrintOutline(1024/2-10*strlen(bonus_name)-4,768/16-4+768*4/5,bonus_name,1,2.5,1024,768);
                                        glColor4f(1,0,0,1-bonustime);
-                                       text.glPrint(1024/2-10*strlen(string),768/16+768*4/5,string,1,2,1024,768);
+                                       text.glPrint(1024/2-10*strlen(bonus_name),768/16+768*4/5,bonus_name,1,2,1024,768);
 
                                        sprintf (string, "%d",(int)bonusvalue);
                                        glColor4f(0,0,0,1-bonustime);
@@ -1001,14 +934,6 @@ int Game::DrawGLScene(StereoSide side)
                                                        indialogue=0;
                                                        dialoguegonethrough[whichdialogue]++;
                                                        if(dialogueboxsound[whichdialogue][indialogue]!=0){
-                                                               static float gLoc[3];
-                                                               static float vel[3];
-                                                               gLoc[0]=player[participantfocus[whichdialogue][indialogue]].coords.x;
-                                                               gLoc[1]=player[participantfocus[whichdialogue][indialogue]].coords.y;
-                                                               gLoc[2]=player[participantfocus[whichdialogue][indialogue]].coords.z;
-                                                               vel[0]=0;
-                                                               vel[1]=0;
-                                                               vel[2]=0;
                                                                int whichsoundplay;
                                                                if(dialogueboxsound[whichdialogue][indialogue]==1)whichsoundplay=rabbitchitter;
                                                                if(dialogueboxsound[whichdialogue][indialogue]==2)whichsoundplay=rabbitchitter2;
@@ -1030,10 +955,7 @@ int Game::DrawGLScene(StereoSide side)
                                                                if(dialogueboxsound[whichdialogue][indialogue]==-2)whichsoundplay=firestartsound;
                                                                if(dialogueboxsound[whichdialogue][indialogue]==-3)whichsoundplay=consolesuccesssound;
                                                                if(dialogueboxsound[whichdialogue][indialogue]==-4)whichsoundplay=consolefailsound;
-                                                               PlaySoundEx( whichsoundplay, samp[whichsoundplay], NULL, true);
-                                                               OPENAL_3D_SetAttributes(channels[whichsoundplay], gLoc, vel);
-                                                               OPENAL_SetVolume(channels[whichsoundplay], 256);
-                                                               OPENAL_SetPaused(channels[whichsoundplay], false);
+                                                               emit_sound_at(whichsoundplay, player[participantfocus[whichdialogue][indialogue]].coords);
                                                        }
                                                }
                                        }
@@ -1738,83 +1660,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);
@@ -1841,6 +1686,10 @@ int Game::DrawGLScene(StereoSide side)
                        strcat(string,temp);
                        text.glPrintOutlined(1024/30,768*6/8-40,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);
                }