// Open SanAndreas
// (c) 2006-2008 Stanislav "listener" Golovin
// 
// miscellaneous file operations 
// NOTE: прототипы ридеров различных конфигов тоже размещаются здесь

// прочитать строку, заменить в ней все запятые на пробелы. Возвращается указатель на первый непробелльный символ
extern char * getConfigLine (FILE * f); // >> 536F80 (74)

// TODO: после того, как форматы файлов будут полностью разобраны, 
//	будет продумана структура бинарного конфига и сделана одна единственная функция,
//	которая будет его загружать.
//	Для совместимости с текстовыми форматами, будет сделан выносной компилятор
//	Возможно, но не обязательно, будет сделан визуальный редактор.
extern void readGameConfig (char * filename);	// >> 5B9030 (1)

// перейти в каталог, относительно каталога игры
extern char * currentPath;

///char * initUserDir ();	// initialize path to user directories (XREF: 3)
void chdirUserDir ();
void chdirProgramDir (char * relPath);	

// обертка вокруг всех файловых операций
// TODO: где-то неподалеку должен быть CStreaming, возможно он войдет сюда же
// TODO: еще, предположительно, часть CRwStream тоже пойдет сюда
class CFileMgr {
public:
	CFileMgr ();
	~CFileMgr ();

	FILE * openFileInProgramDir (char * relPath);
	FILE * openFileInUserDir (char * relPath);
	// TODO: memory-mapped versions

	void initialize ();	// вызывается из WinMain -- получить все необходимые пути

	char	programPath[MAX_PATH];
	char	userPath[MAX_PATH];
	// TODO: возможно, стоит получить здесь и DVD-путь
};

extern CFileMgr	fileManager;

extern char * saveFilePrefix;	// TODO: CFileMgr::saveFilePrefix