7 void DefaultSettings() {
10 usermousesensitivity=1;
11 newscreenwidth=kContextWidth=640;
12 newscreenheight=kContextHeight=480;
36 crouchkey=SDLK_LSHIFT;
44 attackkey=MOUSEBUTTON1;
45 consolekey=SDLK_BACKQUOTE;
50 if(newdetail<0) newdetail=0;
51 if(newdetail>2) newdetail=2;
52 if(newscreenwidth>3000) newscreenwidth=screenwidth;
53 if(newscreenwidth<0) newscreenwidth=screenwidth;
54 if(newscreenheight>3000) newscreenheight=screenheight;
55 if(newscreenheight<0) newscreenheight=screenheight;
56 ofstream opstream(ConvertFileName(":Data:config.txt", "w"));
57 opstream << "Screenwidth:\n";
58 opstream << newscreenwidth;
59 opstream << "\nScreenheight:\n";
60 opstream << newscreenheight;
61 opstream << "\nMouse sensitivity:\n";
62 opstream << usermousesensitivity;
63 opstream << "\nBlur(0,1):\n";
64 opstream << ismotionblur;
65 opstream << "\nOverall Detail(0,1,2) higher=better:\n";
66 opstream << newdetail;
67 opstream << "\nFloating jump:\n";
68 opstream << floatjump;
69 opstream << "\nMouse jump:\n";
70 opstream << mousejump;
71 opstream << "\nAmbient sound:\n";
72 opstream << ambientsound;
73 opstream << "\nBlood (0,1,2):\n";
74 opstream << bloodtoggle;
75 opstream << "\nAuto slomo:\n";
76 opstream << autoslomo;
77 opstream << "\nFoliage:\n";
79 opstream << "\nMusic:\n";
80 opstream << musictoggle;
81 opstream << "\nTrilinear:\n";
82 opstream << trilinear;
83 opstream << "\nDecals(shadows,blood puddles,etc):\n";
85 opstream << "\nInvert mouse:\n";
86 opstream << invertmouse;
87 opstream << "\nGamespeed:\n";
88 if(oldgamespeed==0)oldgamespeed=1;
89 opstream << oldgamespeed;
90 opstream << "\nDifficulty(0,1,2) higher=harder:\n";
91 opstream << difficulty;
92 opstream << "\nDamage effects(blackout, doublevision):\n";
93 opstream << damageeffects;
94 opstream << "\nText:\n";
95 opstream << texttoggle;
96 opstream << "\nDebug:\n";
97 opstream << debugmode;
98 opstream << "\nVBL Sync:\n";
100 opstream << "\nShow Points:\n";
101 opstream << showpoints;
102 opstream << "\nAlways Blur:\n";
103 opstream << alwaysblur;
104 opstream << "\nImmediate mode (turn on on G5):\n";
105 opstream << immediate;
106 opstream << "\nVelocity blur:\n";
107 opstream << velocityblur;
108 opstream << "\nVolume:\n";
110 opstream << "\nForward key:\n";
111 opstream << Input::keyToChar(forwardkey);
112 opstream << "\nBack key:\n";
113 opstream << Input::keyToChar(backkey);
114 opstream << "\nLeft key:\n";
115 opstream << Input::keyToChar(leftkey);
116 opstream << "\nRight key:\n";
117 opstream << Input::keyToChar(rightkey);
118 opstream << "\nJump key:\n";
119 opstream << Input::keyToChar(jumpkey);
120 opstream << "\nCrouch key:\n";
121 opstream << Input::keyToChar(crouchkey);
122 opstream << "\nDraw key:\n";
123 opstream << Input::keyToChar(drawkey);
124 opstream << "\nThrow key:\n";
125 opstream << Input::keyToChar(throwkey);
126 opstream << "\nAttack key:\n";
127 opstream << Input::keyToChar(attackkey);
128 opstream << "\nConsole key:\n";
129 opstream << Input::keyToChar(consolekey);
130 opstream << "\nChat key:\n";
131 opstream << Input::keyToChar(chatkey);
132 opstream << "\nDamage bar:\n";
133 opstream << showdamagebar;
134 opstream << "\nStereoMode:\n";
135 opstream << stereomode;
136 opstream << "\nStereoSeparation:\n";
137 opstream << stereoseparation;
138 opstream << "\nStereoReverse:\n";
139 opstream << stereoreverse;
143 bool LoadSettings() {
144 ifstream ipstream(ConvertFileName(":Data:config.txt"), std::ios::in);
145 if ( !ipstream || ipstream.fail() ) {
146 printf("Config file not found\n");
152 printf("Loading config\n");
153 while(!ipstream.eof()) {
154 ipstream.getline( setting, sizeof(setting) );
157 // assume lines starting with spaces are all blank
158 if ( strlen(setting) == 0 || setting[0] == ' ' || setting[0] == '\t') continue;
159 //~ printf("setting : %s\n",setting);
161 if ( ipstream.eof() || ipstream.fail() ) {
162 fprintf(stderr, "Error reading config file: Got setting name '%s', but value can't be read\n", setting);
168 if ( !strncmp(setting, "Screenwidth", 11) ) {
169 ipstream >> kContextWidth;
170 } else if ( !strncmp(setting, "Screenheight", 12) ) {
171 ipstream >> kContextHeight;
172 } else if ( !strncmp(setting, "Mouse sensitivity", 17) ) {
173 ipstream >> usermousesensitivity;
174 } else if ( !strncmp(setting, "Blur", 4) ) {
175 ipstream >> ismotionblur;
176 } else if ( !strncmp(setting, "Overall Detail", 14) ) {
178 if(detail!=0)kBitsPerPixel=32;
179 else kBitsPerPixel=16;
180 } else if ( !strncmp(setting, "Floating jump", 13) ) {
181 ipstream >> floatjump;
182 } else if ( !strncmp(setting, "Mouse jump", 10) ) {
183 ipstream >> mousejump;
184 } else if ( !strncmp(setting, "Ambient sound", 13) ) {
185 ipstream >> ambientsound;
186 } else if ( !strncmp(setting, "Blood ", 6) ) {
187 ipstream >> bloodtoggle;
188 } else if ( !strncmp(setting, "Auto slomo", 10) ) {
189 ipstream >> autoslomo;
190 } else if ( !strncmp(setting, "Foliage", 7) ) {
192 } else if ( !strncmp(setting, "Music", 5) ) {
193 ipstream >> musictoggle;
194 } else if ( !strncmp(setting, "Trilinear", 9) ) {
195 ipstream >> trilinear;
196 } else if ( !strncmp(setting, "Decals", 6) ) {
198 } else if ( !strncmp(setting, "Invert mouse", 12) ) {
199 ipstream >> invertmouse;
200 } else if ( !strncmp(setting, "Gamespeed", 9) ) {
201 ipstream >> gamespeed;
202 oldgamespeed=gamespeed;
207 } else if ( !strncmp(setting, "Difficulty", 10) ) {
208 ipstream >> difficulty;
209 } else if ( !strncmp(setting, "Damage effects", 14) ) {
210 ipstream >> damageeffects;
211 } else if ( !strncmp(setting, "Text", 4) ) {
212 ipstream >> texttoggle;
213 } else if ( !strncmp(setting, "Debug", 5) ) {
214 ipstream >> debugmode;
215 } else if ( !strncmp(setting, "VBL Sync", 8) ) {
217 } else if ( !strncmp(setting, "Show Points", 11) ) {
218 ipstream >> showpoints;
219 } else if ( !strncmp(setting, "Always Blur", 11) ) {
220 ipstream >> alwaysblur;
221 } else if ( !strncmp(setting, "Immediate mode ", 15) ) {
222 ipstream >> immediate;
223 } else if ( !strncmp(setting, "Velocity blur", 13) ) {
224 ipstream >> velocityblur;
225 } else if ( !strncmp(setting, "Volume", 6) ) {
227 } else if ( !strncmp(setting, "Forward key", 11) ) {
228 ipstream.getline( string, sizeof(string) );
229 forwardkey = Input::CharToKey(string);
230 } else if ( !strncmp(setting, "Back key", 8) ) {
231 ipstream.getline( string, sizeof(string) );
232 backkey = Input::CharToKey(string);
233 } else if ( !strncmp(setting, "Left key", 8) ) {
234 ipstream.getline( string, sizeof(string) );
235 leftkey = Input::CharToKey(string);
236 } else if ( !strncmp(setting, "Right key", 9) ) {
237 ipstream.getline( string, sizeof(string) );
238 rightkey = Input::CharToKey(string);
239 } else if ( !strncmp(setting, "Jump key", 8) ) {
240 ipstream.getline( string, sizeof(string) );
241 jumpkey = Input::CharToKey(string);
242 } else if ( !strncmp(setting, "Crouch key", 10) ) {
243 ipstream.getline( string, sizeof(string) );
244 crouchkey = Input::CharToKey(string);
245 } else if ( !strncmp(setting, "Draw key", 8) ) {
246 ipstream.getline( string, sizeof(string) );
247 drawkey = Input::CharToKey(string);
248 } else if ( !strncmp(setting, "Throw key", 9) ) {
249 ipstream.getline( string, sizeof(string) );
250 throwkey = Input::CharToKey(string);
251 } else if ( !strncmp(setting, "Attack key", 10) ) {
252 ipstream.getline( string, sizeof(string) );
253 attackkey = Input::CharToKey(string);
254 } else if ( !strncmp(setting, "Console key", 11) ) {
255 ipstream.getline( string, sizeof(string) );
256 consolekey = Input::CharToKey(string);
257 } else if ( !strncmp(setting, "Chat key", 8) ) {
258 ipstream.getline( string, sizeof(string) );
259 chatkey = Input::CharToKey(string);
260 } else if ( !strncmp(setting, "Damage bar", 10) ) {
261 ipstream >> showdamagebar;
262 } else if ( !strncmp(setting, "StereoMode", 10) ) {
265 stereomode = (StereoMode)i;
266 } else if ( !strncmp(setting, "StereoSeparation", 16) ) {
267 ipstream >> stereoseparation;
268 } else if ( !strncmp(setting, "StereoReverse", 13) ) {
269 ipstream >> stereoreverse;
272 fprintf(stderr, "Unknown config option '%s' with value '%s'. Ignoring.\n", setting, string);
275 if ( ipstream.fail() ) {
276 fprintf(stderr, "Error reading config file: EOF reached when trying to read value for setting '%s'.\n", setting);
281 if ( ipstream.bad() ) {
282 fprintf(stderr, "Error reading config file: Failed to read value for setting '%s'.\n", setting);
290 if(detail>2)detail=2;
291 if(detail<0)detail=0;
292 if(screenwidth<0)screenwidth=640;
293 if(screenheight<0)screenheight=480;