]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameDraw.cpp
Added GPL license and headers.
[lugaru.git] / Source / GameDraw.cpp
index e3cd41b028fcc9783ed9f9618a260fad5bcd3e38..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,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(num<LONGLONGCONST(5000000000000000)){
                num*=1.85421521;
        }
 
-       while(num>9900000000000000){
+       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
                }
@@ -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;
 }
+