www.pudn.com > Gimcrack-v0.0051-Source.zip > settings.cpp


#include 
#include 
using namespace std;

#include "settings.h"
#include "global.h" 

///////////////////////////////////////////////////////////////////////// 
 
int	 GcSettings::screenWidth	= SCREEN_WIDTH; 
int	 GcSettings::screenHeight	= SCREEN_HEIGHT; 
int	 GcSettings::screenDepth	= SCREEN_DEPTH; 
int	 GcSettings::fullScreen		= FULL_SCREEN; 
 
int	 GcSettings::renderMethod	= REND_USE_ARRAY; 
int	 GcSettings::useColor		= 0; 
int	 GcSettings::useLight		= 0; 
 
int  GcSettings::useFog			= 0; 
int  GcSettings::fogDepth		= 1300; 
 
int  GcSettings::drawSkybox		= 0; 
int	 GcSettings::showDebug		= 0; 
int	 GcSettings::showHUD		= 0; 
 
int  GcSettings::detailTex		= 32; 
 
int	 GcSettings::scale			= 200; 
int	 GcSettings::heightScale	= 20; 
 
bool GcSettings::multiTexture	= 0; 
bool GcSettings::videoMemory	= 0; 
bool GcSettings::gravity		= 0; 
 
char GcSettings::heighMapPath[80]; 
char GcSettings::landTexPath[80]; 

/////////////////////////////////////////////////////////////////////////

GcSettings::GcSettings()
{
}

/////////////////////////////////////////////////////////////////////////

GcSettings::~GcSettings()
{

}

/////////////////////////////////////////////////////////////////////////

bool GcSettings::ReadSettings()
{	 
	// Default settings sett 
	strcpy(heighMapPath, "data/heightmaps/Rocky/height.bmp"); 
	strcpy(landTexPath, "data/heightmaps/Rocky/land.tga"); 
	
	// Open the options file
	static ifstream fin("data/options.ini");

	// Can't open the file?
	if(!fin) 
	{
		// The file didn't exist so create one
		WriteSettings();
	
		// Write the failure to the log file
		//WriteLog("Failure to read options\n");

		// Return failure to read the options
		return false;
	}
 
	// Some temp variables
	string line, setting;
	int value;	
	
	const char DELIM = '=';

	while(getline(fin,line)) // Get a line from the file
	{
		setting = line.substr(0, line.find(DELIM));				// Read setting name
		value = atoi(line.substr(line.find(DELIM)+1).c_str());	// Read value and convert to int (works fine aslong as only bool and int values are being used)
		
		// Set setting, all lines without matching if statement here will be ignored
		if(setting == "screenWidth ") {
			screenWidth = value; 
		}
		else if(setting == "screenHeight ") {
			screenHeight = value; 
		}
		else if(setting == "screenDepth ") {
			screenDepth = value; 
		}
		else if(setting == "fullScreen ") {
			fullScreen = value; 
		}
		else if(setting == "renderMethod ") {
			renderMethod = value; 
		}
		else if(setting == "useColor ") {
			useColor = value; 
		}
		else if(setting == "useLight ") {
			useLight = value; 
		} 
		else if(setting == "useFog ") { 
			useFog = value; 
		} 
		else if(setting == "fogDepth ") { 
			fogDepth = value; 
		} 
		else if(setting == "drawSkybox ") { 
			drawSkybox = value; 
		}
		else if(setting == "showDebug ") {
			showDebug = value; 
		}
		else if(setting == "showHUD ") {
			showHUD = value; 
		} 
		else if(setting == "detailTex ") { 
			detailTex = value; 
		}
		else if(setting == "scale ") {
			scale = value; 
		}
		else if(setting == "heightScale ") {
			heightScale = value; 
		} 
		else if(setting == "heighMapPath ") { 
			strcpy(heighMapPath, line.substr(line.find(DELIM)+2).c_str()); 
		} 
		else if(setting == "landTexPath ") { 
			strcpy(landTexPath, line.substr(line.find(DELIM)+2).c_str()); 
		}
	}
	
	// Close the file
	fin.close();

	return true;
}

/////////////////////////////////////////////////////////////////////////

bool GcSettings::WriteSettings()
{
	// Open the file for writing
	static ofstream fout("data/options.ini");

	// Can't open the file?
	if(!fout) {

		// Write the faliour to write to the log file
		//WriteLog("Faliour to write options\n");

		// Return faliour
		return false;
	}

	// Write the settings
	fout << "screenWidth = " << screenWidth << endl;
	fout << "screenHeight = " << screenHeight << endl;
	fout << "screenDepth = " << screenDepth << endl;
	fout << "fullScreen = " << fullScreen << endl << endl;

	fout << "renderMethod = " << renderMethod << endl;
	fout << "useColor = " << useColor << endl;
	fout << "useLight = " << useLight << endl << endl; 
 
	fout << "useFog = " << useFog << endl; 
	fout << "fogDepth = " << fogDepth << endl << endl;
 
	fout << "drawSkybox = " << drawSkybox<< endl;
	fout << "showDebug = " << showDebug << endl;
	fout << "showHUD = " << showHUD << endl << endl; 
 
	fout << "detailTex = " << detailTex << endl << endl;

	fout << "scale = " << scale << endl;
	fout << "heightScale = " << heightScale << endl << endl; 
 
	fout << "heighMapPath = " << heighMapPath << endl; 
	fout << "landTexPath = " << landTexPath << endl;

	// Close the file
	fout.close();

	return true;
}

/////////////////////////////////////////////////////////////////////////