Subversion Repositories spk

Rev

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

Rev 87 Rev 88
Line 469... Line 469...
469
				}
469
				}
470
				else if ( cmd.Compare("GlobalSetting") )
470
				else if ( cmd.Compare("GlobalSetting") )
471
					m_lGlobals.PushBack(CyString(rest.token(":", 1)), CyString(rest.tokens(":", 2)));
471
					m_lGlobals.PushBack(CyString(rest.token(":", 1)), CyString(rest.tokens(":", 2)));
472
				else if ( cmd.Compare("FakePatchOrder") )
472
				else if ( cmd.Compare("FakePatchOrder") )
473
					m_lFakePatchOrder.PushBack(CyString(rest.token(":", 1)), CyString(rest.tokens(":", 2)));
473
					m_lFakePatchOrder.PushBack(CyString(rest.token(":", 1)), CyString(rest.tokens(":", 2)));
-
 
474
				else if ( cmd.Compare("EMPPriceOverride") )
-
 
475
					this->addEMPPriceOverride(rest.token(" ", 1).toLong(), rest.token(" ", 2).toLong());
-
 
476
				else if ( cmd.Compare("EMPNotoOverride") )
-
 
477
					this->addEMPNotoOverride(rest.token(" ", 1).toLong(), rest.token(" ", 2).toLong());
-
 
478
				else if ( cmd.Compare("BuiltInWarePriceOverride") )
-
 
479
					this->addBuiltInWarePriceOverride(rest.token(" ", 1).toLong(), rest.token(" ", 2).toLong());
-
 
480
				else if ( cmd.Compare("BuiltInWareNotoOverride") )
-
 
481
					this->addBuiltInWareNotoOverride(rest.token(" ", 1).toLong(), rest.token(" ", 2).toLong());
-
 
482
				else if ( cmd.Compare("CustomWarePriceOverride") )
-
 
483
					this->addCustomWarePriceOverride(rest.token(";", 1), rest.token(";", 2).toLong());
-
 
484
				else if ( cmd.Compare("CustomWareNotoOverride") )
-
 
485
					this->addCustomWareNotoOverride(rest.token(";", 1), rest.token(";", 2).toLong());
474
				else if ( cmd == "globalfiles" )
486
				else if ( cmd == "globalfiles" )
475
					iStatus = READ_GLOBAL;
487
					iStatus = READ_GLOBAL;
476
 
488
 
477
				if ( progress )
489
				if ( progress )
