Subversion Repositories spk

Rev

Rev 182 | Rev 197 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 182 Rev 196
Line 35... Line 35...
35
 * Argument:	exe,	String - name of the exe file to find
35
 * Argument:	exe,	String - name of the exe file to find
36
 */
36
 */
37
int CGameExe::_findExe(const Utils::String &exe) const
37
int CGameExe::_findExe(const Utils::String &exe) const
38
{
38
{
39
	CFileIO File(exe);
39
	CFileIO File(exe);
40
	Utils::String e = File.filename();
40
	Utils::String e = File.filenameStr();
41
 
41
 
42
	int count = 0;
42
	int count = 0;
43
	for ( CListNode<SGameExe> *node = m_lExe.Front(); node; node = node->next() )
43
	for ( CListNode<SGameExe> *node = m_lExe.Front(); node; node = node->next() )
44
	{
44
	{
45
		if ( node->Data()->sExe.Compare(e) )
45
		if ( node->Data()->sExe.Compare(e) )
Line 408... Line 408...
408
 
408
 
409
	int gameType = this->GetGameType(dir);
409
	int gameType = this->GetGameType(dir);
410
	if ( gameType != -1 ) {
410
	if ( gameType != -1 ) {
411
		if ( !m_lExe[gameType]->sAddon.empty() ) {
411
		if ( !m_lExe[gameType]->sAddon.empty() ) {
412
			if ( CDirIO(dir).isFile() ) return this->GetGameDir(dir) + "/" + m_lExe[gameType]->sAddon;
412
			if ( CDirIO(dir).isFile() ) return this->GetGameDir(dir) + "/" + m_lExe[gameType]->sAddon;
413
			return CDirIO(this->GetGameDir(dir)).dir(m_lExe[gameType]->sAddon);
413
			return CDirIO(this->GetGameDir(dir)).dir(m_lExe[gameType]->sAddon).toString();
414
		}
414
		}
415
	}
415
	}
416
 
416
 
417
	return CDirIO(dir).isFile() ? CFileIO(dir).dir() : dir;
417
	return CDirIO(dir).isFile() ? CFileIO(dir).dirStr() : dir;
418
}
418
}
419
 
419
 
420
int CGameExe::GetGameFlags(int game)
420
int CGameExe::GetGameFlags(int game)
421
{
421
{
422
	if ( game == -1 )
422
	if ( game == -1 )
Line 473... Line 473...
473
	for ( CListNode<SGameExe> *node = m_lExe.Front(); node; node = node->next() )
473
	for ( CListNode<SGameExe> *node = m_lExe.Front(); node; node = node->next() )
474
	{
474
	{
475
		SGameExe *exe = node->Data();
475
		SGameExe *exe = node->Data();
476
		if ( CDirIO(dir).isFile() ) {
476
		if ( CDirIO(dir).isFile() ) {
477
			if ( CFileIO(dir).filename().Compare(exe->sExe) )
477
			if ( CFileIO(dir).filename().Compare(exe->sExe) )
478
				return CFileIO(dir).dir();
478
				return CFileIO(dir).dirStr();
479
		}
479
		}
480
		else {
480
		else {
481
			if ( Dir.exists(exe->sExe) ) return dir;
481
			if ( Dir.exists(exe->sExe) ) return dir;
482
			// check for addon dir
482
			// check for addon dir
483
			if ( !exe->sAddon.empty() ) {
483
			if ( !exe->sAddon.empty() ) {
484
				if ( exe->sAddon.Compare(Dir.topDir()) )
484
				if ( exe->sAddon.Compare(Dir.topDir().toString()) )
485
					return Dir.back();
485
					return Dir.back().toString();
486
			}
486
			}
487
		}
487
		}
488
	}
488
	}
489
 
489
 
490
	return dir;
490
	return dir;
Line 522... Line 522...
522
		else {
522
		else {
523
			if ( Dir.exists(exe->sExe) )
523
			if ( Dir.exists(exe->sExe) )
524
				return count;
524
				return count;
525
			// check for addon dir
525
			// check for addon dir
526
			if ( !exe->sAddon.empty() ) {
526
			if ( !exe->sAddon.empty() ) {
527
				if ( exe->sAddon.Compare(Dir.topDir()) )
527
				if ( exe->sAddon.Compare(Dir.topDir().toString()) )
528
					return count;
528
					return count;
529
			}
529
			}
530
		}
530
		}
531
		++count;
531
		++count;
532
	}
532
	}
Line 596... Line 596...
596
		CFileIO File(Dir.file(textFileName));
596
		CFileIO File(Dir.file(textFileName));
597
		size_t fileSize;
597
		size_t fileSize;
598
		unsigned char *fileData = File.readAll(&fileSize);
598
		unsigned char *fileData = File.readAll(&fileSize);
599
		if ( fileData && fileSize) 
599
		if ( fileData && fileSize) 
600
		{
600
		{
601
			if (CFileIO(textFileName).isFileExtension("pck"))
601
			if (CFileIO(textFileName).isFileExtension(L"pck"))
602
			{
602
			{
603
				size_t newFileSize;
603
				size_t newFileSize;
604
				unsigned char *pckData = UnPCKData((unsigned char *)fileData, fileSize, &newFileSize);
604
				unsigned char *pckData = UnPCKData((unsigned char *)fileData, fileSize, &newFileSize);
605
				delete fileData;
605
				delete fileData;
606
				pckData[newFileSize - 1] = '\0';
606
				pckData[newFileSize - 1] = '\0';
607
				Utils::String Data((char *)pckData);
607
				Utils::String Data((char *)pckData);
608
				delete pckData;
608
				delete pckData;
609
				return Data;
609
				return Data;
610
			}
610
			}
611
			else if (CFileIO(textFileName).isFileExtension("xml"))
611
			else if (CFileIO(textFileName).isFileExtension(L"xml"))
612
			{
612
			{
613
				Utils::String Data((char *)fileData);
613
				Utils::String Data((char *)fileData);
614
				delete fileData;
614
				delete fileData;
615
				return Data;
615
				return Data;
616
			}
616
			}
Line 716... Line 716...
716
	if ( gameType == -1 )
716
	if ( gameType == -1 )
717
		return -1;
717
		return -1;
718
 
718
 
719
	Utils::String gameDir = gameExe;
719
	Utils::String gameDir = gameExe;
720
	if ( !m_lExe[gameType]->sAddon.empty() )
720
	if ( !m_lExe[gameType]->sAddon.empty() )
721
		gameExe = CDirIO(gameExe).back() + "/" + m_lExe[gameType]->sExe;
721
		gameExe = CDirIO(gameExe).back().toString() + "/" + m_lExe[gameType]->sExe;
722
	else
722
	else
723
		gameExe = gameExe + "/" + m_lExe[gameType]->sExe;
723
		gameExe = gameExe + "/" + m_lExe[gameType]->sExe;
724
	int size = (int)CFileIO(gameExe).GetFilesize();
724
	int size = (int)CFileIO(gameExe).fileSize();
725
 
725
 
726
	int version = this->_findVersion(gameType, size, a_fVersion);
726
	int version = this->_findVersion(gameType, size, a_fVersion);
727
 
727
 
728
	Utils::String sText = this->_extractTextData(this->_readTextFile(gameDir), 1910, 10000, this->getTextID(gameExe));
728
	Utils::String sText = this->_extractTextData(this->_readTextFile(gameDir), 1910, 10000, this->getTextID(gameExe));
729
	Utils::String sVersion = sText.between("ver=", "&amp");
729
	Utils::String sVersion = sText.between("ver=", "&amp");