Subversion Repositories spk

Rev

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

Rev 264 Rev 274
Line 28... Line 28...
28
	m_pModTexts = new CTextDB();
28
	m_pModTexts = new CTextDB();
29
 
29
 
30
	m_sAddon = L"";
30
	m_sAddon = L"";
31
 
31
 
32
	m_iLang = 0;
32
	m_iLang = 0;
-
 
33
 
-
 
34
	_lAddons = new Utils::WStringList();
-
 
35
	_lAddons->pushBack("addon2");
-
 
36
	_lAddons->pushBack("addon");
33
}
37
}
34
 
38
 
35
CVirtualFileSystem::~CVirtualFileSystem(void)
39
CVirtualFileSystem::~CVirtualFileSystem(void)
36
{
40
{
37
	_clear();
41
	_clear();
38
 
42
 
39
	if ( m_pTexts )		delete m_pTexts;
43
	if ( m_pTexts )		delete m_pTexts;
40
	if ( m_pModTexts )  delete m_pModTexts;
44
	if ( m_pModTexts )  delete m_pModTexts;
-
 
45
	if (_lAddons) delete _lAddons;
41
}
46
}
42
 
47
 
43
void CVirtualFileSystem::setAddon(const Utils::WString &addon)
48
void CVirtualFileSystem::setAddon(const Utils::WString &addon)
44
{ 
49
{ 
45
	m_sAddon = addon; 
50
	m_sAddon = addon; 
Line 394... Line 399...
394
	return sFile;
399
	return sFile;
395
}
400
}
396
 
401
 
397
Utils::WString CVirtualFileSystem::extractGameFile(const Utils::WString &file, const Utils::WString &to)
402
Utils::WString CVirtualFileSystem::extractGameFile(const Utils::WString &file, const Utils::WString &to)
398
{
403
{
399
	Utils::WString sIn = _findFile(file);
404
	Utils::WString sIn;
400
	Utils::WString sFile = file;
405
	Utils::WString sFile;
-
 
406
 
-
 
407
	if (!m_sAddon.empty())
-
 
408
	{
-
 
409
		sIn = _findFile(m_sAddon + L"\\" + file);
-
 
410
		sFile = m_sAddon + L"\\" + file;
-
 
411
		if (sIn.empty())
-
 
412
		{
-
 
413
			sIn = _findFile(file);
-
 
414
			sFile = file;
-
 
415
		}
-
 
416
	}
-
 
417
	else
-
 
418
	{
-
 
419
		sIn = _findFile(file);
-
 
420
		sFile = file;
-
 
421
	}
-
 
422
 
-
 
423
	if (sIn.empty() && _lAddons)
-
 
424
	{
-
 
425
		for (auto itr = _lAddons->begin(); itr != _lAddons->end(); itr++)
-
 
426
		{
-
 
427
			sIn = _findFile((*itr)->str + L"\\" + file);
-
 
428
			sFile = (*itr)->str + L"\\" + file;
-
 
429
			if (!sIn.empty())
-
 
430
				break;
-
 
431
		}
-
 
432
	}
401
 
433
 
402
	if (sIn.empty()) return L"";
434
	if (sIn.empty())
-
 
435
		return L"";
403
 
436
 
404
	if (sIn.contains(L"::"))
437
	if (sIn.contains(L"::"))
405
	{
438
	{
406
		sFile = sIn.token(L"::", 2);
439
		sFile = sIn.token(L"::", 2);
407
		sIn = sIn.token(L"::", 1);
440
		sIn = sIn.token(L"::", 1);
Line 478... Line 511...
478
	//TODO: check for better finding of files in map
511
	//TODO: check for better finding of files in map
479
	for ( FileListItr itr = m_pMap->begin(); itr != m_pMap->end(); ++itr ) {
512
	for ( FileListItr itr = m_pMap->begin(); itr != m_pMap->end(); ++itr ) {
480
		Utils::WString str = itr->first;
513
		Utils::WString str = itr->first;
481
 
514
 
482
		if ( !m_sAddon.empty() ) {
515
		if ( !m_sAddon.empty() ) {
483
			if ( !str.left(m_sAddon.length() + 3).Compare(m_sAddon + L"/t/") && !str.left(m_sAddon.length() + 3).Compare(m_sAddon + L"\\t\\") )
516
			if ( !str.left(static_cast<long>(m_sAddon.length()) + 3).Compare(m_sAddon + L"/t/") && !str.left(static_cast<long>(m_sAddon.length()) + 3).Compare(m_sAddon + L"\\t\\") )
484
				continue;
517
				continue;
485
		}
518
		}
486
		else {
519
		else {
487
			if ( !str.left(2).Compare(L"t\\") && !str.left(2).Compare(L"t/") && !str.left(8).Compare(L"addon\t\\") && !str.left(8).Compare(L"addon/t/") )
520
			if ( !str.left(2).Compare(L"t\\") && !str.left(2).Compare(L"t/") && !str.left(8).Compare(L"addon\t\\") && !str.left(8).Compare(L"addon/t/") )
488
				continue;
521
				continue;
Line 537... Line 570...
537
	// read all text files
570
	// read all text files
538
	for ( FileListItr itr = pFileList->begin(); itr != pFileList->end(); ++itr ) {
571
	for ( FileListItr itr = pFileList->begin(); itr != pFileList->end(); ++itr ) {
539
		Utils::WString str = itr->first;
572
		Utils::WString str = itr->first;
540
 
573
 
541
		if ( !m_sAddon.empty() ) {
574
		if ( !m_sAddon.empty() ) {
542
			if ( !str.left(m_sAddon.length() + 3).Compare(m_sAddon + L"/t/") && !str.left(m_sAddon.length() + 3).Compare(m_sAddon + L"\\t\\") )
575
			if ( !str.left(static_cast<long>(m_sAddon.length()) + 3).Compare(m_sAddon + L"/t/") && !str.left(static_cast<long>(m_sAddon.length()) + 3).Compare(m_sAddon + L"\\t\\") )
543
				continue;
576
				continue;
544
		}
577
		}
545
		else {
578
		else {
546
			if ( !str.left(2).Compare(L"t\\") && !str.left(2).Compare(L"t/") )
579
			if ( !str.left(2).Compare(L"t\\") && !str.left(2).Compare(L"t/") )
547
				continue;
580
				continue;