478
				{
490
				{
Line 1774... Line 1786...
1774
	if ( package->IsMod() && !disabled ) {
1786
	if ( package->IsMod() && !disabled ) {
1775
		m_pEnabledMod = package;
1787
		m_pEnabledMod = package;
1776
		CLog::log(CLog::Log_Install, 1, "Setting package as primary mod");
1788
		CLog::log(CLog::Log_Install, 1, "Setting package as primary mod");
1777
	}
1789
	}
1778
 
1790
 
-
 
1791
	package->updateTextDB();
-
 
1792
 
1779
	m_bRemoveDir = true;
1793
	m_bRemoveDir = true;
1780
 
1794
 
1781
	CLog::log(CLog::Log_Install, 1, "Saving data to file");
1795
	CLog::log(CLog::Log_Install, 1, "Saving data to file");
1782
	this->WriteData();
1796
	this->WriteData();
1783
 
1797
 
Line 2758... Line 2772...
2758
	{
2772
	{
2759
		for ( SStringList *str = m_lFakePatchOrder.Head(); str; str = str->next )
2773
		for ( SStringList *str = m_lFakePatchOrder.Head(); str; str = str->next )
2760
			lines.PushBack(CyString("FakePatchOrder: ") + str->str + ":" + str->data);
2774
			lines.PushBack(CyString("FakePatchOrder: ") + str->str + ":" + str->data);
2761
	}
2775
	}
2762
 
2776
 
-
 
2777
	for(CListNode<SWarePriceOverride> *node = m_lWarePrices.Front(); node; node = node->next()) {
-
 
2778
		SWarePriceOverride *ware = node->Data();
-
 
2779
		switch(ware->type) {
-
 
2780
			case Ware_EMP:
-
 
2781
				lines.PushBack(CyString(Utils::String("EMPPriceOverride:") + (long)ware->pos + " " + (long)ware->relval));
-
 
2782
				if ( ware->bNotority )
-
 
2783
					lines.PushBack(CyString(Utils::String("EMPNotoOverride:") + (long)ware->pos + " " + (long)ware->notority));
-
 
2784
				break;
-
 
2785
			case Ware_Custom:
-
 
2786
				lines.PushBack(CyString(Utils::String("CustomWarePriceOverride:") + ware->id + ";" + (long)ware->relval));
-
 
2787
				if ( ware->bNotority )
-
 
2788
					lines.PushBack(CyString(Utils::String("CustomWareNotoOverride:") + ware->id + ";" + (long)ware->notority));
-
 
2789
				break;
-
 
2790
			case Ware_BuiltIn:
-
 
2791
				lines.PushBack(CyString(Utils::String("BuiltInWarePriceOverride:") + (long)ware->pos + " " + (long)ware->relval));
-
 
2792
				if ( ware->bNotority )
-
 
2793
					lines.PushBack(CyString(Utils::String("BuiltInWareNotoOverride:") + (long)ware->pos + " " + (long)ware->notority));
-
 
2794
				break;
-
 
2795
		}
-
 
2796
	}
-
 
2797
 
2763
	// write the global file list
2798
	// write the global file list
2764
	lines.PushBack("GlobalFiles:");
2799
	lines.PushBack("GlobalFiles:");
2765
	int num = 0;
2800
	int num = 0;
2766
	for ( CListNode<C_File> *fn = m_lFiles.Front(); fn; fn = fn->next() )
2801
	for ( CListNode<C_File> *fn = m_lFiles.Front(); fn; fn = fn->next() )
2767
	{
2802
	{
Line 5323... Line 5358...
5323
						create = true;
5358
						create = true;
5324
						w->pWare->iDescID = wareTextID;
5359
						w->pWare->iDescID = wareTextID;
5325
						w->iText = wareTextID;
5360
						w->iText = wareTextID;
5326
						wareTextID += 10;
5361
						wareTextID += 10;
5327
						w->iPos = wareLines.Count();
5362
						w->iPos = wareLines.Count();
-
 
5363
						long price = this->customWareOveridePrice(w->pWare->sID);
-
 
5364
						int notority = w->pWare->iNotority;
-
 
5365
						if ( !this->customWareOverideNoto(w->pWare->sID, &notority) ) notority = w->pWare->iNotority;
-
 
5366
						if ( !price ) price = w->pWare->iPrice;
-
 
5367
 
5328
						wareLines.PushBack(CyString("28;0;0;0;0;") + (long)wareLines.Count() + ";" + (long)(w->iText + 3) + ";" + (long)w->pWare->iVolumn + ";" + (long)w->pWare->iPrice + ";1;1;" + (long)w->pWare->iSize + ";" + (long)w->pWare->iPrice + ";" + (long)w->pWare->iNotority + ";0;0;" + w->sWareName.ToUpper() + ";");
5368
						wareLines.PushBack(CyString("28;0;0;0;0;") + (long)wareLines.Count() + ";" + (long)(w->iText + 3) + ";" + (long)w->pWare->iVolumn + ";" + price + ";1;1;" + (long)w->pWare->iSize + ";" + price + ";" + (long)notority + ";0;0;" + w->sWareName.ToUpper() + ";");
5329
					}
5369
					}
5330
				}
5370
				}
5331
 
5371
 
5332
				if ( create )
5372
				if ( create )
5333
				{
5373
				{
Line 5342... Line 5382...
5342
			readFile.remove();
5382
			readFile.remove();
5343
		}
5383
		}
5344
	}
5384
	}
5345
}
5385
}
5346
 
5386
 
