Subversion Repositories spk

Rev

Rev 1 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 cycrow 1
#ifndef __GAME_EXE_H__
2
#define __GAME_EXE_H__
3
 
4
#include "CyString.h"
5
#include "lists.h"
6
#include "File.h"
7
 
8
#define EXEFLAG_NONE			0
9
#define EXEFLAG_TCTEXT			1
10
#define EXEFLAG_MYDOCLOG		2
11
#define EXEFLAG_NOXOR			4
12
#define EXEFLAG_NOSAVESUBDIR	8
13
#define EXEFLAG_ADDON			16
14
 
15
#define EXE_VERSIONPOS			7
16
#define EXE_VERSION_NAMESTART	(EXE_VERSIONPOS + 2)
17
#define EXE_VERSION_SIZESTART	(EXE_VERSIONPOS + 1)
18
 
19
tstruct SGameExeVersion {
20
	CyString	sName;
21
	int			iName;
22
	CyString	fVersion;
23
	CLinkList<int> lSize;
24
} SGameExeVersion;
25
 
26
tstruct SGameExe {
27
	CyString sExe;
28
	CyString sName;
29
	CyString sModKey;
30
	int		 iFlags;
31
	int		 iMaxPatch;
32
	int		 iName;
33
	CyString sMyDoc;
34
	CyString sAddon;
35
	int		 iAddonTo;
36
	CLinkList<SGameExeVersion> lVersions;
37
} SGameExe;
38
 
39
class SPKEXPORT CGameExe 
40
{
41
public:
42
	void Reset();
43
 
44
	void ParseExe(CyString line);
45
	int  ParseFlags(CyString flags);
46
	bool ReadFile(CyString file);
47
 
48
	int AddExe(CyString exe);
49
	int FindExe(CyString exe);
50
	SGameExe *GetGameExe(CyString exe);
51
 
52
	int FindVersion(int exe, int size, CyString *fVersion);
53
	int FindVersion(CyString exe, int size, CyString *fVersion);
54
 
55
	int GetGameType(CyString gameExe);
56
	int GetGameVersion(CyString gameExe, CyString *fVersion);
57
	bool GetGameVersionName(CyString gameExe, CyString *versionName);
58
	CyString ExtractGameName(CyString dir);
59
	CyString GetGameRunExe(CyString dir);
60
	CyString GetGameName(CyString gameExe);
61
	CyString GetGameNameFromType(int type);
62
	CyString GetGameVersionFromType(int game, int gameVersion, CyString fGameVersion);
63
	CyString GetGameDir(CyString dir);
64
	CyString GetProperDir(CyString dir);
65
	CyString GetAddonDir(CyString dir);
66
	int GetGameAddons(CyString dir, CyStringList &exe);
67
	int GetGameFlags(int game);
68
	int GetMaxPatch(int game);
69
	CyString GetModKey(int game);
70
 
71
	int ConvertGameType(int gametype, int *version);
72
 
73
	int GetNumGames() { return m_lExe.size(); }
74
	SGameExe *GetGame(int game) { if ( game >= 0 && game < m_lExe.size() ) return m_lExe[game]; return NULL; }
75
 
76
private:
77
	void _SetExeName(CyString *sName, int *iName, CyString n);
78
 
79
	CLinkList<SGameExe> m_lExe;
80
};
81
 
82
 
83
#endif //__GAME_EXE_H__