X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameDraw.cpp;h=fd2337d5f759d0027d8b2d74e9dba833756b2163;hb=8265984dce72d262e3865ebad4668d98b5b26d4a;hp=12100d7b9a2da2c2769ba403213a524957137ec1;hpb=9b2b1b257c8e3f01c4c414fbaab03f59284eef03;p=lugaru.git diff --git a/Source/GameDraw.cpp b/Source/GameDraw.cpp index 12100d7..fd2337d 100644 --- a/Source/GameDraw.cpp +++ b/Source/GameDraw.cpp @@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "Game.h" #include "openal_wrapper.h" +#include "Input.h" using namespace std; @@ -29,7 +30,7 @@ extern int environment; extern float texscale; extern Light light; extern Terrain terrain; -extern Sprites sprites; +//extern Sprites sprites; extern float multiplier; extern float sps; extern float viewdistance; @@ -72,7 +73,6 @@ extern bool midweird; extern bool proportionweird; extern bool vertexweird[6]; extern bool velocityblur; -extern bool buttons[3]; extern bool debugmode; extern int mainmenu; extern int oldmainmenu; @@ -107,17 +107,7 @@ extern XYZ hotspot[40]; extern int hotspottype[40]; extern float hotspotsize[40]; extern char hotspottext[40][256]; -extern int currenthotspot; - -extern int numaccounts; -extern int accountactive; -extern int accountdifficulty[10]; -extern int accountprogress[10]; -extern float accountpoints[10]; -extern float accounthighscore[10][50]; -extern float accountfasttime[10][50]; -extern bool accountunlocked[10][60]; -extern char accountname[10][256]; +extern int currenthotspot;; extern int numfalls; extern int numflipfail; @@ -165,22 +155,23 @@ extern int directing; extern float dialoguetime; extern int dialoguegonethrough[20]; -extern int accountcampaignchoicesmade[10]; -extern int accountcampaignchoices[10][5000]; - -extern float accountcampaignhighscore[10]; -extern float accountcampaignfasttime[10]; -extern float accountcampaignscore[10]; -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); +void Game::flash() { // shouldn't be that way, these should be attributes and Person class should not change rendering. + flashr=1; + flashg=0; + flashb=0; + flashamount=1; + flashdelay=1; +} /*********************> DrawGLScene() <*****/ -long long Game::MD5_string (char *string){ +long long Game::MD5_string (char* string){ char temp[256]=""; char temp2[256]=""; long long num=90814; @@ -211,7 +202,7 @@ long long Game::MD5_string (char *string){ //return 1111111111111111; } -int Game::DrawGLScene(void) +int Game::DrawGLScene(StereoSide side) { static float texcoordwidth,texcoordheight; static float texviewwidth, texviewheight; @@ -230,8 +221,18 @@ int Game::DrawGLScene(void) lastcheck+=multiplier; - glColorMask( 1.0, 1.0, 1.0, 1.0 ); - + if ( stereomode == stereoAnaglyph ) { + switch(side) { + case stereoLeft: glColorMask( 0.0, 1.0, 1.0, 1.0 ); break; + case stereoRight: glColorMask( 1.0, 0.0, 0.0, 1.0 ); break; + } + } else { + glColorMask( 1.0, 1.0, 1.0, 1.0 ); + + if ( stereomode == stereoHorizontalInterlaced || stereomode == stereoVerticalInterlaced ) { + glStencilFunc(side == stereoLeft ? GL_NOTEQUAL : GL_EQUAL, 0x01, 0x01); + } + } if(freeze||winfreeze||(mainmenu&&gameon)||(!gameon&&gamestarted)){ tempmult=multiplier; @@ -347,6 +348,11 @@ int Game::DrawGLScene(void) glMatrixMode (GL_MODELVIEW); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glLoadIdentity (); + + // Move the camera for the current eye's point of view. + // Reverse the movement if we're reversing stereo + glTranslatef((stereoseparation/2) * side * (stereoreverse ? -1 : 1), 0, 0); + if(!cameramode&&!freeze&&!winfreeze){ glRotatef(float(Random()%100)/10*camerashake/*+(woozy*woozy)/10*/,0,0,1); glRotatef(rotation2+sin(woozy/2)*(player[0].damage/player[0].damagetolerance)*5,1,0,0); @@ -550,29 +556,6 @@ int Game::DrawGLScene(void) } 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); @@ -615,7 +598,7 @@ int Game::DrawGLScene(void) glDepthMask(0); - sprites.Draw(); + Sprite::Draw(); if(editorenabled){ glEnable(GL_BLEND); @@ -735,22 +718,22 @@ int Game::DrawGLScene(void) sprintf (string3, " "); } if(tutorialstage==4){ - sprintf (string, "Try using the %s, %s, %s and %s keys to move around.",KeyToChar(forwardkey),KeyToChar(leftkey),KeyToChar(backkey),KeyToChar(rightkey)); + sprintf (string, "Try using the %s, %s, %s and %s keys to move around.",Input::keyToChar(forwardkey),Input::keyToChar(leftkey),Input::keyToChar(backkey),Input::keyToChar(rightkey)); sprintf (string2, "All movement is relative to the camera."); sprintf (string3, " "); } if(tutorialstage==5){ - sprintf (string, "Please press %s to jump.",KeyToChar(jumpkey)); + sprintf (string, "Please press %s to jump.",Input::keyToChar(jumpkey)); sprintf (string2, "You can hold it longer to jump higher."); sprintf (string3, " "); } if(tutorialstage==6){ - sprintf (string, "You can press %s to crouch.",KeyToChar(crouchkey)); + sprintf (string, "You can press %s to crouch.",Input::keyToChar(crouchkey)); sprintf (string2, "You can jump higher from a crouching position."); sprintf (string3, " "); } if(tutorialstage==7){ - sprintf (string, "While running, you can press %s to roll.",KeyToChar(crouchkey)); + sprintf (string, "While running, you can press %s to roll.",Input::keyToChar(crouchkey)); sprintf (string2, " "); sprintf (string3, " "); } @@ -770,12 +753,12 @@ int Game::DrawGLScene(void) sprintf (string3, " "); } if(tutorialstage==11){ - sprintf (string, "When you jump at a wall, you can hold %s again",KeyToChar(jumpkey)); + sprintf (string, "When you jump at a wall, you can hold %s again",Input::keyToChar(jumpkey)); sprintf (string2, "during impact to perform a walljump."); sprintf (string3, "Be sure to use the movement keys to press against the wall"); } if(tutorialstage==12){ - sprintf (string, "While in the air, you can press crouch to flip.",KeyToChar(jumpkey)); + sprintf (string, "While in the air, you can press crouch to flip.",Input::keyToChar(jumpkey)); sprintf (string2, "Walljumps and flips confuse enemies and give you more control."); sprintf (string3, " "); } @@ -790,8 +773,8 @@ int Game::DrawGLScene(void) sprintf (string3, " "); } if(tutorialstage==15){ - if(attackkey==MAC_MOUSEBUTTON1)sprintf (string, "Click to attack when you are near an enemy."); - else sprintf (string, "Press %s to attack when you are near an enemy.",KeyToChar(attackkey)); + if(attackkey==MOUSEBUTTON1)sprintf (string, "Click to attack when you are near an enemy."); + else sprintf (string, "Press %s to attack when you are near an enemy.",Input::keyToChar(attackkey)); sprintf (string2, "You can punch by standing still near an enemy and attacking."); sprintf (string3, " "); } @@ -817,9 +800,9 @@ int Game::DrawGLScene(void) } if(tutorialstage==20){ sprintf (string, "Your most powerful individual attack is the rabbit kick."); - if(attackkey==MAC_MOUSEBUTTON1)sprintf (string2, "Run at the enemy while holding the mouse button, and press"); - else sprintf (string2, "Run at the enemy while holding %s, and press", KeyToChar(attackkey)); - sprintf (string3, "the jump key (%s) to attack.",KeyToChar(jumpkey)); + if(attackkey==MOUSEBUTTON1)sprintf (string2, "Run at the enemy while holding the mouse button, and press"); + else sprintf (string2, "Run at the enemy while holding %s, and press", Input::keyToChar(attackkey)); + sprintf (string3, "the jump key (%s) to attack.",Input::keyToChar(jumpkey)); } if(tutorialstage==21){ sprintf (string, "This attack is devastating if timed correctly."); @@ -839,8 +822,8 @@ int Game::DrawGLScene(void) } if(tutorialstage==24){ sprintf (string, "You can tackle enemies by running at them animal-style"); - if(attackkey==MAC_MOUSEBUTTON1)sprintf (string2, "and pressing jump (%s) or attack(mouse button).",KeyToChar(jumpkey)); - else sprintf (string2, "and pressing jump (%s) or attack(%s).",KeyToChar(jumpkey),KeyToChar(attackkey)); + if(attackkey==MOUSEBUTTON1)sprintf (string2, "and pressing jump (%s) or attack(mouse button).",Input::keyToChar(jumpkey)); + else sprintf (string2, "and pressing jump (%s) or attack(%s).",Input::keyToChar(jumpkey),Input::keyToChar(attackkey)); sprintf (string3, "This is especially useful when they are running away."); } if(tutorialstage==25){ @@ -861,7 +844,7 @@ int Game::DrawGLScene(void) if(tutorialstage==28){ sprintf (string, "If you attack, you will notice that the enemy now sometimes"); sprintf (string2, "catches your attack and uses it against you. Hold"); - sprintf (string3, "crouch (%s) after attacking to escape from reversals.",KeyToChar(crouchkey)); + sprintf (string3, "crouch (%s) after attacking to escape from reversals.",Input::keyToChar(crouchkey)); } if(tutorialstage==29){ sprintf (string, "Try escaping from two more reversals in a row."); @@ -874,7 +857,7 @@ int Game::DrawGLScene(void) sprintf (string3, " "); } if(tutorialstage==31){ - sprintf (string, "To reverse an attack, you must tap crouch (%s) during the",KeyToChar(crouchkey)); + sprintf (string, "To reverse an attack, you must tap crouch (%s) during the",Input::keyToChar(crouchkey)); sprintf (string2, "enemy's attack. You must also be close to the enemy;"); sprintf (string3, "this is especially important against armed opponents."); } @@ -920,11 +903,11 @@ int Game::DrawGLScene(void) } if(tutorialstage==40){ sprintf (string, "Stand, roll or handspring over the knife"); - sprintf (string2, "while pressing %s to pick it up.",KeyToChar(throwkey)); + sprintf (string2, "while pressing %s to pick it up.",Input::keyToChar(throwkey)); sprintf (string3, "You can crouch and press the same key to drop it again."); } if(tutorialstage==41){ - sprintf (string, "You can equip and unequip weapons using the %s key.",KeyToChar(drawkey)); + sprintf (string, "You can equip and unequip weapons using the %s key.",Input::keyToChar(drawkey)); sprintf (string2, "Sometimes it is best to keep them unequipped to"); sprintf (string3, "prevent enemies from taking them. "); } @@ -964,7 +947,7 @@ int Game::DrawGLScene(void) sprintf (string3, "spin smash is slower and more powerful."); } if(tutorialstage==49){ - sprintf (string, "When facing an enemy, you can throw the knife with %s.",KeyToChar(throwkey)); + sprintf (string, "When facing an enemy, you can throw the knife with %s.",Input::keyToChar(throwkey)); sprintf (string2, "It is possible to throw the knife while flipping,"); sprintf (string3, "but it is very inaccurate."); } @@ -988,7 +971,7 @@ int Game::DrawGLScene(void) text.glPrint(screenwidth/2-7.6*strlen(string2)*screenwidth/1024,screenheight/16+screenheight*4/5-20*screenwidth/1024,string2,1,1.5*screenwidth/1024,screenwidth,screenheight); text.glPrint(screenwidth/2-7.6*strlen(string3)*screenwidth/1024,screenheight/16+screenheight*4/5-40*screenwidth/1024,string3,1,1.5*screenwidth/1024,screenwidth,screenheight); - sprintf (string, "Press 'tab' to skip to the next item.",KeyToChar(jumpkey)); + sprintf (string, "Press 'tab' to skip to the next item.",Input::keyToChar(jumpkey)); sprintf (string2, "Press escape at any time to"); sprintf (string3, "pause or exit the tutorial."); @@ -1218,14 +1201,98 @@ int Game::DrawGLScene(void) if(!tutoriallevel&&!winfreeze&&indialogue==-1&&!mainmenu){ if(campaign){ - if(!scoreadded)sprintf (string, "Score: %d", (int)accountcampaignscore[accountactive]+(int)bonustotal);//(int)bonustotal); - if(scoreadded)sprintf (string, "Score: %d", (int)accountcampaignscore[accountactive]);//(int)bonustotal); + if(!scoreadded)sprintf (string, "Score: %d", (int)accountactive->getCampaignScore()+(int)bonustotal);//(int)bonustotal); + if(scoreadded)sprintf (string, "Score: %d", (int)accountactive->getCampaignScore());//(int)bonustotal); } if(!campaign)sprintf (string, "Score: %d", (int)bonustotal); glColor4f(0,0,0,1); 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); @@ -1507,17 +1574,6 @@ int Game::DrawGLScene(void) glScalef(.25/radius*256*terrain.scale*.4,.25/radius*256*terrain.scale*.4,1); glPushMatrix(); glScalef(1/(1/radius*256*terrain.scale*.4),1/(1/radius*256*terrain.scale*.4),1); - /*float startx,starty,endx,endy; - glBegin(GL_QUADS); - glTexCoord2f(1-(center.x-radius)/terrain.scale/256,(center.z-radius)/terrain.scale/256); - glVertex3f(-1, -1, 0.0f); - glTexCoord2f(1-(center.x+radius)/terrain.scale/256,(center.z-radius)/terrain.scale/256); - glVertex3f(1, -1, 0.0f); - glTexCoord2f(1-(center.x+radius)/terrain.scale/256,(center.z+radius)/terrain.scale/256); - glVertex3f(1, 1, 0.0f); - glTexCoord2f(1-(center.x-radius)/terrain.scale/256,(center.z+radius)/terrain.scale/256); - glVertex3f(-1, 1, 0.0f); - glEnd();*/ glPopMatrix(); glRotatef(player[0].lookrotation*-1+180,0,0,1); glTranslatef(-(center.x/terrain.scale/256*-2+1),(center.z/terrain.scale/256*-2+1),0); @@ -1611,27 +1667,9 @@ int Game::DrawGLScene(void) glTexCoord2f(0,1); glVertex3f(-1, 1, 0.0f); glEnd(); - /*glBegin(GL_TRIANGLES); - glTexCoord2f(0,0); - glVertex3f(-1, -1, 0.0f); - glTexCoord2f(1,0); - glVertex3f(1, -1, 0.0f); - glTexCoord2f(1,1); - glVertex3f(0, 1, 0.0f); - glEnd();*/ glPopMatrix(); } } - /*glBegin(GL_QUADS); - glTexCoord2f(0,0); - glVertex3f(-1, -1, 0.0f); - glTexCoord2f(1,0); - glVertex3f(1, -1, 0.0f); - glTexCoord2f(1,1); - glVertex3f(1, 1, 0.0f); - glTexCoord2f(0,1); - glVertex3f(-1, 1, 0.0f); - glEnd();*/ glPopMatrix(); glDisable(GL_TEXTURE_2D); glMatrixMode(GL_PROJECTION); // Select The Projection Matrix @@ -1644,12 +1682,6 @@ int Game::DrawGLScene(void) glDepthMask(1); } - /*if(loading){ - loading=2; - drawmode=normalmode; - }*/ - - if(loading&&!stealthloading&&(!campaign||player[0].dead)){ glDisable(GL_DEPTH_TEST); // Disables Depth Testing glDisable(GL_CULL_FACE); @@ -1687,47 +1719,6 @@ int Game::DrawGLScene(void) glColor3f (1.0, 1.0, 1.0); // no coloring glEnable(GL_TEXTURE_2D); - /*glBindTexture( GL_TEXTURE_2D, logotexture); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); - 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((float)screenwidth/2,(float)screenwidth/2,1); - glTranslatef(1.8,1.25,0); - glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - glColor4f(1,1,1,1); - glPushMatrix(); - glScalef(.25,.25,.25); - glBegin(GL_QUADS); - glTexCoord2f(0,0); - glVertex3f(-1, -1, 0.0f); - glTexCoord2f(1,0); - glVertex3f(1, -1, 0.0f); - glTexCoord2f(1,1); - glVertex3f(1, 1, 0.0f); - glTexCoord2f(0,1); - glVertex3f(-1, 1, 0.0f); - glEnd(); - glPopMatrix(); - 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);*/ //Minimap @@ -1779,47 +1770,6 @@ int Game::DrawGLScene(void) glColor3f (1.0, 1.0, 1.0); // no coloring glEnable(GL_TEXTURE_2D); - /*glBindTexture( GL_TEXTURE_2D, logotexture); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); - 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((float)screenwidth/2,(float)screenwidth/2,1); - glTranslatef(1.8,1.25,0); - glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - glColor4f(1,1,1,1); - glPushMatrix(); - glScalef(.25,.25,.25); - glBegin(GL_QUADS); - glTexCoord2f(0,0); - glVertex3f(-1, -1, 0.0f); - glTexCoord2f(1,0); - glVertex3f(1, -1, 0.0f); - glTexCoord2f(1,1); - glVertex3f(1, 1, 0.0f); - glTexCoord2f(0,1); - glVertex3f(-1, 1, 0.0f); - glEnd(); - glPopMatrix(); - 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);*/ //Awards int numawards; @@ -1832,76 +1782,73 @@ int Game::DrawGLScene(void) } bool alldead; alldead=1; - if(numplayers>1) - for(i=1;i1) - for(i=1;i0){ - 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; - if(numplayers>1) - for(i=1;i0&&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++; - } + for(i=1;i0){ + 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;i0&&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 @@ -2253,31 +2200,19 @@ int Game::DrawGLScene(void) if(texdetail>2)texdetail=2; if(mainmenu!=oldmainmenu&&oldmainmenu!=0){ if(mainmenu==1){ - LoadTexture("Data/Textures/Newgame.png",&Mainmenuitems[1],0,0); - LoadTexture("Data/Textures/Quit.png",&Mainmenuitems[3],0,0); - /*if(oldmainmenu==1||oldmainmenu==0){ - LoadTexture("Data/Textures/World.png",&Mainmenuitems[7],0,0); - LoadTexture("Data/Textures/Options.png",&Mainmenuitems[2],0,0); - LoadTexture("Data/Textures/Lugaru.png",&Mainmenuitems[0],0,0); - loaddistrib=0; - }*/ + LoadTexture(":Data:Textures:Newgame.png",&Mainmenuitems[1],0,0); + LoadTexture(":Data:Textures:Quit.png",&Mainmenuitems[3],0,0); } if(mainmenu==2){ - LoadTexture("Data/Textures/Resume.png",&Mainmenuitems[1],0,0); - LoadTexture("Data/Textures/Endgame.png",&Mainmenuitems[3],0,0); - /*if(oldmainmenu==2||oldmainmenu==0){ - LoadTexture("Data/Textures/World.png",&Mainmenuitems[7],0,0); - LoadTexture("Data/Textures/Options.png",&Mainmenuitems[2],0,0); - LoadTexture("Data/Textures/Lugaru.png",&Mainmenuitems[0],0,0); - loaddistrib=0; - }*/ + LoadTexture(":Data:Textures:Resume.png",&Mainmenuitems[1],0,0); + LoadTexture(":Data:Textures:Endgame.png",&Mainmenuitems[3],0,0); } } if(lastcheck>.5||oldmainmenu!=mainmenu){ if(mainmenu==5){ - ifstream ipstream(ConvertFileName("Data/Campaigns/main.txt")); + ifstream ipstream(ConvertFileName(":Data:Campaigns:main.txt")); //campaignnumlevels=0; - //accountcampaignchoicesmade[accountactive]=0; + //accountactive->getCampaignChoicesMade()=0; ipstream.ignore(256,':'); ipstream >> campaignnumlevels; for(i=0;igetCampaignChoicesMade()) + for(i=0;igetCampaignChoicesMade();i++){ + levelorder[i+1]=campaignnextlevel[levelorder[i]][accountactive->getCampaignChoice(i)]; levelvisible[levelorder[i+1]]=1; } int whichlevelstart; - whichlevelstart=accountcampaignchoicesmade[accountactive]-1; + whichlevelstart=accountactive->getCampaignChoicesMade()-1; if(whichlevelstart<0){ - accountcampaignscore[accountactive]=0; - accountcampaignfasttime[accountactive]=0; + accountactive->setCampaignScore(0); + accountactive->resetFasttime(); campaignchoicenum=1; campaignchoicewhich[0]=0; } @@ -2333,8 +2268,7 @@ int Game::DrawGLScene(void) { campaignchoicenum=campaignnumnext[levelorder[whichlevelstart]]; if(campaignchoicenum==0){ - if(accountcampaignscore[accountactive]>accountcampaignhighscore[accountactive])accountcampaignhighscore[accountactive]=accountcampaignscore[accountactive]; - if(accountcampaignfasttime[accountactive]==0||accountcampaigntime[accountactive]getCampaignFasttime()==0||accountcampaigntime[accountactive]getCampaignFasttime())accountactive->getCampaignFasttime()=accountcampaigntime[accountactive]; } if(campaignchoicenum) for(i=0;i(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; @@ -2507,20 +2441,36 @@ int Game::DrawGLScene(void) 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; movey[7]=0; + sprintf (menustring[12], "-Configure Stereo -"); + startx[12]=10+15; + starty[12]=55; + endx[12]=startx[12]+strlen(menustring[7])*10; + endy[12]=starty[12]+20; + movex[12]=0; + movey[12]=0; + if(newdetail==detail&&newscreenheight==(int)screenheight&&newscreenwidth==(int)screenwidth)sprintf (menustring[8], "Back"); else sprintf (menustring[8], "Back (some changes take effect next time Lugaru is opened)"); startx[8]=10; @@ -2533,7 +2483,7 @@ int Game::DrawGLScene(void) if(mainmenu==4){ nummenuitems=10; - if(keyselect!=0)sprintf (menustring[0], "Forwards: %s",KeyToChar(forwardkey)); + if(keyselect!=0)sprintf (menustring[0], "Forwards: %s",Input::keyToChar(forwardkey)); else sprintf (menustring[0], "Forwards: _"); startx[0]=10; starty[0]=400; @@ -2542,7 +2492,7 @@ int Game::DrawGLScene(void) movex[0]=0; movey[0]=0; - if(keyselect!=1)sprintf (menustring[1], "Back: %s",KeyToChar(backkey)); + if(keyselect!=1)sprintf (menustring[1], "Back: %s",Input::keyToChar(backkey)); else sprintf (menustring[1], "Back: _"); startx[1]=10+40; starty[1]=360; @@ -2551,7 +2501,7 @@ int Game::DrawGLScene(void) movex[1]=0; movey[1]=0; - if(keyselect!=2)sprintf (menustring[2], "Left: %s",KeyToChar(leftkey)); + if(keyselect!=2)sprintf (menustring[2], "Left: %s",Input::keyToChar(leftkey)); else sprintf (menustring[2], "Left: _"); startx[2]=10+40; starty[2]=320; @@ -2560,7 +2510,7 @@ int Game::DrawGLScene(void) movex[2]=0; movey[2]=0; - if(keyselect!=3)sprintf (menustring[3], "Right: %s",KeyToChar(rightkey)); + if(keyselect!=3)sprintf (menustring[3], "Right: %s",Input::keyToChar(rightkey)); else sprintf (menustring[3], "Right: _"); startx[3]=10+30; starty[3]=280; @@ -2569,7 +2519,7 @@ int Game::DrawGLScene(void) movex[3]=0; movey[3]=0; - if(keyselect!=4)sprintf (menustring[4], "Crouch: %s",KeyToChar(crouchkey)); + if(keyselect!=4)sprintf (menustring[4], "Crouch: %s",Input::keyToChar(crouchkey)); else sprintf (menustring[4], "Crouch: _"); startx[4]=10+20; starty[4]=240; @@ -2578,7 +2528,7 @@ int Game::DrawGLScene(void) movex[4]=0; movey[4]=0; - if(keyselect!=5)sprintf (menustring[5], "Jump: %s",KeyToChar(jumpkey)); + if(keyselect!=5)sprintf (menustring[5], "Jump: %s",Input::keyToChar(jumpkey)); else sprintf (menustring[5], "Jump: _"); startx[5]=10+40; starty[5]=200; @@ -2587,7 +2537,7 @@ int Game::DrawGLScene(void) movex[5]=0; movey[5]=0; - if(keyselect!=6)sprintf (menustring[6], "Draw: %s",KeyToChar(drawkey)); + if(keyselect!=6)sprintf (menustring[6], "Draw: %s",Input::keyToChar(drawkey)); else sprintf (menustring[6], "Draw: _"); startx[6]=10+40; starty[6]=160; @@ -2596,7 +2546,7 @@ int Game::DrawGLScene(void) movex[6]=0; movey[6]=0; - if(keyselect!=7)sprintf (menustring[7], "Throw: %s",KeyToChar(throwkey)); + if(keyselect!=7)sprintf (menustring[7], "Throw: %s",Input::keyToChar(throwkey)); else sprintf (menustring[7], "Throw: _"); startx[7]=10+30; starty[7]=120; @@ -2605,7 +2555,7 @@ int Game::DrawGLScene(void) movex[7]=0; movey[7]=0; - if(keyselect!=8)sprintf (menustring[8], "Attack: %s",KeyToChar(attackkey)); + if(keyselect!=8)sprintf (menustring[8], "Attack: %s",Input::keyToChar(attackkey)); else sprintf (menustring[8], "Attack: _"); startx[8]=10+20; starty[8]=80; @@ -2625,9 +2575,9 @@ int Game::DrawGLScene(void) movey[9]=0; } if(mainmenu==5){ - nummenuitems=7+accountcampaignchoicesmade[accountactive]+campaignchoicenum; + nummenuitems=7+accountactive->getCampaignChoicesMade()+campaignchoicenum; - sprintf (menustring[0], "%s",accountname[accountactive]); + sprintf (menustring[0], "%s",accountactive->getName()); startx[0]=5; starty[0]=400; endx[0]=startx[0]+strlen(menustring[0])*10; @@ -2685,8 +2635,8 @@ int Game::DrawGLScene(void) movex[6]=0; movey[6]=0; - if(accountcampaignchoicesmade[accountactive]) - for(i=0;igetCampaignChoicesMade()) + for(i=0;igetCampaignChoicesMade();i++){ sprintf (menustring[7+i], "%s", campaigndescription[levelorder[i]]); startx[7+i]=30+120+campaignlocationx[levelorder[i]]*400/512; starty[7+i]=30+30+(512-campaignlocationy[levelorder[i]])*400/512; @@ -2697,10 +2647,10 @@ int Game::DrawGLScene(void) } if(campaignchoicenum>0) - for(i=accountcampaignchoicesmade[accountactive];igetCampaignChoicesMade();igetCampaignChoicesMade()+campaignchoicenum;i++){ sprintf (menustring[7+i], "%s", campaigndescription[levelorder[i]]); - startx[7+i]=30+120+campaignlocationx[campaignchoicewhich[i-(accountcampaignchoicesmade[accountactive])]]*400/512; - starty[7+i]=30+30+(512-campaignlocationy[campaignchoicewhich[i-(accountcampaignchoicesmade[accountactive])]])*400/512; + startx[7+i]=30+120+campaignlocationx[campaignchoicewhich[i-(accountactive->getCampaignChoicesMade())]]*400/512; + starty[7+i]=30+30+(512-campaignlocationy[campaignchoicewhich[i-(accountactive->getCampaignChoicesMade())]])*400/512; endx[7+i]=startx[7+i]+10; endy[7+i]=starty[7+i]+10; movex[7+i]=0; @@ -2800,12 +2750,12 @@ int Game::DrawGLScene(void) movey[5]=0; } - if(mainmenu==7){ - nummenuitems=numaccounts+2; + if(mainmenu==7){ + nummenuitems=Account::getNbAccounts()+2; int num; - if(numaccounts<8) + if(Account::getNbAccounts()<8) sprintf (menustring[0], "New User"); else sprintf (menustring[0], "No More Users"); @@ -2816,30 +2766,30 @@ int Game::DrawGLScene(void) movex[0]=0; movey[0]=0; - if(entername)startx[0]+=10; + if(entername) + startx[0]+=10; num=1; - if(numaccounts) - for(i=0;igetName()); startx[num]=10; + starty[num]=360-20-20*num; endx[num]=startx[num]+strlen(menustring[num])*10; - starty[num]=10; endy[num]=starty[num]+20; movex[num]=0; movey[num]=0; + + num++; + } + + sprintf (menustring[num], "Back"); + startx[num]=10; + endx[num]=startx[num]+strlen(menustring[num])*10; + starty[num]=10; + endy[num]=starty[num]+20; + movex[num]=0; + movey[num]=0; } if(mainmenu==8){ nummenuitems=3; @@ -2881,14 +2831,14 @@ int Game::DrawGLScene(void) 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)accounthighscore[accountactive][j]); + 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)accountfasttime[accountactive][j]-(int)(accountfasttime[accountactive][j])%60)/60)); + sprintf (temp, "%d:",(int)(((int)accountactive->getFastTime(j)-(int)(accountactive->getFastTime(j))%60)/60)); strcat(menustring[j],temp); - if((int)(accountfasttime[accountactive][j])%60<10)strcat(menustring[j],"0"); - sprintf (temp, "%d",(int)(accountfasttime[accountactive][j])%60); + 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; @@ -2928,14 +2878,14 @@ int Game::DrawGLScene(void) 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)accounthighscore[accountactive][j]); + 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)accountfasttime[accountactive][j]-(int)(accountfasttime[accountactive][j])%60)/60)); + sprintf (temp, "%d:",(int)(((int)accountactive->getFastTime(j)-(int)(accountactive->getFastTime(j))%60)/60)); strcat(menustring[j],temp); - if((int)(accountfasttime[accountactive][j])%60<10)strcat(menustring[j],"0"); - sprintf (temp, "%d",(int)(accountfasttime[accountactive][j])%60); + 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; @@ -3004,7 +2954,7 @@ int Game::DrawGLScene(void) strcpy(menustring[4],temp); for(i=0;i<20;i++)if(menustring[4][i]=='\0')menustring[4][i]=' '; menustring[4][20]='\0'; - sprintf (temp, "%d",(int)accountcampaignscore[accountactive]); + sprintf (temp, "%d",(int)accountactive->getCampaignScore()); strcat(menustring[4],temp); startx[4]=190; endx[4]=startx[4]+strlen(menustring[4])*10; @@ -3032,7 +2982,7 @@ int Game::DrawGLScene(void) strcpy(menustring[5],temp); for(i=0;i<20;i++)if(menustring[5][i]=='\0')menustring[5][i]=' '; menustring[5][20]='\0'; - sprintf (temp, "%d",(int)accountcampaignhighscore[accountactive]); + sprintf (temp, "%d",(int)accountactive->getCampaignHighScore()); strcat(menustring[5],temp); startx[5]=190; endx[5]=startx[5]+strlen(menustring[5])*10; @@ -3046,7 +2996,7 @@ int Game::DrawGLScene(void) strcpy(menustring[7],temp); for(i=0;i<20;i++)if(menustring[7][i]=='\0')menustring[7][i]=' '; menustring[7][20]='\0'; - sprintf (temp, "%d",(int)accountcampaignfasttime[accountactive]); + sprintf (temp, "%d",(int)accountactive->getCampaignFasttime()); strcat(menustring[7],temp); startx[7]=200; endx[7]=startx[7]+strlen(menustring[7])*10; @@ -3055,6 +3005,40 @@ int Game::DrawGLScene(void) movex[7]=0; movey[7]=0;*/ } + if (mainmenu==18) { + nummenuitems=4; + sprintf (menustring[0], "Stereo mode: %s", StereoModeName(newstereomode)); + startx[0]=70; + starty[0]=400; + endx[0]=startx[0]+strlen(menustring[0])*10; + endy[0]=starty[0]+20; + movex[0]=0; + movey[0]=0; + + sprintf (menustring[1], "Stereo separation: %.3f", stereoseparation); + startx[1]=10; + starty[1]=360; + endx[1]=startx[1]+strlen(menustring[1])*10; + endy[1]=starty[1]+20; + movex[1]=0; + movey[1]=0; + + sprintf (menustring[2], "Reverse stereo: %s", stereoreverse ? "Yes" : "No"); + startx[2]=40; + starty[2]=320; + endx[2]=startx[2]+strlen(menustring[2])*10; + endy[2]=starty[2]+20; + movex[2]=0; + movey[2]=0; + + sprintf (menustring[3], "Back"); + startx[3]=10; + endx[3]=startx[3]+strlen(menustring[3])*10; + starty[3]=10; + endy[3]=starty[3]+20; + movex[3]=0; + movey[3]=0; + } } if(mainmenu==13){ @@ -3244,7 +3228,7 @@ int Game::DrawGLScene(void) } } - if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==11||mainmenu==13||mainmenu==17) + 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) for(i=0;istartx[i]&&(mousecoordh/screenwidth*640)starty[i]&&480-(mousecoordv/screenheight*480)accountprogress[accountactive]&&jaccountprogress[accountactive]&&jaccountactive->getProgress()&&jaccountactive->getProgress()&&j0){ 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;l0) { glColor4f(1,0,0,(1-((float)i)/10-(1-selectedlong[j]))*.25); - if(mainmenu==9&&j>accountprogress[accountactive]&&jaccountprogress[accountactive]&&jaccountactive->getProgress()&&jaccountactive->getProgress()&&j=6+accountcampaignchoicesmade[accountactive]){ - linestart.x=(startx[6+accountcampaignchoicesmade[accountactive]]+endx[6+accountcampaignchoicesmade[accountactive]])/2; - linestart.y=(starty[6+accountcampaignchoicesmade[accountactive]]+endy[6+accountcampaignchoicesmade[accountactive]])/2; + if(j>=6+accountactive->getCampaignChoicesMade()){ + linestart.x=(startx[6+accountactive->getCampaignChoicesMade()]+endx[6+accountactive->getCampaignChoicesMade()])/2; + linestart.y=(starty[6+accountactive->getCampaignChoicesMade()]+endy[6+accountactive->getCampaignChoicesMade()])/2; } lineend.x=(startx[j+1]+endx[j+1])/2; lineend.y=(starty[j+1]+endy[j+1])/2; @@ -3555,12 +3531,12 @@ int Game::DrawGLScene(void) Normalise(&offset); glDisable(GL_TEXTURE_2D); - if(j<6+accountcampaignchoicesmade[accountactive]){ + if(j<6+accountactive->getCampaignChoicesMade()){ glColor4f(0.5,0,0,1); startsize=.5; endsize=.5; } - if(j>=6+accountcampaignchoicesmade[accountactive]){ + if(j>=6+accountactive->getCampaignChoicesMade()){ glColor4f(1,0,0,1); endsize=1; startsize=.5; @@ -3569,7 +3545,7 @@ int Game::DrawGLScene(void) linestart+=fac*4*startsize; lineend-=fac*4*endsize; - if(!(j>7+accountcampaignchoicesmade[accountactive]+campaignchoicenum)){ + if(!(j>7+accountactive->getCampaignChoicesMade()+campaignchoicenum)){ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); glBegin(GL_QUADS); @@ -3592,8 +3568,8 @@ int Game::DrawGLScene(void) else glBindTexture( GL_TEXTURE_2D, Mapcircletexture); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); - if(j-7=accountcampaignchoicesmade[accountactive])glColor4f(1,0,0,1); + if(j-7getCampaignChoicesMade())glColor4f(0.5,0,0,1); + if(j-7>=accountactive->getCampaignChoicesMade())glColor4f(1,0,0,1); if(j==6)glColor4f(1,1,1,1); XYZ midpoint; float itemsize; @@ -3601,8 +3577,8 @@ int Game::DrawGLScene(void) midpoint=0; midpoint.x=(startx[j]+endx[j])/2; midpoint.y=(starty[j]+endy[j])/2; - if(j>6&&(j-7accountcampaignchoicesmade[accountactive]+campaignchoicenum)) + if(j>6&&(j-7getCampaignChoicesMade()))itemsize*=.5; + if(!(j-7>accountactive->getCampaignChoicesMade()+campaignchoicenum)) { glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); @@ -3647,7 +3623,7 @@ int Game::DrawGLScene(void) glPopMatrix(); glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix - if(j-7>=accountcampaignchoicesmade[accountactive]){ + if(j-7>=accountactive->getCampaignChoicesMade()){ //glColor4f(0,0,0,1); //text.glPrintOutline(startx[j]+10-1.5,starty[j]-4-1.5,menustring[j],0,0.6*1.25,640,480); //glColor4f(1,0,0,1); @@ -3721,27 +3697,29 @@ int Game::DrawGLScene(void) glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP ); glPopMatrix(); - glPushMatrix(); - glTranslatef(mousecoordh-screenwidth/2,mousecoordv*-1+screenheight/2,0); - glScalef((float)screenwidth/64,(float)screenwidth/64,1); - glTranslatef(1,-1,0); - glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); - glColor4f(1,1,1,1); - glBindTexture( GL_TEXTURE_2D, cursortexture); + if(!waiting) { // hide the cursor while waiting for a key glPushMatrix(); - //glScalef(.25,.25,.25); - glBegin(GL_QUADS); - glTexCoord2f(0,0); - glVertex3f(-1, -1, 0.0f); - glTexCoord2f(1,0); - glVertex3f(1, -1, 0.0f); - glTexCoord2f(1,1); - glVertex3f(1, 1, 0.0f); - glTexCoord2f(0,1); - glVertex3f(-1, 1, 0.0f); - glEnd(); + glTranslatef(mousecoordh-screenwidth/2,mousecoordv*-1+screenheight/2,0); + glScalef((float)screenwidth/64,(float)screenwidth/64,1); + glTranslatef(1,-1,0); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + glColor4f(1,1,1,1); + glBindTexture( GL_TEXTURE_2D, cursortexture); + glPushMatrix(); + //glScalef(.25,.25,.25); + glBegin(GL_QUADS); + glTexCoord2f(0,0); + glVertex3f(-1, -1, 0.0f); + glTexCoord2f(1,0); + glVertex3f(1, -1, 0.0f); + glTexCoord2f(1,1); + glVertex3f(1, 1, 0.0f); + glTexCoord2f(0,1); + glVertex3f(-1, 1, 0.0f); + glEnd(); + glPopMatrix(); glPopMatrix(); - glPopMatrix(); + } glPopMatrix(); glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glPopMatrix(); @@ -3749,6 +3727,7 @@ int Game::DrawGLScene(void) if(flashamount>0) { + //printf("Flash amount: %f, delay %i\n", flashamount, flashdelay); if(flashamount>1)flashamount=1; if(flashdelay<=0)flashamount-=multiplier; flashdelay--; @@ -3791,12 +3770,12 @@ int Game::DrawGLScene(void) multiplier=0; } - //glFlush(); - if(drawmode!=motionblurmode||mainmenu){ - - swap_gl_buffers(); - } + if ( side == stereoRight || side == stereoCenter ) { + if(drawmode!=motionblurmode||mainmenu){ + swap_gl_buffers(); + } + } //myassert(glGetError() == GL_NO_ERROR); glDrawBuffer(GL_BACK);