${SRCDIR}/OpenGL_Windows.cpp
${SRCDIR}/openal_wrapper.cpp
${SRCDIR}/WinInput.cpp
+ ${SRCDIR}/Settings.cpp
+ ${SRCDIR}/Stereo.cpp
)
set(LUGARU_H
${SRCDIR}/pack_private.h
${SRCDIR}/private.h
${SRCDIR}/unpack_private.h
+ ${SRCDIR}/Settings.h
+ ${SRCDIR}/Stereo.h
)
if(UNIX)
#include <ctime>
#include "Game.h"
#include "openal_wrapper.h"
+ #include "Settings.h"
using namespace std;
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");
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)){
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};
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;
}
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);
}
}
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();
}
}
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 <math.h>
#include <stdio.h>
#include <iostream>
#include "gamegl.h"
#include "MacCompatibility.h"
-
+ #include "Settings.h"
#ifdef WIN32
#include <shellapi.h>
void DrawGL (Game & game)
{
- game.DrawGLScene();
+ if ( stereomode == stereoNone ) {
+ game.DrawGLScene(stereoCenter);
+ } else {
+ game.DrawGLScene(stereoLeft);
+ game.DrawGLScene(stereoRight);
+ }
}
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;
}
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());
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);
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;
--- /dev/null
+ #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;
+ }