Added GPL Arcade Volleyball sources
This commit is contained in:
241
project/jni/application/gav/gav-0.9.0/Configuration.cpp
Normal file
241
project/jni/application/gav/gav-0.9.0/Configuration.cpp
Normal file
@@ -0,0 +1,241 @@
|
||||
/* -*- C++ -*- */
|
||||
/*
|
||||
GAV - Gpl Arcade Volleyball
|
||||
|
||||
Copyright (C) 2002
|
||||
GAV team (http://sourceforge.net/projects/gav/)
|
||||
|
||||
This program 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
/* Configuration options */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include "Configuration.h"
|
||||
#include "ControlsArray.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
Configuration configuration;
|
||||
|
||||
Aargh aargh;
|
||||
|
||||
int Configuration::loadConfiguration() {
|
||||
string fname = confFileName();
|
||||
|
||||
if ( !aargh.loadConf(fname.c_str()) )
|
||||
return(-1);
|
||||
string value;
|
||||
if ( aargh.getArg("left_nplayers", value) )
|
||||
configuration.left_nplayers = atoi(value.c_str());
|
||||
if ( aargh.getArg("right_nplayers", value) )
|
||||
configuration.right_nplayers = atoi(value.c_str());
|
||||
if ( aargh.getArg("monitor_type", value) ) {
|
||||
if ( value == "normal" )
|
||||
configuration.monitor_type = MONITOR_NORMAL;
|
||||
else if ( value == "old" )
|
||||
configuration.monitor_type = MONITOR_OLD;
|
||||
else if ( value == "very_old")
|
||||
configuration.monitor_type = MONITOR_VERYOLD;
|
||||
else if ( value == "very_very_old")
|
||||
configuration.monitor_type = MONITOR_VERYVERYOLD;
|
||||
else
|
||||
cerr << "Unrecognized monitor type \"" << value << "\"\n";
|
||||
}
|
||||
if ( aargh.getArg("frame_skip", value) )
|
||||
configuration.frame_skip = atoi(value.c_str());
|
||||
if ( aargh.getArg("fps", value) )
|
||||
configuration.setFps(atoi(value.c_str()));
|
||||
|
||||
for ( int i = 0; i < left_nplayers; i++ )
|
||||
if ( aargh.getArg(("left_player" + toString(i)), value) )
|
||||
if ( value == "human")
|
||||
configuration.left_players[i] = PLAYER_HUMAN;
|
||||
else if ( value == "computer")
|
||||
configuration.left_players[i] = PLAYER_COMPUTER;
|
||||
else
|
||||
cerr << "Unrecognized player type \"" << value << "\"\n";
|
||||
|
||||
for ( int i = 0; i < MAX_PLAYERS/2; i++ ) {
|
||||
string arg1, arg2, arg3;
|
||||
|
||||
arg1 = "left_player" + toString(i) + "left";
|
||||
arg2 = "left_player" + toString(i) + "right";
|
||||
arg3 = "left_player" + toString(i) + "jump";
|
||||
if ( aargh.getArg(arg1) && aargh.getArg(arg2) && aargh.getArg(arg3) ) {
|
||||
string lval, rval, jval;
|
||||
controls_t ctrls;
|
||||
aargh.getArg(arg1, lval);
|
||||
aargh.getArg(arg2, rval);
|
||||
aargh.getArg(arg3, jval);
|
||||
ctrls.left_key = atoi(lval.c_str());
|
||||
ctrls.right_key = atoi(rval.c_str());
|
||||
ctrls.jump_key = atoi(jval.c_str());
|
||||
controlsArray->setControls(i*2, ctrls);
|
||||
}
|
||||
}
|
||||
|
||||
for ( int i = 0; i < right_nplayers; i++ )
|
||||
if ( aargh.getArg(("right_player" + toString(i)), value) )
|
||||
if ( value == "human" )
|
||||
configuration.right_players[i] = PLAYER_HUMAN;
|
||||
else if ( value == "computer")
|
||||
configuration.right_players[i] = PLAYER_COMPUTER;
|
||||
else
|
||||
cerr << "Unrecognized player type \"" << value << "\"\n";
|
||||
|
||||
for ( int i = 0; i < MAX_PLAYERS/2; i++ ) {
|
||||
string arg1, arg2, arg3;
|
||||
|
||||
arg1 = "right_player" + toString(i) + "left";
|
||||
arg2 = "right_player" + toString(i) + "right";
|
||||
arg3 = "right_player" + toString(i) + "jump";
|
||||
if ( aargh.getArg(arg1) && aargh.getArg(arg2) && aargh.getArg(arg3) ) {
|
||||
string lval, rval, jval;
|
||||
controls_t ctrls;
|
||||
aargh.getArg(arg1, lval);
|
||||
aargh.getArg(arg2, rval);
|
||||
aargh.getArg(arg3, jval);
|
||||
ctrls.left_key = atoi(lval.c_str());
|
||||
ctrls.right_key = atoi(rval.c_str());
|
||||
ctrls.jump_key = atoi(jval.c_str());
|
||||
controlsArray->setControls(i*2 + 1, ctrls);
|
||||
}
|
||||
}
|
||||
if ( aargh.getArg("big_background", value) )
|
||||
configuration.bgBig = (value=="yes");
|
||||
if ( aargh.getArg("fullscreen", value) )
|
||||
configuration.fullscreen = (value=="yes");
|
||||
if ( aargh.getArg("ball_speed", value) )
|
||||
if ( value == "normal" )
|
||||
configuration.ballAmplify = DEFAULT_BALL_AMPLIFY;
|
||||
else if ( value == "fast" )
|
||||
configuration.ballAmplify = DEFAULT_BALL_AMPLIFY + BALL_SPEED_INC;
|
||||
else if ( value == "very_fast" )
|
||||
configuration.ballAmplify = DEFAULT_BALL_AMPLIFY + 2*BALL_SPEED_INC;
|
||||
else
|
||||
cerr << "Unrecognized ball speed \"" << value << "\"\n";
|
||||
if ( aargh.getArg("theme", value) )
|
||||
configuration.currentTheme = value;
|
||||
|
||||
if ( aargh.getArg("sound", value) )
|
||||
configuration.sound = (value == "yes");
|
||||
|
||||
if ( aargh.getArg("winning_score", value) )
|
||||
configuration.winning_score = atoi(value.c_str());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* we'll use aargh's dump feature! Yiipeee!! */
|
||||
int Configuration::saveConfiguration(string fname) {
|
||||
// cerr << "saving to: " << fname << endl;
|
||||
|
||||
string tosave;
|
||||
|
||||
aargh.dump(tosave);
|
||||
|
||||
FILE *fp;
|
||||
if ( (fp = fopen(fname.c_str(), "w")) == NULL )
|
||||
return(-1);
|
||||
|
||||
fputs(tosave.c_str(), fp);
|
||||
fclose(fp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* unfortunately, I *HAVE* to go through all the settings...
|
||||
This function puts configuration parameters inside aargh, and then
|
||||
dumps it. */
|
||||
int Configuration::createConfigurationFile() {
|
||||
string fname = confFileName();
|
||||
|
||||
Configuration c = configuration; /* for short :) */
|
||||
|
||||
aargh.reset();
|
||||
|
||||
aargh.setArg("left_nplayers", c.left_nplayers);
|
||||
aargh.setArg("right_nplayers", c.right_nplayers);
|
||||
switch ( c.monitor_type ) {
|
||||
case MONITOR_NORMAL:
|
||||
aargh.setArg("monitor_type", "normal"); break;
|
||||
case MONITOR_OLD:
|
||||
aargh.setArg("monitor_type", "old"); break;
|
||||
case MONITOR_VERYOLD:
|
||||
aargh.setArg("monitor_type", "very_old"); break;
|
||||
case MONITOR_VERYVERYOLD:
|
||||
aargh.setArg("monitor_type", "very_very_old"); break;
|
||||
}
|
||||
aargh.setArg("frame_skip", c.frame_skip);
|
||||
aargh.setArg("fps", c.fps);
|
||||
for ( int i = 0; i < left_nplayers; i++ ) {
|
||||
switch ( c.left_players[i] ) {
|
||||
case PLAYER_HUMAN:
|
||||
aargh.setArg("left_player" + toString(i), "human"); break;
|
||||
case PLAYER_COMPUTER:
|
||||
aargh.setArg("left_player" + toString(i), "computer"); break;
|
||||
}
|
||||
}
|
||||
for ( int i = 0; i < right_nplayers; i++ ) {
|
||||
switch ( c.right_players[i] ) {
|
||||
case PLAYER_HUMAN:
|
||||
aargh.setArg("right_player" + toString(i), "human"); break;
|
||||
case PLAYER_COMPUTER:
|
||||
aargh.setArg("right_player" + toString(i), "computer"); break;
|
||||
}
|
||||
}
|
||||
aargh.setArg("big_background", c.bgBig?"yes":"no");
|
||||
aargh.setArg("fullscreen", (c.fullscreen?"yes":"no"));
|
||||
if ( c.ballAmplify == DEFAULT_BALL_AMPLIFY + BALL_SPEED_INC )
|
||||
aargh.setArg("ball_speed", "fast");
|
||||
else if ( c.ballAmplify == DEFAULT_BALL_AMPLIFY + 2*BALL_SPEED_INC )
|
||||
aargh.setArg("ball_speed", "very_fast");
|
||||
else if ( c.ballAmplify == DEFAULT_BALL_AMPLIFY )
|
||||
aargh.setArg("ball_speed", "normal");
|
||||
aargh.setArg("theme", c.currentTheme);
|
||||
aargh.setArg("sound", c.sound?"yes":"no");
|
||||
aargh.setArg("winning_score", c.winning_score);
|
||||
|
||||
for ( int i = 0; i < MAX_PLAYERS/2; i++ ) {
|
||||
controls_t ct = controlsArray->getControls(i*2);
|
||||
aargh.setArg("left_player" + toString(i) + "left", ct.left_key);
|
||||
aargh.setArg("left_player" + toString(i) + "right", ct.right_key);
|
||||
aargh.setArg("left_player" + toString(i) + "jump", ct.jump_key);
|
||||
}
|
||||
|
||||
for ( int i = 0; i < MAX_PLAYERS/2; i++ ) {
|
||||
controls_t ct = controlsArray->getControls(i*2 + 1);
|
||||
aargh.setArg("right_player" + toString(i) + "left", ct.left_key);
|
||||
aargh.setArg("right_player" + toString(i) + "right", ct.right_key);
|
||||
aargh.setArg("right_player" + toString(i) + "jump", ct.jump_key);
|
||||
}
|
||||
|
||||
return(saveConfiguration(fname));
|
||||
}
|
||||
|
||||
string Configuration::confFileName() {
|
||||
string ret;
|
||||
const char *home = getenv("HOME");
|
||||
|
||||
if ( home ) {
|
||||
ret = (string(home) + "/" + DEFAULT_CONF_FILENAME);
|
||||
} else { /* gav.ini in the current directory */
|
||||
ret = string(ALTERNATIVE_CONF_FILENAME);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
Reference in New Issue
Block a user