Subversion Repositories spk

Rev

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

Rev 121 Rev 125
Line 100... Line 100...
100
	SGameExe *sExe = m_lExe[game];
100
	SGameExe *sExe = m_lExe[game];
101
	if ( !sExe ) return "";
101
	if ( !sExe ) return "";
102
 
102
 
103
	return sExe->sModKey;
103
	return sExe->sModKey;
104
}
104
}
-
 
105
 
-
 
106
void CGameExe::GetDirectoryData(GameDirectory *gameDir) const
-
 
107
{
-
 
108
	if (!gameDir)
-
 
109
		return;
-
 
110
	if (CDirIO::Exists(gameDir->dir))
-
 
111
	{
-
 
112
		gameDir->exe = this->GetGameRunExe(gameDir->dir);
-
 
113
		if (CDirIO::Exists(gameDir->exe))
-
 
114
		{
-
 
115
			int id = _findExe(gameDir->exe);
-
 
116
			SGameExe *exe = m_lExe.Get(id);
-
 
117
			if (exe)
-
 
118
			{
-
 
119
				gameDir->addon = exe->sAddon;
-
 
120
				gameDir->name = exe->sName;
-
 
121
				if (exe->iFlags & EXEFLAG_MYDOCLOG)
-
 
122
					gameDir->logdir = exe->sMyDoc;
-
 
123
				else
-
 
124
					gameDir->logdir = gameDir->dir;
-
 
125
				gameDir->basename = exe->sName;
-
 
126
			}
-
 
127
 
-
 
128
			this->GetGameVersion(gameDir->exe, &gameDir->version);
-
 
129
			gameDir->name = this->GetGameName(gameDir->exe);
-
 
130
		}
-
 
131
	}
-
 
132
}
-
 
133
 
105
 
134
 
106
void CGameExe::ParseExe(const Utils::String &line)
135
void CGameExe::ParseExe(const Utils::String &line)
107
{
136
{
108
	// get the exe file
137
	// get the exe file
109
	Utils::String exe = line.token(":", 1);
138
	Utils::String exe = line.token(":", 1);
Line 219... Line 248...
219
		Utils::String gameNum = str.token("!", 1);
248
		Utils::String gameNum = str.token("!", 1);
220
		str = str.token("!", 2);
249
		str = str.token("!", 2);
221
 
250
 
222
		if ( gameNum.isNumber() )
251
		if ( gameNum.isNumber() )
223
			*iName = gameNum;
252
			*iName = gameNum;
224
		else
253
		else
225
			*sName = gameNum;
254
			*sName = gameNum;
226
	}
255
	}
227
 
256
 
228
	if ( str.isNumber() )
257
	if ( str.isNumber() )
229
		*iName = str;
258
		*iName = str;
Line 275... Line 304...
275
	}
304
	}
276
 
305
 
277
	return "";
306
	return "";
278
}
307
}
279
 
308
 
