X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameDraw.cpp;h=1275a45a6f2c843e4461804c6c323ff2ae2c93c3;hb=9a5f2758e538d9216d255b4797f042a1b6874272;hp=e3cd41b028fcc9783ed9f9618a260fad5bcd3e38;hpb=0cca0c495c7dc29d134a10d7eed5de1f377c99bf;p=lugaru.git diff --git a/Source/GameDraw.cpp b/Source/GameDraw.cpp index e3cd41b..1275a45 100644 --- a/Source/GameDraw.cpp +++ b/Source/GameDraw.cpp @@ -1,3 +1,24 @@ +/* +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" using namespace std; @@ -13,11 +34,6 @@ extern float sps; extern float viewdistance; extern float fadestart; extern float screenwidth,screenheight; -#ifdef WIN32 -extern HDC hDC; -#else -extern AGLContext gaglContext; -#endif extern int kTextureSize; extern FRUSTUM frustum; extern Light light; @@ -178,14 +194,14 @@ long long Game::MD5_string (char *string){ i++; } - num=abs(num); + num=longlongabs(num); if(num==0)num+=1452; - while(num<5000000000000000){ + while(num9900000000000000){ + while(num>LONGLONGCONST(9900000000000000)){ num/=1.235421521; } @@ -194,7 +210,7 @@ long long Game::MD5_string (char *string){ //return 1111111111111111; } -int Game::DrawGLScene(GLvoid) +int Game::DrawGLScene(void) { static float texcoordwidth,texcoordheight; static float texviewwidth, texviewheight; @@ -282,7 +298,7 @@ int Game::DrawGLScene(GLvoid) color2.red=0; color2.green=0; color2.blue=0; -#ifndef WIN32 +#if PLATFORM_MACOSX DSpContext_FadeGamma(NULL,200,&color2); #endif } @@ -1076,10 +1092,10 @@ int Game::DrawGLScene(GLvoid) 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); + PlaySoundEx( whichsoundplay, samp[whichsoundplay], NULL, true); FSOUND_3D_SetAttributes(channels[whichsoundplay], gLoc, vel); FSOUND_SetVolume(channels[whichsoundplay], 256); - FSOUND_SetPaused(channels[whichsoundplay], FALSE); + FSOUND_SetPaused(channels[whichsoundplay], false); } } } @@ -1944,7 +1960,7 @@ int Game::DrawGLScene(GLvoid) if(drawmode!=normalmode){ glEnable(GL_TEXTURE_2D); - //glFinish(); + glFinish(); if(!drawtoggle||drawmode!=realmotionblurmode||(drawtoggle==2||change==1)){ if(screentexture){ @@ -2223,6 +2239,10 @@ int Game::DrawGLScene(GLvoid) } if(mainmenu){ +#if USE_SDL + // !!! FIXME: hack: clamp framerate in menu so text input works correctly on fast systems. + SDL_Delay(15); +#endif glDrawBuffer(GL_BACK); glReadBuffer(GL_BACK); glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); @@ -2255,8 +2275,7 @@ int Game::DrawGLScene(GLvoid) } if(lastcheck>.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,':'); @@ -3946,11 +3965,14 @@ 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 !USE_SDL + // this prevents menus from rendering if you hit ESC during + // motion blur sequences...maybe SDL is buffering differently? + if(drawmode!=motionblurmode) + swap_gl_buffers(); + #else + swap_gl_buffers(); + #endif } //myassert(glGetError() == GL_NO_ERROR); @@ -3968,3 +3990,4 @@ int Game::DrawGLScene(GLvoid) //Jordan fixed your warning! return 0; } +