Rev 126 | Rev 182 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#ifndef __GAME_EXE_H__
#define __GAME_EXE_H__
#include "lists.h"
#include "File.h"
enum {
EXEFLAG_NONE = 0,
EXEFLAG_TCTEXT = 1,
EXEFLAG_MYDOCLOG = 2,
EXEFLAG_NOXOR = 4,
EXEFLAG_NOSAVESUBDIR = 8,
EXEFLAG_ADDON = 16,
};
#define EXE_VERSIONPOS 7
#define EXE_VERSION_NAMESTART (EXE_VERSIONPOS + 2)
#define EXE_VERSION_SIZESTART (EXE_VERSIONPOS + 1)
tstruct SGameExeVersion {
Utils::String sName;
int iName;
Utils::String fVersion;
CLinkList<int> lSize;
} SGameExeVersion;
tstruct SGameExe {
Utils::String sExe;
Utils::String sName;
Utils::String sModKey;
int iFlags;
int iMaxPatch;
int iName;
Utils::String sMyDoc;
Utils::String sAddon;
int iAddonTo;
int iTextNum;
CLinkList<SGameExeVersion> lVersions;
} SGameExe;
tstruct GameDirectory
{
Utils::String dir;
Utils::String name;
Utils::String version;
int id;
int langid;
Utils::String langname;
Utils::String logdir;
Utils::String addon;
Utils::String exe;
Utils::String basename;
} GameDirectory;
class SPKEXPORT CGameExe
{
private:
CLinkList<SGameExe> m_lExe;
public:
void Reset();
void ParseExe(const Utils::String &line);
int ParseFlags(const Utils::String &flags);
bool ReadFile(const Utils::String &file);
int AddExe(const Utils::String &exe);
SGameExe *gameExe(const Utils::String &exe) const;
int FindVersion(const Utils::String &exe, int size, Utils::String *fVersion);
int findAddonType(const Utils::String &gameExe) const;
int GetGameType(const Utils::String &gameExe) const;
int GetGameVersion(const Utils::String &gameExe, Utils::String *fVersion) const;
bool GetGameVersionName(const Utils::String &gameExe, Utils::String *versionName) const;
Utils::String ExtractGameName(const Utils::String &dir) const;
Utils::String GetGameRunExe(const Utils::String &dir) const;
Utils::String GetGameName(const Utils::String &gameExe) const;
Utils::String GetGameBaseName(const Utils::String &gameExe) const;
Utils::String GetGameNameFromType(int type) const;
Utils::String GetGameVersionFromType(int game, int gameVersion, const Utils::String &fGameVersion) const;
Utils::String GetGameDir(const Utils::String &dir) const;
Utils::String GetProperDir(const Utils::String &dir) const;
Utils::String GetAddonDir(const Utils::String &dir) const;
bool isAddon(const Utils::String &ext) const;
int getTextID(const Utils::String &dir) const;
int GetGameAddons(const Utils::String &dir, Utils::CStringList &exe);
int GetGameFlags(int game);
int GetMaxPatch(int game);
Utils::String GetModKey(int game);
void GetDirectoryData(GameDirectory *gameDir) const;
int ConvertGameType(int gametype, int *version);
int GetNumGames() { return m_lExe.size(); }
SGameExe *GetGame(int game) const;
unsigned int gameCount() const;
private:
int _findExe(const Utils::String &exe) const;
int _findVersion(int exe, int size, Utils::String *fVersion) const;
void _SetExeName(Utils::String *sName, int *iName, const Utils::String &n);
Utils::String _textFileName(const Utils::String &sGameDir) const;
Utils::String _readTextFile(const Utils::String &sGameDir) const;
Utils::String _extractTextData(const Utils::String &sData, long iPage, long iID, int iGameID) const;
};
#endif //__GAME_EXE_H__