280
Utils::String CGameExe::GetGameName(const Utils::String &gameExe) const
309
Utils::String CGameExe::GetGameBaseName(const Utils::String &gameExe) const
281
{
310
{
282
	int gameType = this->GetGameType(gameExe);
311
	int gameType = this->GetGameType(gameExe);
283
	Utils::String gameDir = this->GetProperDir(gameExe);
312
	Utils::String gameDir = this->GetProperDir(gameExe);
284
	Utils::String gameName = this->ExtractGameName(gameDir);
313
	Utils::String gameName = this->ExtractGameName(gameDir);
285
	if ( gameName.empty() )	gameName = this->GetGameNameFromType(gameType);
314
	if (gameName.empty())	gameName = this->GetGameNameFromType(gameType);
-
 
315
 
-
 
316
	return gameName;
-
 
317
}
-
 
318
 
-
 
319
Utils::String CGameExe::GetGameName(const Utils::String &gameExe) const
-
 
320
{
-
 
321
	Utils::String gameName = GetGameBaseName(gameExe);
286
	if ( gameName.empty() )	return "";
322
	if (gameName.empty()) return "";
287
 
323
 
288
	// no version
324
	// no version
289
	Utils::String fVersion;
325
	Utils::String fVersion;
290
	Utils::String versionName;
326
	Utils::String versionName;
291
 
327
 
292
	if ( this->GetGameVersionName(gameExe, &versionName) ) {
328
	if ( this->GetGameVersionName(gameExe, &versionName) ) 
-
 
329
	{
293
		if ( !versionName.empty() )
330
		if ( !versionName.empty() )
294
			return gameName + " V" + versionName;
331
			return gameName + " V" + versionName;
295
		else
332
		else
296
			return gameName;
333
			return gameName;
297
	}
334
	}
298
 
335
 
-
 
336
	int gameType = this->GetGameType(gameExe);
299
	Utils::String sGameVersion = this->GetGameVersionFromType(gameType, this->GetGameVersion(gameExe, &fVersion), fVersion);
337
	Utils::String sGameVersion = this->GetGameVersionFromType(gameType, this->GetGameVersion(gameExe, &fVersion), fVersion);
300
	if ( sGameVersion.empty() )
338
	if ( sGameVersion.empty() )
301
	{
339
	{
302
		if ( !fVersion.empty() )
340
		if ( !fVersion.empty() )
303
			return gameName + " V" + fVersion;
341
			return gameName + " V" + fVersion;
Line 369... Line 407...
369
	CDirIO Dir(dir);
407
	CDirIO Dir(dir);
370
 
408
 
371
	int gameType = this->GetGameType(dir);
409
	int gameType = this->GetGameType(dir);
372
	if ( gameType != -1 ) {
410
	if ( gameType != -1 ) {
373
		if ( !m_lExe[gameType]->sAddon.empty() ) {
411
		if ( !m_lExe[gameType]->sAddon.empty() ) {
374
			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;
375
			return CDirIO(this->GetGameDir(dir)).dir(m_lExe[gameType]->sAddon);
413
			return CDirIO(this->GetGameDir(dir)).dir(m_lExe[gameType]->sAddon);
376
		}
414
		}
377
	}
415
	}
378
 
416
 
379
	return CDirIO(dir).IsFile() ? CFileIO(dir).dir() : dir;
417
	return CDirIO(dir).isFile() ? CFileIO(dir).dir() : dir;
380
}
418
}
381
 
419
 
382
int CGameExe::GetGameFlags(int game)
420
int CGameExe::GetGameFlags(int game)
383
{
421
{
384
	if ( game == -1 )
422
	if ( game == -1 )
Line 433... Line 471...
433
	CDirIO Dir(dir);
471
	CDirIO Dir(dir);
434
 
472
 
435
	for ( CListNode<SGameExe> *node = m_lExe.Front(); node; node = node->next() )
473
	for ( CListNode<SGameExe> *node = m_lExe.Front(); node; node = node->next() )
436
	{
474
	{
437
		SGameExe *exe = node->Data();
475
		SGameExe *exe = node->Data();
438
		if ( CDirIO(dir).IsFile() ) {
476
		if ( CDirIO(dir).isFile() ) {
439
			if ( CFileIO(dir).filename().Compare(exe->sExe) )
477
			if ( CFileIO(dir).filename().Compare(exe->sExe) )
440
				return CFileIO(dir).dir();
478
				return CFileIO(dir).dir();
441
		}
479
		}
442
		else {
480
		else {
443
			if ( Dir.exists(exe->sExe) ) return dir;
481
			if ( Dir.exists(exe->sExe) ) return dir;
444
			// check for addon dir
482
			// check for addon dir
445
			if ( !exe->sAddon.empty() ) {
483
			if ( !exe->sAddon.empty() ) {
446
				if ( exe->sAddon.Compare(Dir.topDir()) )
484
				if ( exe->sAddon.Compare(Dir.topDir()) )
447
					return Dir.Back().ToString();
485
					return Dir.back();
448
			}
486
			}
449
		}
487
		}
450
	}
488
	}
451
 
489
 
452
	return dir;
490
	return dir;
Line 457... Line 495...
457
	int count = 0;
495
	int count = 0;
458
 
496
 
459
	for ( CListNode<SGameExe> *node = m_lExe.Front(); node; node = node->next() )
497
	for ( CListNode<SGameExe> *node = m_lExe.Front(); node; node = node->next() )
460
	{
498
	{
461
		SGameExe *exe = node->Data();
499
		SGameExe *exe = node->Data();
462
		if ( CDirIO(gameExe).IsFile() ) {
500
		if ( CDirIO(gameExe).isFile() ) {
463
			if ( CFileIO(gameExe).filename().Compare(exe->sExe) )
501
			if ( CFileIO(gameExe).filename().Compare(exe->sExe) )
464
				return count;
502
				return count;
465
		}
503
		}
466
		else {
504
		else {
467
			if ( Dir.exists(exe->sExe) )
505
			if ( Dir.exists(exe->sExe) )
Line 639... Line 677...
639
	if ( gameType == -1 )
677
	if ( gameType == -1 )
640
		return -1;
678
		return -1;
641
 
679
 
642
	Utils::String gameDir = gameExe;
680
	Utils::String gameDir = gameExe;
643
	if ( !m_lExe[gameType]->sAddon.empty() )
681
	if ( !m_lExe[gameType]->sAddon.empty() )
644
		gameExe = CDirIO(gameExe).Back().ToString() + "/" + m_lExe[gameType]->sExe;
682
		gameExe = CDirIO(gameExe).back() + "/" + m_lExe[gameType]->sExe;
645
	else
683
	else
646
		gameExe = gameExe + "/" + m_lExe[gameType]->sExe;
684
		gameExe = gameExe + "/" + m_lExe[gameType]->sExe;
647
	int size = (int)CFileIO(gameExe).GetFilesize();
685
	int size = (int)CFileIO(gameExe).GetFilesize();
648
 
686
 
649
	int version = this->_findVersion(gameType, size, a_fVersion);
687
	int version = this->_findVersion(gameType, size, a_fVersion);