/*********************************************************************
*	SystemConfig
*	HEADER FILE
*	Autor:	Michal Jirouš
*	Datum: 7.7.2008
*	Soubor: systemconf.h
*	Popis: Modul spravujici zakladni informace o systemu jako jsou
* 			rozliseni, bitova hloubka, jazyk. Nacita config ze souboru
* 			a kontroluje dostupnost nastavenych vlastnosti
**********************************************************************/

#ifndef SYSTEMCONF_
#define SYSTEMCONF_

#include <string>
using namespace std;

#include <map>

#include <SDL.h>
#include <SDL_image.h>
#include <SDL_opengl.h>

#define WIN_FLAGS SDL_OPENGL|SDL_HWSURFACE

//basic window definition
#define REQUIRED_FLAGS SDL_OPENGL|SDL_HWSURFACE|SDL_FULLSCREEN


namespace systemconf
{
	//zakladni nastaveni
	const int DEFAULT_RESOLUTION_WIDTH = 640;
	const int DEFAULT_RESOLUTION_HEIGHT = 480;
	const int DEFAULT_BPP = 16;
	const string DEFAULT_LANGUAGE = "ENG";

	const int MINIMUM_WIDTH = 640;
	
	//nazvy parametru v konfiguracnim souboru
	const string COMMAND_RESOLUTION_WIDTH = "resolutionwidth";
	const string COMMAND_RESOLUTION_HEIGHT = "resolutionheight";
	const string COMMAND_BPP = "bpp";
	const string COMMAND_LANGUAGE = "language";
	
	//objekt konfigurace
	struct SystemInfo
	{
		int m_iResolutionWidth;
		int m_iResolutionHeight;
		int m_iBpp;
		string m_sLanguage;
		SystemInfo();
	};	

	
	//pro inicializaci se pouziva jedna nebo druha z nasledujicich funkci, nikdy obe
	bool init();	//otestuje parametry
	bool loadConfig( const char* filename );
	
	//ovladaci funkce
	void saveConfig( const char* filename );
	void setParameter( string &parameter, string &data );
	bool checkAndCorrectParameters();
	SystemInfo &getSystemInfo();
	map<int,int> &getVideoModes();
};




#endif /*SYSTEMCONF_*/

