From: Vadim Trochinsky Date: Thu, 20 May 2010 20:57:06 +0000 (+0200) Subject: merge X-Git-Url: https://git.jsancho.org/?p=lugaru.git;a=commitdiff_plain;h=ca0addc190070545ea6204dfb4132f196d7acd1c merge --- ca0addc190070545ea6204dfb4132f196d7acd1c diff --cc 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 --cc 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; + }