git-svn-id: https://clonekeenplus.svn.sourceforge.net/svnroot/clonekeenplus/cgenius/trunk@148 4df4b0f3-56ce-47cb-b001-ed939b7d65a6
174 lines
4.3 KiB
C++
174 lines
4.3 KiB
C++
/*
|
|
* CSettings.cpp
|
|
*
|
|
* Created on: 08.06.2009
|
|
* Author: gerstrong
|
|
*/
|
|
|
|
#include "../fileio/CParser.h"
|
|
#include "../CLogFile.h"
|
|
#include "CSettings.h"
|
|
#include "CVideoDriver.h"
|
|
#include "sound/CSound.h"
|
|
#include "../FindFile.h"
|
|
#include "../ConfigHandler.h"
|
|
|
|
|
|
std::string CONFIGFILENAME = "genius.cfg";
|
|
|
|
|
|
CSettings::CSettings() {
|
|
// TODO Auto-generated constructor stub
|
|
|
|
}
|
|
|
|
CSettings::~CSettings() {
|
|
// TODO Auto-generated destructor stub
|
|
}
|
|
|
|
|
|
short CSettings::saveDrvCfg(void)
|
|
{
|
|
short retval = 0;
|
|
|
|
CParser Parser;
|
|
|
|
Parser.saveIntValue("bpp","Video",g_pVideoDriver->getDepth());
|
|
Parser.saveIntValue("frameskip","Video",g_pVideoDriver->getFrameskip());
|
|
|
|
if(g_pVideoDriver->getFullscreen())
|
|
Parser.saveIntValue("fullscreen","Video",1);
|
|
else
|
|
Parser.saveIntValue("fullscreen","Video",0);
|
|
|
|
if(g_pVideoDriver->isOpenGL())
|
|
Parser.saveIntValue("OpenGL","Video",1);
|
|
else
|
|
Parser.saveIntValue("OpenGL","Video",0);
|
|
|
|
Parser.saveIntValue("width","Video",g_pVideoDriver->getWidth());
|
|
Parser.saveIntValue("height","Video",g_pVideoDriver->getHeight());
|
|
Parser.saveIntValue("scale","Video",g_pVideoDriver->getZoomValue());
|
|
Parser.saveIntValue("OGLfilter","Video",g_pVideoDriver->getOGLFilter());
|
|
Parser.saveIntValue("filter","Video",g_pVideoDriver->getFiltermode());
|
|
Parser.saveIntValue("autoframeskip","Video",g_pVideoDriver->getTargetFPS());
|
|
Parser.saveIntValue("aspect","Video",g_pVideoDriver->getAspectCorrection() ? 1 : 0);
|
|
|
|
Parser.saveIntValue("channels","Audio",(g_pSound->getAudioSpec()).channels);
|
|
Parser.saveIntValue("format","Audio",(g_pSound->getAudioSpec()).format);
|
|
Parser.saveIntValue("rate","Audio",(g_pSound->getAudioSpec()).freq);
|
|
Parser.saveIntValue("mixerch","Audio",(g_pSound->getMixingchannels()));
|
|
|
|
Parser.saveParseFile();
|
|
|
|
return retval;
|
|
}
|
|
|
|
short CSettings::loadDrvCfg()
|
|
{
|
|
short retval = 0;
|
|
CParser Parser;
|
|
|
|
if(!Parser.loadParseFile())
|
|
{
|
|
retval = 1;
|
|
}
|
|
else
|
|
{
|
|
int width, height, depth;
|
|
|
|
depth = Parser.getIntValue("bpp","Video");
|
|
width = Parser.getIntValue("width","Video");
|
|
height = Parser.getIntValue("height","Video");
|
|
|
|
if(depth*width*height < 0)
|
|
g_pLogFile->ftextOut(RED,"Error reading the configuration file. It appears to be damaged!");
|
|
|
|
g_pVideoDriver->setMode(width,height,depth);
|
|
g_pVideoDriver->setFrameskip(Parser.getIntValue("frameskip","Video"));
|
|
|
|
if((Parser.getIntValue("fullscreen","Video")) == 1)
|
|
g_pVideoDriver->isFullscreen(true);
|
|
|
|
g_pVideoDriver->setOGLFilter(Parser.getIntValue("OGLfilter","Video"));
|
|
g_pVideoDriver->setZoom(Parser.getIntValue("scale","Video"));
|
|
g_pVideoDriver->setTargetFPS(Parser.getIntValue("autoframeskip","Video"));
|
|
|
|
g_pVideoDriver->setFilter(Parser.getIntValue("filter","Video"));
|
|
|
|
if(Parser.getIntValue("OpenGL","Video") == 1)
|
|
g_pVideoDriver->enableOpenGL(true);
|
|
else
|
|
g_pVideoDriver->enableOpenGL(false);
|
|
|
|
if(Parser.getIntValue("channels","Audio") == 2)
|
|
g_pSound->setSoundmode(Parser.getIntValue("rate","Audio"), true);
|
|
else
|
|
g_pSound->setSoundmode(Parser.getIntValue("rate","Audio"), false);
|
|
}
|
|
|
|
return retval;
|
|
}
|
|
|
|
void CSettings::setOption(stOption *options, int opt, const char *name, char value)
|
|
{
|
|
if (name != NULL)
|
|
options[opt].name = (char*) name;
|
|
|
|
options[opt].value = value;
|
|
}
|
|
|
|
void CSettings::loadDefaultGameCfg(stOption *Option)
|
|
{
|
|
setOption(Option,OPT_FULLYAUTOMATIC, "autogun", 0);
|
|
setOption(Option,OPT_SUPERPOGO, "superpogo", 0);
|
|
setOption(Option,OPT_ALLOWPKING, "pking", 1);
|
|
setOption(Option,OPT_CHEATS, "allcheats", 0);
|
|
setOption(Option,OPT_TWOBUTTON, "two-button-firing", 0);
|
|
setOption(Option,OPT_KEYCARDSTACK, "keycard-stacking", 0);
|
|
setOption(Option,OPT_ANALOGJOYSTICK, "analog-joystick", 1);
|
|
setOption(Option,OPT_LVLREPLAYABILITY, "level replayability", 0);
|
|
}
|
|
|
|
short CSettings::loadGameCfg(stOption *Option)
|
|
{
|
|
short retval = 0;
|
|
int i;
|
|
CParser Parser;
|
|
|
|
if(!Parser.loadParseFile())
|
|
return 1;
|
|
|
|
for (i = 0; i < NUM_OPTIONS; i++)
|
|
{
|
|
Option[i].value = Parser.getIntValue(Option[i].name,"Game");
|
|
if(Option[i].value == -1)
|
|
{
|
|
loadDefaultGameCfg(Option);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return retval;
|
|
|
|
g_pLogFile->ftextOut("<br>Your personal settings were loaded successfully...<br>");
|
|
return 0;
|
|
}
|
|
|
|
void CSettings::saveGameCfg(stOption *Option)
|
|
{
|
|
int i;
|
|
CParser Parser;
|
|
|
|
if(Parser.loadParseFile())
|
|
{
|
|
for (i = 0; i < NUM_OPTIONS; i++)
|
|
Parser.saveIntValue(Option[i].name,"Game",Option[i].value);
|
|
|
|
Parser.saveParseFile();
|
|
}
|
|
|
|
return;
|
|
}
|
|
|