From: Vadim Trochinsky Date: Thu, 20 May 2010 20:57:06 +0000 (+0200) Subject: merge X-Git-Url: https://git.jsancho.org/?a=commitdiff_plain;h=ca0addc190070545ea6204dfb4132f196d7acd1c;hp=-c;p=lugaru.git merge --- ca0addc190070545ea6204dfb4132f196d7acd1c diff --combined CMakeLists.txt index c56a43a,4280154..766bd37 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@@ -77,7 -77,7 +77,8 @@@ set(LUGARU_SRC ${SRCDIR}/OpenGL_Windows.cpp ${SRCDIR}/openal_wrapper.cpp ${SRCDIR}/WinInput.cpp + ${SRCDIR}/Settings.cpp + ${SRCDIR}/Stereo.cpp ) set(LUGARU_H @@@ -111,7 -111,7 +112,8 @@@ ${SRCDIR}/pack_private.h ${SRCDIR}/private.h ${SRCDIR}/unpack_private.h + ${SRCDIR}/Settings.h + ${SRCDIR}/Stereo.h ) if(UNIX) diff --combined Source/GameTick.cpp index a8d0c28,57d7722..8010f4f --- a/Source/GameTick.cpp +++ b/Source/GameTick.cpp @@@ -30,6 -30,7 +30,7 @@@ Foundation, Inc., 59 Temple Place - Sui #include #include "Game.h" #include "openal_wrapper.h" + #include "Settings.h" using namespace std; @@@ -1184,7 -1185,7 +1185,7 @@@ void Screenshot (void char temp[1024]; time_t t = time(NULL); struct tm *tme = localtime(&t); - sprintf(temp, "Screenshots\\Screenshot_%04d_%02d_%02d--%02d_%02d_%02d.png", tme->tm_year + 1900, tme->tm_mon + 1, tme->tm_mday, tme->tm_hour, tme->tm_min, tme->tm_sec); + sprintf(temp, "Screenshots/Screenshot_%04d_%02d_%02d--%02d_%02d_%02d.png", tme->tm_year + 1900, tme->tm_mon + 1, tme->tm_mday, tme->tm_hour, tme->tm_min, tme->tm_sec); #if defined(_WIN32) mkdir("Screenshots"); @@@ -2608,43 -2609,6 +2609,43 @@@ void Game::Tick( static bool mainmenutogglekeydown; + + if (IsKeyDown(theKeyMap, MAC_F6_KEY) && !freezetogglekeydown) { + if (IsKeyDown(theKeyMap, MAC_SHIFT_KEY)) { + stereoreverse=true; + } else { + stereoreverse=false; + } + + if (stereoreverse) { + printf("Stereo reversed\n"); + } else { + printf("Stereo unreversed\n"); + } + freezetogglekeydown=1; + } + + if (IsKeyDown(theKeyMap, MAC_F7_KEY)) { + if (IsKeyDown(theKeyMap, MAC_SHIFT_KEY)) { + stereoseparation -= 0.001; + } else { + stereoseparation -= 0.010; + } + + printf("Stereo decreased increased to %f\n", stereoseparation); + } + + if (IsKeyDown(theKeyMap, MAC_F8_KEY)) { + if (IsKeyDown(theKeyMap, MAC_SHIFT_KEY)) { + stereoseparation += 0.001; + } else { + stereoseparation += 0.010; + } + + printf("Stereo separation increased to %f\n", stereoseparation); + } + + if(!console){ if(mainmenu&&endgame==1)mainmenu=10; if(IsKeyDown(theKeyMap, MAC_ESCAPE_KEY)&&!mainmenutogglekeydown&&(mainmenu==7&&entername)){ @@@ -2787,87 -2751,7 +2788,7 @@@ if(newscreenwidth<0)newscreenwidth=screenwidth; if(newscreenheight<0)newscreenheight=screenheight; - ofstream opstream(ConvertFileName(":Data:config.txt", "w")); - opstream << "Screenwidth:\n"; - opstream << newscreenwidth; - opstream << "\nScreenheight:\n"; - opstream << newscreenheight; - opstream << "\nMouse sensitivity:\n"; - opstream << usermousesensitivity; - opstream << "\nBlur(0,1):\n"; - opstream << ismotionblur; - opstream << "\nOverall Detail(0,1,2) higher=better:\n"; - opstream << newdetail; - opstream << "\nFloating jump:\n"; - opstream << floatjump; - opstream << "\nMouse jump:\n"; - opstream << mousejump; - opstream << "\nAmbient sound:\n"; - opstream << ambientsound; - opstream << "\nBlood (0,1,2):\n"; - opstream << bloodtoggle; - opstream << "\nAuto slomo:\n"; - opstream << autoslomo; - opstream << "\nFoliage:\n"; - opstream << foliage; - opstream << "\nMusic:\n"; - opstream << musictoggle; - opstream << "\nTrilinear:\n"; - opstream << trilinear; - opstream << "\nDecals(shadows,blood puddles,etc):\n"; - opstream << decals; - opstream << "\nInvert mouse:\n"; - opstream << invertmouse; - opstream << "\nGamespeed:\n"; - if(oldgamespeed==0)oldgamespeed=1; - opstream << oldgamespeed; - opstream << "\nDifficulty(0,1,2) higher=harder:\n"; - opstream << difficulty; - opstream << "\nDamage effects(blackout, doublevision):\n"; - opstream << damageeffects; - opstream << "\nText:\n"; - opstream << texttoggle; - opstream << "\nDebug:\n"; - opstream << debugmode; - opstream << "\nVBL Sync:\n"; - opstream << vblsync; - opstream << "\nShow Points:\n"; - opstream << showpoints; - opstream << "\nAlways Blur:\n"; - opstream << alwaysblur; - opstream << "\nImmediate mode (turn on on G5):\n"; - opstream << immediate; - opstream << "\nVelocity blur:\n"; - opstream << velocityblur; - opstream << "\nVolume:\n"; - opstream << volume; - opstream << "\nForward key:\n"; - opstream << KeyToChar(forwardkey); - opstream << "\nBack key:\n"; - opstream << KeyToChar(backkey); - opstream << "\nLeft key:\n"; - opstream << KeyToChar(leftkey); - opstream << "\nRight key:\n"; - opstream << KeyToChar(rightkey); - opstream << "\nJump key:\n"; - opstream << KeyToChar(jumpkey); - opstream << "\nCrouch key:\n"; - opstream << KeyToChar(crouchkey); - opstream << "\nDraw key:\n"; - opstream << KeyToChar(drawkey); - opstream << "\nThrow key:\n"; - opstream << KeyToChar(throwkey); - opstream << "\nAttack key:\n"; - opstream << KeyToChar(attackkey); - opstream << "\nChat key:\n"; - opstream << KeyToChar(chatkey); - opstream << "\nStereoMode:\n"; - opstream << stereomode; - opstream << "\nStereoSeparation:\n"; - opstream << stereoseparation; - opstream << "\nStereoReverse:\n"; - opstream << stereoreverse; - opstream.close(); + SaveSettings(*this); } if(mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==9||mainmenu==13||mainmenu==10||mainmenu==11||mainmenu==100){ float gLoc[3]={0,0,0}; @@@ -3188,88 -3072,7 +3109,7 @@@ if(newscreenheight<0)newscreenheight=screenheight; - ofstream opstream(ConvertFileName(":Data:config.txt", "w")); - opstream << "Screenwidth:\n"; - opstream << newscreenwidth; - opstream << "\nScreenheight:\n"; - opstream << newscreenheight; - opstream << "\nMouse sensitivity:\n"; - opstream << usermousesensitivity; - opstream << "\nBlur(0,1):\n"; - opstream << ismotionblur; - opstream << "\nOverall Detail(0,1,2) higher=better:\n"; - opstream << newdetail; - opstream << "\nFloating jump:\n"; - opstream << floatjump; - opstream << "\nMouse jump:\n"; - opstream << mousejump; - opstream << "\nAmbient sound:\n"; - opstream << ambientsound; - opstream << "\nBlood (0,1,2):\n"; - opstream << bloodtoggle; - opstream << "\nAuto slomo:\n"; - opstream << autoslomo; - opstream << "\nFoliage:\n"; - opstream << foliage; - opstream << "\nMusic:\n"; - opstream << musictoggle; - opstream << "\nTrilinear:\n"; - opstream << trilinear; - opstream << "\nDecals(shadows,blood puddles,etc):\n"; - opstream << decals; - opstream << "\nInvert mouse:\n"; - opstream << invertmouse; - opstream << "\nGamespeed:\n"; - if(oldgamespeed==0)oldgamespeed=1; - opstream << oldgamespeed; - opstream << "\nDifficulty(0,1,2) higher=harder:\n"; - opstream << difficulty; - opstream << "\nDamage effects(blackout, doublevision):\n"; - opstream << damageeffects; - opstream << "\nText:\n"; - opstream << texttoggle; - opstream << "\nDebug:\n"; - opstream << debugmode; - opstream << "\nVBL Sync:\n"; - opstream << vblsync; - opstream << "\nShow Points:\n"; - opstream << showpoints; - opstream << "\nAlways Blur:\n"; - opstream << alwaysblur; - opstream << "\nImmediate mode (turn on on G5):\n"; - opstream << immediate; - opstream << "\nVelocity blur:\n"; - opstream << velocityblur; - opstream << "\nVolume:\n"; - opstream << volume; - opstream << "\nForward key:\n"; - opstream << KeyToChar(forwardkey); - opstream << "\nBack key:\n"; - opstream << KeyToChar(backkey); - opstream << "\nLeft key:\n"; - opstream << KeyToChar(leftkey); - opstream << "\nRight key:\n"; - opstream << KeyToChar(rightkey); - opstream << "\nJump key:\n"; - opstream << KeyToChar(jumpkey); - opstream << "\nCrouch key:\n"; - opstream << KeyToChar(crouchkey); - opstream << "\nDraw key:\n"; - opstream << KeyToChar(drawkey); - opstream << "\nThrow key:\n"; - opstream << KeyToChar(throwkey); - opstream << "\nAttack key:\n"; - opstream << KeyToChar(attackkey); - opstream << "\nChat key:\n"; - opstream << KeyToChar(chatkey); - opstream << "\nStereoMode:\n"; - opstream << stereomode; - opstream << "\nStereoSeparation:\n"; - opstream << stereoseparation; - opstream << "\nStereoReverse:\n"; - opstream << stereoreverse; - opstream.close(); - + SaveSettings(*this); if(mainmenu==3&&gameon)mainmenu=2; if(mainmenu==3&&!gameon)mainmenu=1; } @@@ -3822,87 -3625,7 +3662,7 @@@ if(newscreenwidth<0)newscreenwidth=screenwidth; if(newscreenheight<0)newscreenheight=screenheight; - ofstream opstream(ConvertFileName(":Data:config.txt", "w")); - opstream << "Screenwidth:\n"; - opstream << newscreenwidth; - opstream << "\nScreenheight:\n"; - opstream << newscreenheight; - opstream << "\nMouse sensitivity:\n"; - opstream << usermousesensitivity; - opstream << "\nBlur(0,1):\n"; - opstream << ismotionblur; - opstream << "\nOverall Detail(0,1,2) higher=better:\n"; - opstream << newdetail; - opstream << "\nFloating jump:\n"; - opstream << floatjump; - opstream << "\nMouse jump:\n"; - opstream << mousejump; - opstream << "\nAmbient sound:\n"; - opstream << ambientsound; - opstream << "\nBlood (0,1,2):\n"; - opstream << bloodtoggle; - opstream << "\nAuto slomo:\n"; - opstream << autoslomo; - opstream << "\nFoliage:\n"; - opstream << foliage; - opstream << "\nMusic:\n"; - opstream << musictoggle; - opstream << "\nTrilinear:\n"; - opstream << trilinear; - opstream << "\nDecals(shadows,blood puddles,etc):\n"; - opstream << decals; - opstream << "\nInvert mouse:\n"; - opstream << invertmouse; - opstream << "\nGamespeed:\n"; - if(oldgamespeed==0)oldgamespeed=1; - opstream << oldgamespeed; - opstream << "\nDifficulty(0,1,2) higher=harder:\n"; - opstream << difficulty; - opstream << "\nDamage effects(blackout, doublevision):\n"; - opstream << damageeffects; - opstream << "\nText:\n"; - opstream << texttoggle; - opstream << "\nDebug:\n"; - opstream << debugmode; - opstream << "\nVBL Sync:\n"; - opstream << vblsync; - opstream << "\nShow Points:\n"; - opstream << showpoints; - opstream << "\nAlways Blur:\n"; - opstream << alwaysblur; - opstream << "\nImmediate mode (turn on on G5):\n"; - opstream << immediate; - opstream << "\nVelocity blur:\n"; - opstream << velocityblur; - opstream << "\nVolume:\n"; - opstream << volume; - opstream << "\nForward key:\n"; - opstream << KeyToChar(forwardkey); - opstream << "\nBack key:\n"; - opstream << KeyToChar(backkey); - opstream << "\nLeft key:\n"; - opstream << KeyToChar(leftkey); - opstream << "\nRight key:\n"; - opstream << KeyToChar(rightkey); - opstream << "\nJump key:\n"; - opstream << KeyToChar(jumpkey); - opstream << "\nCrouch key:\n"; - opstream << KeyToChar(crouchkey); - opstream << "\nDraw key:\n"; - opstream << KeyToChar(drawkey); - opstream << "\nThrow key:\n"; - opstream << KeyToChar(throwkey); - opstream << "\nAttack key:\n"; - opstream << KeyToChar(attackkey); - opstream << "\nChat key:\n"; - opstream << KeyToChar(chatkey); - opstream << "\nStereoMode:\n"; - opstream << stereomode; - opstream << "\nStereoSeparation:\n"; - opstream << stereoseparation; - opstream << "\nStereoReverse:\n"; - opstream << stereoreverse; - opstream.close(); + SaveSettings(*this); } } @@@ -4337,12 -4060,6 +4097,12 @@@ opstream << KeyToChar(attackkey); opstream << "\nChat key:\n"; opstream << KeyToChar(chatkey); + opstream << "\nStereoMode:\n"; + opstream << stereomode; + opstream << "\nStereoSeparation:\n"; + opstream << stereoseparation; + opstream << "\nStereoReverse:\n"; + opstream << stereoreverse; opstream.close(); } } diff --combined Source/OpenGL_Windows.cpp index d4251fc,8542abf..5759ddc --- a/Source/OpenGL_Windows.cpp +++ b/Source/OpenGL_Windows.cpp @@@ -63,51 -63,28 +63,28 @@@ static bool save_png(const char * fname extern bool buttons[3]; extern float multiplier; - extern float screenwidth,screenheight; extern float sps; extern float realmultiplier; extern int slomo; - extern bool ismotionblur; - extern float usermousesensitivity; - extern int detail; - extern bool floatjump; extern bool cellophane; // MODIFIED GWC //extern int terraindetail; //extern int texdetail; extern float terraindetail; extern float texdetail; - extern int bloodtoggle; + extern bool osx; - extern bool autoslomo; - extern bool foliage; - extern bool musictoggle; - extern bool trilinear; - extern float gamespeed; - extern int difficulty; - extern bool damageeffects; extern int numplayers; - extern bool decals; - extern bool invertmouse; - extern bool texttoggle; - extern bool ambientsound; - extern bool mousejump; extern bool freeze; extern Person player[maxplayers]; - extern bool vblsync; extern bool stillloading; - extern bool showpoints; - extern bool alwaysblur; - extern bool immediate; - extern bool velocityblur; - extern bool debugmode; extern int mainmenu; /*extern*/ bool gameFocused; - extern int kBitsPerPixel; + extern float slomospeed; extern float slomofreq; - extern float oldgamespeed; - extern float volume; + + #include #include @@@ -116,7 -93,7 +93,7 @@@ #include #include "gamegl.h" #include "MacCompatibility.h" - + #include "Settings.h" #ifdef WIN32 #include @@@ -320,12 -297,7 +297,12 @@@ void ShutdownDSp ( void DrawGL (Game & game) { - game.DrawGLScene(); + if ( stereomode == stereoNone ) { + game.DrawGLScene(stereoCenter); + } else { + game.DrawGLScene(stereoLeft); + game.DrawGLScene(stereoRight); + } } @@@ -580,301 -552,22 +557,22 @@@ Boolean SetUp (Game & game randSeed = UpTime().lo; osx = 0; - ifstream ipstream(ConvertFileName(":Data:config.txt"), std::ios::in /*| std::ios::nocreate*/); - detail=1; - ismotionblur=0; - usermousesensitivity=1; - kContextWidth=640; - kContextHeight=480; - kBitsPerPixel = 32; - floatjump=0; cellophane=0; texdetail=4; - autoslomo=1; - decals=1; - invertmouse=0; - bloodtoggle=0; terraindetail=2; - foliage=1; - musictoggle=1; - trilinear=1; - gamespeed=1; - difficulty=1; - damageeffects=0; - texttoggle=1; - alwaysblur=0; - showpoints=0; - immediate=0; - velocityblur=0; - slomospeed=0.25; slomofreq=8012; - - volume = 0.8f; - - game.crouchkey=MAC_SHIFT_KEY; - game.jumpkey=MAC_SPACE_KEY; - game.leftkey=MAC_A_KEY; - game.forwardkey=MAC_W_KEY; - game.backkey=MAC_S_KEY; - game.rightkey=MAC_D_KEY; - game.drawkey=MAC_E_KEY; - game.throwkey=MAC_Q_KEY; - game.attackkey=MAC_MOUSEBUTTON1; - game.chatkey=MAC_T_KEY; numplayers=1; - ambientsound=1; - vblsync=0; - debugmode=0; + + DefaultSettings(game); selectDetail(kContextWidth, kContextHeight, kBitsPerPixel, detail); - if(!ipstream) { - ofstream opstream(ConvertFileName(":Data:config.txt", "w")); - opstream << "Screenwidth:\n"; - opstream << kContextWidth; - opstream << "\nScreenheight:\n"; - opstream << kContextHeight; - opstream << "\nMouse sensitivity:\n"; - opstream << usermousesensitivity; - opstream << "\nBlur(0,1):\n"; - opstream << ismotionblur; - opstream << "\nOverall Detail(0,1,2) higher=better:\n"; - opstream << detail; - opstream << "\nFloating jump:\n"; - opstream << floatjump; - opstream << "\nMouse jump:\n"; - opstream << mousejump; - opstream << "\nAmbient sound:\n"; - opstream << ambientsound; - opstream << "\nBlood (0,1,2):\n"; - opstream << bloodtoggle; - opstream << "\nAuto slomo:\n"; - opstream << autoslomo; - opstream << "\nFoliage:\n"; - opstream << foliage; - opstream << "\nMusic:\n"; - opstream << musictoggle; - opstream << "\nTrilinear:\n"; - opstream << trilinear; - opstream << "\nDecals(shadows,blood puddles,etc):\n"; - opstream << decals; - opstream << "\nInvert mouse:\n"; - opstream << invertmouse; - opstream << "\nGamespeed:\n"; - opstream << gamespeed; - opstream << "\nDifficulty(0,1,2) higher=harder:\n"; - opstream << difficulty; - opstream << "\nDamage effects(blackout, doublevision):\n"; - opstream << damageeffects; - opstream << "\nText:\n"; - opstream << texttoggle; - opstream << "\nDebug:\n"; - opstream << debugmode; - opstream << "\nVBL Sync:\n"; - opstream << vblsync; - opstream << "\nShow Points:\n"; - opstream << showpoints; - opstream << "\nAlways Blur:\n"; - opstream << alwaysblur; - opstream << "\nImmediate mode (turn on on G5):\n"; - opstream << immediate; - opstream << "\nVelocity blur:\n"; - opstream << velocityblur; - opstream << "\nVolume:\n"; - opstream << volume; - opstream << "\nForward key:\n"; - opstream << KeyToChar(game.forwardkey); - opstream << "\nBack key:\n"; - opstream << KeyToChar(game.backkey); - opstream << "\nLeft key:\n"; - opstream << KeyToChar(game.leftkey); - opstream << "\nRight key:\n"; - opstream << KeyToChar(game.rightkey); - opstream << "\nJump key:\n"; - opstream << KeyToChar(game.jumpkey); - opstream << "\nCrouch key:\n"; - opstream << KeyToChar(game.crouchkey); - opstream << "\nDraw key:\n"; - opstream << KeyToChar(game.drawkey); - opstream << "\nThrow key:\n"; - opstream << KeyToChar(game.throwkey); - opstream << "\nAttack key:\n"; - opstream << KeyToChar(game.attackkey); - opstream << "\nChat key:\n"; - opstream << KeyToChar(game.chatkey); - opstream << "\nStereoMode:\n"; - opstream << stereomode; - opstream << "\nStereoSeparation:\n"; - opstream << stereoseparation; - opstream << "\nStereoReverse:\n"; - opstream << stereoreverse; - opstream.close(); - } - if(ipstream){ - int i; - ipstream.ignore(256,'\n'); - ipstream >> kContextWidth; - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> kContextHeight; - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> usermousesensitivity; - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - ismotionblur = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> detail; - if(detail!=0)kBitsPerPixel=32; - else kBitsPerPixel=16; - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - floatjump = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - mousejump = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - ambientsound = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> bloodtoggle; - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - autoslomo = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - foliage = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - musictoggle = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - trilinear = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - decals = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - invertmouse = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> gamespeed; - oldgamespeed=gamespeed; - if(oldgamespeed==0){ - gamespeed=1; - oldgamespeed=1; - } - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> difficulty; - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - damageeffects = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - texttoggle = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - debugmode = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - vblsync = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - showpoints = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - alwaysblur = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - immediate = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> i; - velocityblur = (i != 0); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> volume; - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> string; - game.forwardkey=CharToKey(string); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> string; - game.backkey=CharToKey(string); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> string; - game.leftkey=CharToKey(string); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> string; - game.rightkey=CharToKey(string); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> string; - game.jumpkey=CharToKey(string); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> string; - game.crouchkey=CharToKey(string); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> string; - game.drawkey=CharToKey(string); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> string; - game.throwkey=CharToKey(string); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> string; - game.attackkey=CharToKey(string); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> string; - game.chatkey=CharToKey(string); - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - if (!ipstream.eof()) { - ipstream >> i; - stereomode = (StereoMode)i; - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> stereoseparation; - ipstream.ignore(256,'\n'); - ipstream.ignore(256,'\n'); - ipstream >> stereoreverse; - } - ipstream.close(); - - if(detail>2)detail=2; - if(detail<0)detail=0; - if(screenwidth<0)screenwidth=640; - if(screenheight<0)screenheight=480; - + if(!LoadSettings(game)) { + fprintf(stderr, "Failed to load config, creating default\n"); + SaveSettings(game); } + if(kBitsPerPixel!=32&&kBitsPerPixel!=16){ kBitsPerPixel=16; } @@@ -946,8 -639,7 +644,8 @@@ SDL_ShowCursor(0); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - + SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 1); + if (SDL_SetVideoMode(kContextWidth, kContextHeight, 0, sdlflags) == NULL) { fprintf(stderr, "SDL_SetVideoMode() failed: %s\n", SDL_GetError()); @@@ -996,6 -688,7 +694,6 @@@ glDisable( GL_FOG); glDisable( GL_LIGHTING); glDisable( GL_LOGIC_OP); - glDisable( GL_STENCIL_TEST); glDisable( GL_TEXTURE_1D); glDisable( GL_TEXTURE_2D); glPixelTransferi( GL_MAP_COLOR, GL_FALSE); @@@ -1037,13 -730,6 +735,13 @@@ game.newscreenwidth=screenwidth; game.newscreenheight=screenheight; + if ( CanInitStereo(stereomode) ) { + InitStereo(stereomode); + } else { + fprintf(stderr, "Failed to initialize stereo, disabling.\n"); + stereomode = stereoNone; + } + game.InitGame(); return true; diff --combined Source/Settings.cpp index 0000000,34cf99f..754c2ac mode 000000,100644..100644 --- a/Source/Settings.cpp +++ b/Source/Settings.cpp @@@ -1,0 -1,262 +1,277 @@@ + #include "Settings.h" + #include "Game.h" + + + void DefaultSettings(Game &game) { + detail=1; + ismotionblur=0; + usermousesensitivity=1; + kContextWidth=640; + kContextHeight=480; + kBitsPerPixel = 32; + floatjump=0; + autoslomo=1; + decals=1; + invertmouse=0; + bloodtoggle=0; + foliage=1; + musictoggle=1; + trilinear=1; + gamespeed=1; + difficulty=1; + damageeffects=0; + texttoggle=1; + alwaysblur=0; + showpoints=0; + immediate=0; + velocityblur=0; + volume = 0.8f; + ambientsound=1; + vblsync=0; + debugmode=0; + + game.crouchkey=MAC_SHIFT_KEY; + game.jumpkey=MAC_SPACE_KEY; + game.leftkey=MAC_A_KEY; + game.forwardkey=MAC_W_KEY; + game.backkey=MAC_S_KEY; + game.rightkey=MAC_D_KEY; + game.drawkey=MAC_E_KEY; + game.throwkey=MAC_Q_KEY; + game.attackkey=MAC_MOUSEBUTTON1; + game.chatkey=MAC_T_KEY; + } + + void SaveSettings(Game &game) { + ofstream opstream(ConvertFileName(":Data:config.txt", "w")); + opstream << "Screenwidth:\n"; + opstream << game.newscreenwidth; + opstream << "\nScreenheight:\n"; + opstream << game.newscreenheight; + opstream << "\nMouse sensitivity:\n"; + opstream << usermousesensitivity; + opstream << "\nBlur(0,1):\n"; + opstream << ismotionblur; + opstream << "\nOverall Detail(0,1,2) higher=better:\n"; + opstream << game.newdetail; + opstream << "\nFloating jump:\n"; + opstream << floatjump; + opstream << "\nMouse jump:\n"; + opstream << mousejump; + opstream << "\nAmbient sound:\n"; + opstream << ambientsound; + opstream << "\nBlood (0,1,2):\n"; + opstream << bloodtoggle; + opstream << "\nAuto slomo:\n"; + opstream << autoslomo; + opstream << "\nFoliage:\n"; + opstream << foliage; + opstream << "\nMusic:\n"; + opstream << musictoggle; + opstream << "\nTrilinear:\n"; + opstream << trilinear; + opstream << "\nDecals(shadows,blood puddles,etc):\n"; + opstream << decals; + opstream << "\nInvert mouse:\n"; + opstream << invertmouse; + opstream << "\nGamespeed:\n"; + if(oldgamespeed==0)oldgamespeed=1; + opstream << oldgamespeed; + opstream << "\nDifficulty(0,1,2) higher=harder:\n"; + opstream << difficulty; + opstream << "\nDamage effects(blackout, doublevision):\n"; + opstream << damageeffects; + opstream << "\nText:\n"; + opstream << texttoggle; + opstream << "\nDebug:\n"; + opstream << debugmode; + opstream << "\nVBL Sync:\n"; + opstream << vblsync; + opstream << "\nShow Points:\n"; + opstream << showpoints; + opstream << "\nAlways Blur:\n"; + opstream << alwaysblur; + opstream << "\nImmediate mode (turn on on G5):\n"; + opstream << immediate; + opstream << "\nVelocity blur:\n"; + opstream << velocityblur; + opstream << "\nVolume:\n"; + opstream << volume; + opstream << "\nForward key:\n"; + opstream << KeyToChar(game.forwardkey); + opstream << "\nBack key:\n"; + opstream << KeyToChar(game.backkey); + opstream << "\nLeft key:\n"; + opstream << KeyToChar(game.leftkey); + opstream << "\nRight key:\n"; + opstream << KeyToChar(game.rightkey); + opstream << "\nJump key:\n"; + opstream << KeyToChar(game.jumpkey); + opstream << "\nCrouch key:\n"; + opstream << KeyToChar(game.crouchkey); + opstream << "\nDraw key:\n"; + opstream << KeyToChar(game.drawkey); + opstream << "\nThrow key:\n"; + opstream << KeyToChar(game.throwkey); + opstream << "\nAttack key:\n"; + opstream << KeyToChar(game.attackkey); + opstream << "\nChat key:\n"; + opstream << KeyToChar(game.chatkey); ++ opstream << "\nStereoMode:\n"; ++ opstream << stereomode; ++ opstream << "\nStereoSeparation:\n"; ++ opstream << stereoseparation; ++ opstream << "\nStereoReverse:\n"; ++ opstream << stereoreverse; ++ + opstream.close(); + } + + bool LoadSettings(Game &game) { + ifstream ipstream(ConvertFileName(":Data:config.txt"), std::ios::in); + if ( !ipstream || ipstream.fail() ) { + printf("Config file not found\n"); + return false; + } + char setting[256]; + char string[256]; + + printf("Loading config\n"); + while(!ipstream.eof()) { + ipstream.getline( setting, sizeof(setting) ); + + // skip blank lines + // assume lines starting with spaces are all blank + if ( strlen(setting) == 0 || setting[0] == ' ' || setting[0] == '\t') continue; + + if ( ipstream.eof() || ipstream.fail() ) { + fprintf(stderr, "Error reading config file: Got setting name '%s', but value can't be read\n", setting); + ipstream.close(); + return false; + } + + + if ( !strncmp(setting, "Screenwidth", 11) ) { + ipstream >> kContextWidth; + } else if ( !strncmp(setting, "Screenheight", 12) ) { + ipstream >> kContextHeight; + } else if ( !strncmp(setting, "Mouse sensitivity", 17) ) { + ipstream >> usermousesensitivity; + } else if ( !strncmp(setting, "Blur", 4) ) { + ipstream >> ismotionblur; + } else if ( !strncmp(setting, "Overall Detail", 14) ) { + ipstream >> detail; + if(detail!=0)kBitsPerPixel=32; + else kBitsPerPixel=16; + } else if ( !strncmp(setting, "Floating jump", 13) ) { + ipstream >> floatjump; + } else if ( !strncmp(setting, "Mouse jump", 10) ) { + ipstream >> mousejump; + } else if ( !strncmp(setting, "Ambient sound", 13) ) { + ipstream >> ambientsound; + } else if ( !strncmp(setting, "Blood ", 6) ) { + ipstream >> bloodtoggle; + } else if ( !strncmp(setting, "Auto slomo", 10) ) { + ipstream >> autoslomo; + } else if ( !strncmp(setting, "Foliage", 7) ) { + ipstream >> foliage; + } else if ( !strncmp(setting, "Music", 5) ) { + ipstream >> musictoggle; + } else if ( !strncmp(setting, "Trilinear", 9) ) { + ipstream >> trilinear; + } else if ( !strncmp(setting, "Decals", 6) ) { + ipstream >> decals; + } else if ( !strncmp(setting, "Invert mouse", 12) ) { + ipstream >> invertmouse; + } else if ( !strncmp(setting, "Gamespeed", 9) ) { + ipstream >> gamespeed; + oldgamespeed=gamespeed; + if(oldgamespeed==0){ + gamespeed=1; + oldgamespeed=1; + } + } else if ( !strncmp(setting, "Difficulty", 10) ) { + ipstream >> difficulty; + } else if ( !strncmp(setting, "Damage effects", 14) ) { + ipstream >> damageeffects; + } else if ( !strncmp(setting, "Text", 4) ) { + ipstream >> texttoggle; + } else if ( !strncmp(setting, "Debug", 5) ) { + ipstream >> debugmode; + } else if ( !strncmp(setting, "VBL Sync", 8) ) { + ipstream >> vblsync; + } else if ( !strncmp(setting, "Show Points", 11) ) { + ipstream >> showpoints; + } else if ( !strncmp(setting, "Always Blur", 11) ) { + ipstream >> alwaysblur; + } else if ( !strncmp(setting, "Immediate mode ", 15) ) { + ipstream >> immediate; + } else if ( !strncmp(setting, "Velocity blur", 13) ) { + ipstream >> velocityblur; + } else if ( !strncmp(setting, "Volume", 6) ) { + ipstream >> volume; + } else if ( !strncmp(setting, "Forward key", 11) ) { + ipstream >> string; + game.forwardkey = CharToKey(string); + } else if ( !strncmp(setting, "Back key", 8) ) { + ipstream >> string; + game.backkey = CharToKey(string); + } else if ( !strncmp(setting, "Left key", 8) ) { + ipstream >> string; + game.leftkey = CharToKey(string); + } else if ( !strncmp(setting, "Right key", 9) ) { + ipstream >> string; + game.rightkey = CharToKey(string); + } else if ( !strncmp(setting, "Jump key", 8) ) { + ipstream >> string; + game.jumpkey = CharToKey(string); + } else if ( !strncmp(setting, "Crouch key", 10) ) { + ipstream >> string; + game.crouchkey = CharToKey(string); + } else if ( !strncmp(setting, "Draw key", 8) ) { + ipstream >> string; + game.drawkey = CharToKey(string); + } else if ( !strncmp(setting, "Throw key", 9) ) { + ipstream >> string; + game.throwkey = CharToKey(string); + } else if ( !strncmp(setting, "Attack key", 10) ) { + ipstream >> string; + game.attackkey = CharToKey(string); + } else if ( !strncmp(setting, "Chat key", 8) ) { + ipstream >> string; + game.chatkey = CharToKey(string); ++ } else if ( !strncmp(setting, "StereoMode", 10) ) { ++ int i; ++ ipstream >> i; ++ stereomode = (StereoMode)i; ++ } else if ( !strncmp(setting, "StereoSeparation", 16) ) { ++ ipstream >> stereoseparation; ++ } else if ( !strncmp(setting, "StereoReverse", 13) ) { ++ ipstream >> stereoreverse; + } else { + ipstream >> string; + fprintf(stderr, "Unknown config option '%s' with value '%s'. Ignoring.\n", setting, string); + } + + if ( ipstream.fail() ) { + fprintf(stderr, "Error reading config file: EOF reached when trying to read value for setting '%s'.\n", setting); + ipstream.close(); + return false; + } + + if ( ipstream.bad() ) { + fprintf(stderr, "Error reading config file: Failed to read value for setting '%s'.\n", setting); + ipstream.close(); + return false; + } + } + + ipstream.close(); + + if(detail>2)detail=2; + if(detail<0)detail=0; + if(screenwidth<0)screenwidth=640; + if(screenheight<0)screenheight=480; + + return true; + }