5347
void CPackages::CreateEMPFile(CyString progDir)
5387
Utils::String CPackages::empWaresForGame(int *maxsize)
5348
{
5388
{
5349
	// do emp wares
-
 
5350
	int maxsize = 0;
5389
	if ( maxsize ) (*maxsize) = 0;
5351
	Utils::String empWares;
-
 
5352
 
5390
 
5353
	if ( m_iGame == GAME_X3TC )
5391
	if ( m_iGame == GAME_X3TC )
5354
	{
5392
	{
5355
		maxsize = EMP_X3TC;
5393
		if ( maxsize ) (*maxsize) = EMP_X3TC;
5356
		empWares = GetX3TCEmp();
5394
		return GetX3TCEmp();
5357
	}
5395
	}
5358
	else if ( m_iGame == GAME_X3AP )
5396
	else if ( m_iGame == GAME_X3AP )
5359
	{
5397
	{
5360
		maxsize = EMP_X3AP;
5398
		if ( maxsize ) (*maxsize) = EMP_X3AP;
5361
		empWares = GetX3TCEmp();
5399
		return GetX3TCEmp();
5362
	}
5400
	}
5363
	else if ( m_iGame == GAME_X3 )
5401
	else if ( m_iGame == GAME_X3 )
5364
	{
5402
	{
5365
		maxsize = EMP_X3;
5403
		if ( maxsize ) (*maxsize) = EMP_X3;
5366
		empWares = GetX3Emp();
5404
		return GetX3Emp();
5367
	}
5405
	}
5368
 
5406
 
-
 
5407
	return Utils::String::Null();
-
 
5408
}
-
 
5409
 
-
 
5410
void CPackages::_addWareOverride(enum WareTypes type, int pos, const Utils::String &id, int value, bool noto)
-
 
5411
{
-
 
5412
	for(CListNode<SWarePriceOverride> *node = m_lWarePrices.Front(); node; node = node->next()) {
-
 
5413
		SWarePriceOverride *wp = node->Data();
-
 
5414
		if ( wp->type == type ) {
-
 
5415
			if ( wp->type == Ware_Custom && !wp->id.Compare(id) ) continue;
-
 
5416
			else if ( wp->type != Ware_Custom && wp->pos != pos ) continue;
-
 
5417
			if ( noto ) {
-
 
5418
				wp->notority  = value;
-
 
5419
				wp->bNotority = value;
-
 
5420
			}
-
 
5421
			else wp->relval = value;
-
 
5422
			return;
-
 
5423
		}
-
 
5424
	}
-
 
5425
 
-
 
5426
	SWarePriceOverride *ware = new SWarePriceOverride;
-
 
5427
	ware->bNotority = noto;
-
 
5428
	ware->notority = (noto) ? value : 0;
-
 
5429
	ware->relval = (noto) ? 0 : value;
-
 
5430
	ware->type = type;
-
 
5431
	ware->pos = pos;
-
 
5432
	ware->id = id;
-
 
5433
 
-
 
5434
	m_lWarePrices.push_back(ware);
-
 
5435
}
-
 
5436
 
-
 
5437
void CPackages::addEMPPriceOverride(int empId, int price)
-
 
5438
{
-
 
5439
	_addWareOverride(Ware_EMP, empId, Utils::String::Null(), price, false);
-
 
5440
}
-
 
5441
 
-
 
5442
void CPackages::addEMPNotoOverride(int empId, int noto)
-
 
5443
{
-
 
5444
	_addWareOverride(Ware_EMP, empId, Utils::String::Null(), noto, true);
-
 
5445
}
-
 
5446
 
-
 
5447
void CPackages::addBuiltInWarePriceOverride(int empId, int price)
-
 
5448
{
-
 
5449
	_addWareOverride(Ware_BuiltIn, empId, Utils::String::Null(), price, false);
-
 
5450
}
-
 
5451
 
-
 
5452
void CPackages::addBuiltInWareNotoOverride(int empId, int noto)
-
 
5453
{
-
 
5454
	_addWareOverride(Ware_BuiltIn, empId, Utils::String::Null(), noto, false);
-
 
5455
}
-
 
5456
 
-
 
5457
void CPackages::addCustomWarePriceOverride(const Utils::String &id, int price)
-
 
5458
{
-
 
5459
	_addWareOverride(Ware_Custom, 0, id, price, false);
-
 
5460
}
-
 
5461
 
-
 
5462
void CPackages::addCustomWareNotoOverride(const Utils::String &id, int noto)
-
 
5463
{
-
 
5464
	_addWareOverride(Ware_Custom, 0, id, noto, true);
-
 
5465
}
-
 
5466
 
-
 
5467
 
-
 
5468
void CPackages::CreateEMPFile(CyString progDir)
-
 
5469
{
-
 
5470
	// do emp wares
-
 
5471
	int maxsize = 0;
-
 
5472
	Utils::String empWares = empWaresForGame(&maxsize);
-
 
5473
 
5369
	if ( maxsize )
5474
	if ( maxsize )
5370
	{
5475
	{
5371
		int e = ExtractGameFile("types/TWareT.pck", m_sTempDir + "/TWareT.txt");
5476
		int e = ExtractGameFile("types/TWareT.pck", m_sTempDir + "/TWareT.txt");
5372
		if ( e )
5477
		if ( e )
5373
		{
5478
		{
Line 5376... Line 5481...
5376
			int oldSize = -1;
5481
			int oldSize = -1;
5377
			int version = -1;
5482
			int version = -1;
5378
 
5483
 
5379
			// read first number
5484
			// read first number
5380
			CFileIO readFile((e == -1) ? "TWareT.txt" : m_sTempDir + "/TWareT.txt");
5485
			CFileIO readFile((e == -1) ? "TWareT.txt" : m_sTempDir + "/TWareT.txt");
5381
			std::vector<CyString> *lines = readFile.ReadLines();
5486
			std::vector<Utils::String> *lines = readFile.readLines();
5382
			if ( lines )
5487
			if ( lines )
5383
			{
5488
			{
5384
				for ( int i = 0; i < (int)lines->size(); i++ )
5489
				for ( int i = 0; i < (int)lines->size(); i++ )
5385
				{
5490
				{
5386
					CyString line(lines->at(i));
5491
					Utils::String line(lines->at(i));
5387
					line.RemoveFirstSpace();
5492
					line.removeFirstSpace();
5388
					line.RemoveChar('\r');
5493
					line.removeChar('\r');
5389
					line.RemoveChar(9);
5494
					line.removeChar(9);
5390
					if ( line[0] == '/' )
5495
					if ( line[0] == '/' )
5391
						continue;
5496
						continue;
5392
 
5497
 
5393
					if ( oldSize == -1 )
5498
					if ( oldSize == -1 )
5394
					{
5499
					{
5395
						version = line.GetToken(";", 1, 1).ToInt();
5500
						version = line.token(";", 1).toLong();
5396
						oldSize = line.GetToken(";", 2, 2).ToInt();
5501
						oldSize = line.token(";", 2).toLong();
5397
					}
5502
					}
5398
					else
5503
					else
5399
					{
5504
					{
5400
						line.RemoveEndSpace();
5505
						line.removeEndSpace();
5401
						if ( line.Right(1) != ";" )
5506
						if ( line.right(1) != ";" )
5402
							line += ";";
5507
							line += ";";
-
 
5508
 
-
 
5509
						// check for any override values for built in wares
-
 
5510
						if ( (i >= 62 && i <= 81) || (i >= 88 && i <= 93) ) {
-
 
5511
							int pos = i - ((i >= 88) ? 88 : 62);
-
 
5512
							int price = this->builtInWareOveridePrice(pos);
-
 
5513
							if ( price ) {
-
 
5514
								line = line.replaceToken(";", 9, Utils::String::Number(price));
-
 
5515
								line = line.replaceToken(";", 13, Utils::String::Number(price));
-
 
5516
							}
-
 
5517
 
-
 
5518
							int noto = 0;
-
 
5519
							if ( this->builtInWareOverideNoto(pos, &noto) ) {
-
 
5520
								line = line.replaceToken(";", 14, Utils::String::Number(noto));
-
 
5521
							}
-
 
5522
						}
-
 
5523
 
-
 
5524
						// check for any override values for EMP
-
 
5525
						if ( i >= 116 ) {
-
 
5526
							int price = this->empOveridePrice(i - 116);
-
 
5527
							if ( price ) {
-
 
5528
								line = line.replaceToken(";", 9, Utils::String::Number(price));
-
 
5529
								line = line.replaceToken(";", 13, Utils::String::Number(price));
-
 
5530
							}
-
 
5531
 
-
 
5532
							int noto = 0;
-
 
5533
							if ( this->empOverideNoto(i - 116, &noto) ) {
-
 
5534
								line = line.replaceToken(";", 14, Utils::String::Number(noto));
-
 
5535
							}
-
 
5536
						}
-
 
5537
 
5403
						wareLines.PushBack(line);
5538
						wareLines.PushBack(CyString(line));
5404
						if ( wareLines.Count() >= oldSize )
5539
						if ( wareLines.Count() >= oldSize )
5405
							break;
5540
							break;
5406
					}
5541
					}
5407
				}
5542
				}
5408
 
5543
 
Line 5413... Line 5548...
5413
			// need filler entries
5548
			// need filler entries
5414
			while ( wareLines.Count() < maxsize )
5549
			while ( wareLines.Count() < maxsize )
5415
				wareLines.PushBack("27;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;SS_WARE_FILLER;");
5550
				wareLines.PushBack("27;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;SS_WARE_FILLER;");
5416
 
5551
 
5417
			int empEntries = 0;
5552
			int empEntries = 0;
5418
			CyString *empStr = CyString(empWares).SplitToken("\n", &empEntries);
5553
			Utils::String *empStr = empWares.tokenise("\n", &empEntries);
5419
 
5554
 
5420
			if ( empEntries && empStr )
5555
			if ( empEntries && empStr )
5421
			{
5556
			{
-
 
5557
				// apply any price overrides
-
 
5558
				for(int i = 0; i < empEntries; i++) {
-
 
5559
					int price = this->empOveridePrice(i);
-
 
5560
					if ( price ) {
-
 
5561
						empStr[i] = empStr[i].replaceToken(";", 9, Utils::String::Number(price));
-
 
5562
						empStr[i] = empStr[i].replaceToken(";", 13, Utils::String::Number(price));
-
 
5563
					}
-
 
5564
 
-
 
5565
					int noto = 0;
-
 
5566
					if ( this->empOverideNoto(i, &noto) ) {
-
 
5567
						empStr[i] = empStr[i].replaceToken(";", 14, Utils::String::Number(noto));
-
 
5568
					}
-
 
5569
				}
5422
				// remove any empty end entries
5570
				// remove any empty end entries
5423
				while ( empStr[empEntries - 1].Empty() )
5571
				while ( empStr[empEntries - 1].empty() )
5424
					--empEntries;
5572
					--empEntries;
5425
 
5573
 
5426
				CyStringList addAfter;
5574
				CyStringList addAfter;
5427
				if ( wareLines.Count() > maxsize )
5575
				if ( wareLines.Count() > maxsize )
5428
				{
5576
				{
Line 6843... Line 6991...
6843
			WriteFile.remove();
6991
			WriteFile.remove();
6844
		}
6992
		}
6845
	}
6993
	}
6846
}
6994
}
6847
 
6995
 
-
 
6996
bool CPackages::readWares(Utils::CStringList &list)
-
 
6997
{
-
 
6998
	CTextDB text;
-
 
6999
	// read through all text files and extract all the used wares
-
 
7000
	for(CListNode<C_File> *node = m_lFiles.Front(); node; node = node->next()) {
-
 
7001
		C_File *file = node->Data();
-
 
7002
		if ( file->GetFileType() == FILETYPE_TEXT ) {
-
 
7003
			Utils::String baseFile = CFileIO(file->filePointer()).baseName();
-
 
7004
			int lang = (baseFile.isin("-L")) ? baseFile.right(3) : baseFile.truncate(-4);
-
 
7005
 
-
 
7006
			// read in the text file to the database
-
 
7007
			text.parseTextFile(17, 17, file->filePointer(), lang);
-
 
7008
		}
-
 
7009
	}
-
 
7010
 
-
 
7011
	text.setLanguage(44);
-
 
7012
 
-
 
7013
	// now go through all emp wares and get the ones we have text for
-
 
7014
	Utils::String empWares = empWaresForGame();
-
 
7015
	int totalWares = 0;
-
 
7016
	Utils::String *wares = empWares.tokenise("\n", &totalWares);
-
 
7017
	
-
 
7018
	for(int i = 0; i < totalWares; i++) {
-
 
7019
		int textId = wares[i].token(";", 7).toLong();
-
 
7020
		if ( text.exists(44, 17, textId) ) {
-
 
7021
			list.pushBack(text.get(44, 17, textId), text.get(44, 17, textId + 1));
-
 
7022
		}
-
 
7023
	}
-
 
7024
 
-
 
7025
	CLEANSPLIT(wares, totalWares);
-
 
7026
 
-
 
7027
	return true;
-
 
7028
}
-
 
7029
 
-
 
7030
int CPackages::_warePriceOverride(enum WareTypes type, int pos, const Utils::String &id)
-
 
7031
{
-
 
7032
	for(CListNode<SWarePriceOverride> *node = m_lWarePrices.Front(); node; node = node->next()) {
-
 
7033
		if ( node->Data()->type == type ) {
-
 
7034
			if ( node->Data()->type == Ware_Custom && id.Compare(node->Data()->id) ) return node->Data()->relval;
-
 
7035
			else if ( node->Data()->type != Ware_Custom && node->Data()->pos == pos ) return node->Data()->relval;
-
 
7036
		}
-
 
7037
	}
-
 
7038
	return 0;
-
 
7039
}
-
 
7040
 
-
 
7041
bool CPackages::_wareNotoOverride(enum WareTypes type, int pos, const Utils::String &id, int *noto)
-
 
7042
{
-
 
7043
	for(CListNode<SWarePriceOverride> *node = m_lWarePrices.Front(); node; node = node->next()) {
-
 
7044
		if ( node->Data()->type == type && node->Data()->bNotority ) {
-
 
7045
			if ( node->Data()->type == Ware_Custom && !id.Compare(node->Data()->id) ) continue;
-
 
7046
			else if ( node->Data()->type != Ware_Custom && node->Data()->pos != pos ) continue;
-
 
7047
		
-
 
7048
			(*noto) = node->Data()->notority;
-
 
7049
			return true;
-
 
7050
		}
-
 
7051
	}
-
 
7052
	return false;
-
 
7053
}
-
 
7054
 
-
 
7055
void CPackages::_removeWareOverride(enum WareTypes type, int pos, const Utils::String &id)
-
 
7056
{
-
 
7057
	for(CListNode<SWarePriceOverride> *node = m_lWarePrices.Front(); node; node = node->next()) {
-
 
7058
		if ( node->Data()->type == type ) {
-
 
7059
			if ( node->Data()->type == Ware_Custom && !id.Compare(node->Data()->id) ) continue;
-
 
7060
			else if ( node->Data()->type != Ware_Custom && node->Data()->pos != pos ) continue;
-
 
7061
			m_lWarePrices.remove(node);
-
 
7062
			break;
-
 
7063
		}
-
 
7064
	}
-
 
7065
}
-
 
7066
 
-
 
7067
int CPackages::empOveridePrice(int id)
-
 
7068
{
-
 
7069
	return _warePriceOverride(Ware_EMP, id, Utils::String::Null()); 
-
 
7070
}
-
 
7071
 
-
 
7072
bool CPackages::empOverideNoto(int id, int *noto)
-
 
7073
{
-
 
7074
	return _wareNotoOverride(Ware_EMP, id, Utils::String::Null(), noto);
-
 
7075
}
-
 
7076
 
-
 
7077
int CPackages::builtInWareOveridePrice(int id)
-
 
7078
{
-
 
7079
	return _warePriceOverride(Ware_BuiltIn, id, Utils::String::Null()); 
-
 
7080
}
-
 
7081
 
-
 
7082
bool CPackages::builtInWareOverideNoto(int id, int *noto)
-
 
7083
{
-
 
7084
	return _wareNotoOverride(Ware_BuiltIn, id, Utils::String::Null(), noto);
-
 
7085
}
-
 
7086
 
-
 
7087
int CPackages::customWareOveridePrice(const Utils::String &id)
-
 
7088
{
-
 
7089
	return _warePriceOverride(Ware_Custom, 0, id); 
-
 
7090
}
-
 
7091
 
-
 
7092
bool CPackages::customWareOverideNoto(const Utils::String &id, int *noto)
-
 
7093
{
-
 
7094
	return _wareNotoOverride(Ware_Custom, 0, id, noto);
-
 
7095
}
-
 
7096
 
-
 
7097
void CPackages::removeEmpOverride(int pos)
-
 
7098
{
-
 
7099
	_removeWareOverride(Ware_EMP, pos, Utils::String::Null());
-
 
7100
}
-
 
7101
 
-
 
7102
void CPackages::removeBuiltinWareOverride(int pos)
-
 
7103
{
-
 
7104
	_removeWareOverride(Ware_BuiltIn, pos, Utils::String::Null());
-
 
7105
}
-
 
7106
 
-
 
7107
void CPackages::removeCustomWareOverride(const Utils::String &id)
-
 
7108
{
-
 
7109
	_removeWareOverride(Ware_Custom, 0, id);
-
 
7110
}
-
 
7111
 
-
 
7112
 
6848
bool CPackages::ReadGlobals(CyStringList &globals)
7113
bool CPackages::ReadGlobals(CyStringList &globals)
6849
{
7114
{
6850
	int e = ExtractGameFile("types/Globals.pck", m_sTempDir);
7115
	int e = ExtractGameFile("types/Globals.pck", m_sTempDir);
6851
	if ( e )
7116
	if ( e )
6852
	{
7117
	{