X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameDraw.cpp;h=ea75d51b0eed5a8e5d972dd6fbe3a01ff4dcae03;hb=b42c969f8e187da68b6fc53b8bb9102f65707434;hp=967fe6802d5695046d08c9de34d9982d2c9a1dc9;hpb=7b6f5477e186f9d5775cb623dcc6f34bd38c4514;p=lugaru.git diff --git a/Source/GameDraw.cpp b/Source/GameDraw.cpp index 967fe68..ea75d51 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; @@ -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; @@ -209,7 +231,6 @@ int Game::DrawGLScene(GLvoid) lastcheck+=multiplier; glColorMask( 1.0, 1.0, 1.0, 1.0 ); - if(!registered)debugmode=0; if(freeze||winfreeze||(mainmenu&&gameon)||(!gameon&&gamestarted)){ @@ -1071,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); - 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 +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){ @@ -2218,6 +2239,10 @@ int Game::DrawGLScene(GLvoid) } if(mainmenu){ + + // !!! FIXME: hack: clamp framerate in menu so text input works correctly on fast systems. + SDL_Delay(15); + glDrawBuffer(GL_BACK); glReadBuffer(GL_BACK); glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); @@ -2332,7 +2357,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){ glClear(GL_DEPTH_BUFFER_BIT); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.001f); @@ -2480,7 +2505,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; @@ -2662,7 +2687,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){ @@ -3618,7 +3477,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]&&j