Subversion Repositories spk

Rev

Rev 57 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#ifndef __GAME_EXE_H__
#define __GAME_EXE_H__

#include "CyString.h"
#include "lists.h"
#include "File.h"

#define EXEFLAG_NONE                    0
#define EXEFLAG_TCTEXT                  1
#define EXEFLAG_MYDOCLOG                2
#define EXEFLAG_NOXOR                   4
#define EXEFLAG_NOSAVESUBDIR    8
#define EXEFLAG_ADDON                   16

#define EXE_VERSIONPOS                  7
#define EXE_VERSION_NAMESTART   (EXE_VERSIONPOS + 2)
#define EXE_VERSION_SIZESTART   (EXE_VERSIONPOS + 1)

tstruct SGameExeVersion {
        CyString        sName;
        int                     iName;
        CyString        fVersion;
        CLinkList<int> lSize;
} SGameExeVersion;

tstruct SGameExe {
        CyString sExe;
        CyString sName;
        CyString sModKey;
        int              iFlags;
        int              iMaxPatch;
        int              iName;
        CyString sMyDoc;
        CyString sAddon;
        int              iAddonTo;
        CLinkList<SGameExeVersion> lVersions;
} SGameExe;

class SPKEXPORT CGameExe 
{
public:
        void Reset();

        void ParseExe(CyString line);
        int  ParseFlags(CyString flags);
        bool ReadFile(CyString file);

        int AddExe(CyString exe);
        int FindExe(CyString exe);
        SGameExe *GetGameExe(CyString exe);

        int FindVersion(int exe, int size, CyString *fVersion);
        int FindVersion(CyString exe, int size, CyString *fVersion);

        int GetGameType(CyString gameExe);
        int GetGameVersion(CyString gameExe, CyString *fVersion);
        bool GetGameVersionName(CyString gameExe, CyString *versionName);
        CyString ExtractGameName(CyString dir);
        CyString GetGameRunExe(CyString dir);
        CyString GetGameName(CyString gameExe);
        CyString GetGameNameFromType(int type);
        CyString GetGameVersionFromType(int game, int gameVersion, CyString fGameVersion);
        CyString GetGameDir(CyString dir);
        CyString GetProperDir(CyString dir);
        CyString GetAddonDir(CyString dir);
        int GetGameAddons(CyString dir, CyStringList &exe);
        int GetGameFlags(int game);
        int GetMaxPatch(int game);
        CyString GetModKey(int game);

        int ConvertGameType(int gametype, int *version);

        int GetNumGames() { return m_lExe.size(); }
        SGameExe *GetGame(int game) { if ( game >= 0 && game < m_lExe.size() ) return m_lExe[game]; return NULL; }

private:
        void _SetExeName(CyString *sName, int *iName, CyString n);

        CLinkList<SGameExe> m_lExe;
};


#endif //__GAME_EXE_H__