X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameDraw.cpp;h=0e153a9420bfd6c07be9c524e868c9dc27d6623f;hb=5c4dee6a92fa23796ada28e5e42dee7721230d3e;hp=5ea481a29d4cb09722da3bf52826873569769162;hpb=8562aa5bebc97ea8a61d056aec3847030c6985b7;p=lugaru.git diff --git a/Source/GameDraw.cpp b/Source/GameDraw.cpp index 5ea481a..0e153a9 100644 --- a/Source/GameDraw.cpp +++ b/Source/GameDraw.cpp @@ -1,4 +1,26 @@ -#include "Game.h" +/* +Copyright (C) 2003, 2010 - Wolfire Games + +This file is part of Lugaru. + +Lugaru 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 2 +of the License, or (at your option) any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "Game.h" +#include "openal_wrapper.h" using namespace std; @@ -13,15 +35,6 @@ extern float sps; extern float viewdistance; extern float fadestart; extern float screenwidth,screenheight; -#ifdef WIN32 -extern HDC hDC; -#elif PLATFORM_MACOSX -extern AGLContext gaglContext; -#elif USE_SDL -extern SDL_Surface *sdlscreen; -#else -#error please define your platform. -#endif extern int kTextureSize; extern FRUSTUM frustum; extern Light light; @@ -162,15 +175,9 @@ extern float accountcampaigntime[10]; extern bool gamestarted; -extern FSOUND_SAMPLE *samp[100]; +extern OPENAL_SAMPLE *samp[100]; extern int channels[100]; -extern "C" void PlaySoundEx(int channel, FSOUND_SAMPLE *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused); - -#ifdef __GNUC__ -#define LONGLONGCONST(x) (x##ll) -#else -#define LONGLONGCONST(x) (x) -#endif +extern "C" void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused); /*********************> DrawGLScene() <*****/ long long Game::MD5_string (char *string){ @@ -188,7 +195,7 @@ long long Game::MD5_string (char *string){ i++; } - num=abs(num); + num=longlongabs(num); if(num==0)num+=1452; while(num.5||oldmainmenu!=mainmenu){ if(mainmenu==5){ - // ifstream ipstream(":Data:Campaigns:main.txt"); - ifstream ipstream("./Data/Campaigns/main.txt"); + ifstream ipstream(ConvertFileName(":Data:Campaigns:main.txt")); //campaignnumlevels=0; //accountcampaignchoicesmade[accountactive]=0; ipstream.ignore(256,':'); @@ -2348,7 +2372,7 @@ int Game::DrawGLScene(GLvoid) /*if(mainmenu!=0)*/oldmainmenu=mainmenu; - if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==119||mainmenu==12||mainmenu==13||mainmenu==14||mainmenu==15||mainmenu==16||mainmenu==17){ + 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){ glClear(GL_DEPTH_BUFFER_BIT); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.001f); @@ -2412,7 +2436,7 @@ int Game::DrawGLScene(GLvoid) glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix if(mainmenu==3){ - nummenuitems=12; + nummenuitems=13; 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; @@ -2496,7 +2520,7 @@ int Game::DrawGLScene(GLvoid) movex[10]=0; movey[10]=0; - sprintf (menustring[11], "Volume: %d%", (int)(volume*100)); + sprintf (menustring[11], "Volume: %d%%", (int)(volume*100)); startx[11]=10+60; starty[11]=155; endx[11]=startx[11]+strlen(menustring[11])*10; @@ -2512,6 +2536,14 @@ int Game::DrawGLScene(GLvoid) movex[7]=0; movey[7]=0; + sprintf (menustring[12], "-Configure Stereo -"); + startx[12]=10+15; + starty[12]=60; + 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; @@ -2678,7 +2710,7 @@ int Game::DrawGLScene(GLvoid) if(accountcampaignchoicesmade[accountactive]) for(i=0;i0) for(i=accountcampaignchoicesmade[accountactive];istartx[i]&&(mousecoordh/screenwidth*640)starty[i]&&480-(mousecoordv/screenheight*480)accountprogress[accountactive]&&jaccountprogress[accountactive]&&j0){ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); - if((mainmenu!=7||j!=0||!entername)&&(mainmenu!=13||j!=1)&&(mainmenu!=14||j!=1))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){ @@ -3634,7 +3534,6 @@ int Game::DrawGLScene(GLvoid) if(1-((float)i)/15-(1-selectedlong[j])>0) { glColor4f(1,0,0,(1-((float)i)/10-(1-selectedlong[j]))*.25); - if(mainmenu==12&&j==4)glColor4f(1,(sin(menupulse)+1)/2,(sin(menupulse)+1)/2,(1-((float)i)/10-(1-selectedlong[j]))*.25); if(mainmenu==9&&j>accountprogress[accountactive]&&jaccountprogress[accountactive]&&j0) { + //printf("Flash amount: %f, delay %i\n", flashamount, flashdelay); if(flashamount>1)flashamount=1; if(flashdelay<=0)flashamount-=multiplier; flashdelay--; @@ -3955,12 +3852,10 @@ int Game::DrawGLScene(GLvoid) //glFlush(); - if(drawmode!=motionblurmode||mainmenu){ -#ifdef WIN32 - if(drawmode!=motionblurmode) SwapBuffers( hDC); -#else - if(drawmode!=motionblurmode)aglSwapBuffers(gaglContext); // send swap command -#endif // send swap command + if ( side == stereoRight || side == stereoCenter ) { + if(drawmode!=motionblurmode||mainmenu){ + swap_gl_buffers(); + } } //myassert(glGetError() == GL_NO_ERROR); @@ -3978,3 +3873,4 @@ int Game::DrawGLScene(GLvoid) //Jordan fixed your warning! return 0; } +