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__