]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameDraw.cpp
Merged FMod changes in
[lugaru.git] / Source / GameDraw.cpp
index b321e7ec0c450e392c24bdd6510bd914eb697348..015a4d55f2f63c5e1185143c46f899b17216023f 100644 (file)
@@ -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;
 
@@ -153,9 +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);
+extern "C"     void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused);
 
 /*********************> DrawGLScene() <*****/
 long long Game::MD5_string (char *string){
@@ -189,7 +211,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;
@@ -1071,10 +1093,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);
-                                                               FSOUND_3D_SetAttributes(channels[whichsoundplay], gLoc, vel);
-                                                               FSOUND_SetVolume(channels[whichsoundplay], 256);
-                                                               FSOUND_SetPaused(channels[whichsoundplay], FALSE);
+                                                               PlaySoundEx( whichsoundplay, samp[whichsoundplay], NULL, true);
+                                                               OPENAL_3D_SetAttributes(channels[whichsoundplay], gLoc, vel);
+                                                               OPENAL_SetVolume(channels[whichsoundplay], 256);
+                                                               OPENAL_SetPaused(channels[whichsoundplay], false);
                                                        }
                                                }
                                        }
@@ -1939,7 +1961,7 @@ int Game::DrawGLScene(GLvoid)
 
                if(drawmode!=normalmode){
                        glEnable(GL_TEXTURE_2D);
-                       //glFinish();
+                       glFinish();
                        if(!drawtoggle||drawmode!=realmotionblurmode||(drawtoggle==2||change==1)){
                                if(screentexture){
 
@@ -2218,6 +2240,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 );
@@ -3940,8 +3966,14 @@ int Game::DrawGLScene(GLvoid)
 
        //glFlush();
        if(drawmode!=motionblurmode||mainmenu){
+        #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);