]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameDraw.cpp
Added GPL license and headers.
[lugaru.git] / Source / GameDraw.cpp
index 5127ea9b577e790c093839e3a4ac03773437b5af..c817285a154ee5d3f4774b7000b5619216a7a5d1 100644 (file)
@@ -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,15 +34,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;
@@ -166,12 +178,6 @@ extern FSOUND_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
-
 /*********************> DrawGLScene() <*****/
 long long Game::MD5_string (char *string){
        char temp[256]="";
@@ -204,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;
@@ -1954,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){
 
@@ -2233,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 );
@@ -2265,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,':');
@@ -3956,15 +3965,14 @@ int Game::DrawGLScene(GLvoid)
 
        //glFlush();
        if(drawmode!=motionblurmode||mainmenu){
-#ifdef WIN32
-               if(drawmode!=motionblurmode) SwapBuffers( hDC);
-#elif PLATFORM_MACOSX
-               if(drawmode!=motionblurmode)aglSwapBuffers(gaglContext); // send swap command
-#elif USE_SDL
-        if(drawmode!=motionblurmode)SDL_GL_SwapBuffers();
-#else
-        #error define your platform.
-#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);