/*/////////////////////////////////////////
//	Class: CGameVars - header file
//	Autor: Michal Jirous
//	Popis: Trida uzivajici hashovaci tabulku pro ukladani promenych. Trida je
//	jakousi databazi vsech promenych	
//
//////////////////////////////////////////*/

#ifndef __GAMEVAR_H__
#define __GAMEVAR_H__

#include "math.h"
#include "hashtable.h"

#define HASH_HEIGHT	10		//pouzita vyska tabulky

enum vartypes				//Typy ukladanych dat
{
	VAR_INT = 0,
	VAR_FLOAT = 1,
	VAR_STRING = 2
};
const int BUFFER_SIZE = 256;
struct variable				//objekt pro ulozeni do tabulky, nese 3 mozne typy dat
{
	string sdata;
	float fdata;
	int idata;
	short int type;
	variable() :  sdata(string("0")){}
	string print(void)
	{
		char buf[BUFFER_SIZE];
		switch(type)
		{
			case VAR_INT:
				sprintf_s(buf,BUFFER_SIZE,"%d",idata);
				break;
			case VAR_FLOAT:
				sprintf_s(buf,BUFFER_SIZE,"%f",fdata);
				break;
			case VAR_STRING:
				return sdata;
			default:
				return string("");
		}
		return string(buf);
	}
};
namespace gamevarsLibrary
{
	void init();
	bool setVariable(string key, int data);			//Pretizene funkce, pro zmenu hodnot dat objektu tabulky
	bool setVariable(string key, float data);
	bool setVariable(string key, string data);

	void addVar(string key,int data);				//Pretizene funkce, pro pridani objektu do tabulky
	void addVar(string key, float data);
	void addVar(string key, string data);
	
	variable *getVariable(string key);				//vraci ukazatel na objekt
	
	int getiData(string key);						//Funkce vraci hodnotu int objektu tabulky
	float getfData(string key);						//pro float
	string getsData(string key);					//pro string


};

#endif
