Subversion Repositories spk

Rev

Rev 152 | Rev 160 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 cycrow 1
#ifndef __PACKAGES_H__
2
#define __PACKAGES_H__
3
 
4
#include "SpkFile.h"
5
#include "GameExe.h"
6
#include "XspFile.h"
7
#include "archive/unzip.h"
8
 
9
#include "MultiSpkFile.h"
10
#include "VirtualFileSystem.h"
88 cycrow 11
#include "Utils/StringList.h"
1 cycrow 12
 
93 cycrow 13
#include "spkdefines.h"
1 cycrow 14
 
15
class CFileIO;
16
 
93 cycrow 17
namespace SPK {
18
	class COriginalFiles;
19
}
1 cycrow 20
 
93 cycrow 21
using namespace SPK;
1 cycrow 22
 
23
class SPKEXPORT CPackages
24
{
25
public:
121 cycrow 26
	static Utils::String ConvertLanguage(int lang);
1 cycrow 27
	static SAvailablePackage *CreateAvailablePackageData(CBaseFile *package);
126 cycrow 28
	static Utils::String FormatAvailablePackageData(CBaseFile *package);
29
	static Utils::String FormatAvailablePackageData(SAvailablePackage *package);
131 cycrow 30
	static Utils::String CreateFromPackagerScript(CPackages *packages, const Utils::String &filename);
1 cycrow 31
	static int GeneratePackageUpdateData(CyString dir, bool includeSingle = true);
32
 
33
	CPackages ();
34
	~CPackages ();
35
 
83 cycrow 36
	bool isOldDir(const Utils::String &dir);
121 cycrow 37
	bool Read(CyString dir, CProgressInfo *progress = NULL);
38
	bool read(const Utils::String &dir, CProgressInfo *progress = NULL);
127 cycrow 39
	void startup(const Utils::String &dir, const Utils::String &tempDir, const Utils::String &myDoc);
40
	void startup(const Utils::String &dir, const Utils::String &tempDir, const Utils::String &myDoc, const Utils::String &mod);
1 cycrow 41
 
129 cycrow 42
	bool extractAll(CBaseFile *baseFile, const Utils::String &dir, int game, bool includedir = true, CProgressInfo *progress = NULL) const;
127 cycrow 43
	bool generatePackagerScript(CBaseFile *baseFile, bool wildcard, Utils::CStringList *list, int game, bool datafile = false) const;
134 cycrow 44
	CBaseFile *LoadPackagerScript(const Utils::String &filename, int compression, Utils::String (*askFunc)(const Utils::String &), Utils::CStringList *malformedLines = NULL, Utils::CStringList *unknownCommands = NULL, Utils::CStringList *variables = NULL, CProgressInfo *progress = NULL);
1 cycrow 45
	CyStringList *GetGlobals() { return &m_lGlobals; }
46
	CyStringList *GetFakePatchOrder() { return &m_lFakePatchOrder; }
125 cycrow 47
	Utils::String getCurrentDirectory() const;
158 cycrow 48
	//static CyString GetTempDirectory() { return m_sTempDir; }
127 cycrow 49
	static const Utils::String &tempDirectory() { return m_sTempDir; }
1 cycrow 50
	CyString GetMyDocuments() { return m_sMyDoc; }
127 cycrow 51
	const Utils::String &myDocuments() { return m_sMyDoc; }
1 cycrow 52
	CGameExe *GetGameExe() { return &m_gameExe; }
53
	CLinkList<CBaseFile> *GetInstallPackageList() { return &m_lInstallList; }
54
 
55
	// installing/uninstalling
56
	bool		InstallPackage ( CBaseFile *package, CyStringList *errors, CProgressInfo *progress = NULL, bool disabled = false );
57
	CBaseFile		*OpenPackage ( CyString file, int *error, CProgressInfo *progress = NULL, int readtype = SPKREAD_ALL, int flags = READFLAG_NONE );
58
	CMultiSpkFile	*OpenMultiPackage(CyString file, int *error, CProgressInfo *progress = NULL);
59
	bool		OpenMultiPackage ( CyString file, CLinkList<CBaseFile> *packageList, int *error, CProgressInfo *progress = NULL );
60
	int			CheckInstallPackage(CBaseFile *package, int check = IC_ALL);
61
	bool		RemoveFile(C_File *file, CyStringList *errors = NULL);
62
	void		PrepareUninstallPackage(CBaseFile *package);
63
	bool		UninstallPreparedPackages(CyStringList *errors, CProgressInfo *progress, CLinkList<CBaseFile> *uninstalledPackages = NULL, CLinkList<CBaseFile> *disabledPackages = NULL);
64
	void		ConvertOldPackage(CBaseFile *p);
65
	void		PurgeUninstallScripts(CBaseFile *package, CyStringList *errors);
66
	int 		PrepareInstallPackage(CBaseFile *package, bool disabled = false, bool force = false, int check = IC_ALL);
67
	int			InstallPreparedPackages(CyStringList *errors, CProgressInfo *progress, CLinkList<CBaseFile> *errored, CLinkList<CBaseFile> *installedList = NULL);
68
	void		RemovePreparedInstall(CBaseFile *package);
69
	int			GetNumPackagesInQueue() { return m_lInstallList.size(); }
70
	int			CheckOpenPackage(CyString file, int *error);
133 cycrow 71
	bool		findAllNeededDependacies(CBaseFile *p, const CLinkList<CBaseFile> &packages, CLinkList<CBaseFile> *foundPackages, bool onlyEnabled = false, bool includePrepared = false) const;
72
	int			GetMissingDependacies(CBaseFile *p, Utils::CStringList *list, bool onlyEnabled = false, bool includePrepared = false);
1 cycrow 73
	bool		CheckInstalledDependacy(CyString name, CyString author, CyString version, bool onlyEnabled = false, bool includePerpered = false);
133 cycrow 74
	bool		checkInstalledDependacy(const Utils::String &name, const Utils::String &author, const Utils::String &version, bool onlyEnabled = false, bool includePerpered = false) const;
1 cycrow 75
	bool		CheckEnabledDependacy(CBaseFile *p);
76
	int			GetDependacyList(CBaseFile *package, CLinkList<CBaseFile> *list);
77
	int			PrepareMultiPackage ( CyString file, CLinkList<CBaseFile> *errorPackageList, int *error, CProgressInfo *progress = 0);
78
 
79
	bool		IsOldPluginManager() { return m_bOldPlugin; }
133 cycrow 80
	int			findPackageFiles(CLinkList<CBaseFile> &packages, const Utils::String &dir);
81
	int			findPackageDirectories(CLinkList<CBaseFile> &packages, const Utils::String &dir);
82
	int			findAllPackages(CLinkList<CBaseFile> &packages, const Utils::String &dir);
1 cycrow 83
 
84
	// enable/disable
85
	bool EnablePackage ( CBaseFile *package, CyStringList *errors, CProgressInfo *progress = NULL );
86
	bool DisablePackage ( CBaseFile *package, CyStringList *errors, CProgressInfo *progress = NULL );
87
	bool DisablePreparedPackages ( CyStringList *errors, CProgressInfo *progress, CLinkList<CBaseFile> *disabledPackages = NULL );
88
	bool PrepareEnablePackage(CBaseFile *package);
89
	bool PrepareDisablePackage(CBaseFile *package);
90
	bool EnablePreparedPackages ( CyStringList *errors, CProgressInfo *progress, CLinkList<CBaseFile> *enabledPackages = NULL );
91
	int  GetNumPackagesInEnabledQueue() { return m_lEnableList.size(); }
92
	int  GetNumPackagesInDisabledQueue() { return m_lDisableList.size(); }
93
	bool PrepareDisableForVanilla();
94
	bool PrepareEnableLibrarys();
95
	bool PrepareEnableFromVanilla();
96
 
97
	void WriteData();
98
	bool CloseDir ( CyStringList *errors = 0, CProgressInfo *progress = NULL, bool removedir = false );
99
	bool RestoreFakePatch();
100
	bool ReadyFakePatch();
101
	bool CheckValidPluginManagerFile(CyString filename);
102
	bool CheckIfPluginManagerFile(CyString filename);
103
 
104
	// package control
105
	void UpdateUsedFiles(CLinkList<CBaseFile> *ignoreList = NULL, bool = true);
106
	void UpdateSigned();
107
	bool UpdatePackages(int doStatus = -1, bool individual = false);
108
	CBaseFile *FindXspPackage(CyString id);
109
	CBaseFile *FindSpkPackage(CyString name, CyString author);
133 cycrow 110
	CBaseFile *findSpkPackage(const Utils::String &name, const Utils::String &author) const;
1 cycrow 111
	CArchiveFile *FindArchivePackage(CyString name);
112
	CBaseFile *FindPackage(CyString name, CyString author);
113
	CBaseFile *FindFirstPackageWithFile(C_File *f);
114
	CBaseFile *FindNextPackageWithFile(CBaseFile *p, C_File *f);
115
	CBaseFile *FindPackage(CBaseFile *package);
116
	C_File *FindFile(int filetype, CyString filename, CyString dir = NullString);
117
	CBaseFile *FirstPackage() { return m_lPackages.First(); }
118
	CBaseFile *NextPackage() { return m_lPackages.Next(); }
119
	CBaseFile *GetFirstPackage() { if ( m_lPackages.Front() ) return m_lPackages.Front()->Data(); return NULL; }
120
	CBaseFile *GetNextPackage(CBaseFile *from) 
121
	{ 
122
		bool found = false;
123
		for ( CListNode<CBaseFile> *node = m_lPackages.Front(); node; node = node->next() )
124
		{
125
			if ( !node->Data() ) continue;
126
			if ( node->Data() == from )
127
				found = true;
128
			else if ( found )
129
				return node->Data();
130
		}
131
		return NULL; 
132
	}
133
	void Reset();
134
	CBaseFile *GetPackageAt(int i) { return m_lPackages[i]; }
135
	CyString GetSelectedModName();
136
	CyString GetModKey();
137
	void SetupWares();
138
	void SetupShips();
139
	void PurgeGameObjects();
140
	void PurgeWares();
141
	void PurgeShips();
142
	void StartPackage() { m_pPackageNode = m_lPackages.Front(); }
143
	void UpdatePackage(CBaseFile *p);
144
	CBaseFile *GetCurrentPackage() { return (m_pPackageNode) ? m_pPackageNode->Data() : NULL; }
145
	bool RemoveCurrentDirectory();
146
	void RemoveCreatedFiles();
147
	bool AnyUnusedShared();
148
 
149
	// util functions
150
	void RemoveUnusedDirectories(CyStringList &dirs, CyStringList *errors = NULL);
151
	int  RemoveUninstallScripts(CyStringList *errors = 0, CProgressInfo *progress = NULL);
152
	bool RemoveUninstallFile(C_File *file, CyStringList *errors = 0);
153
	int  RemoveUnusedSharedFiles(CyStringList *errors = 0, CProgressInfo *progress = NULL);
154
	bool RemoveSharedFile(C_File *file, CyStringList *errors = NULL);
155
	void ShufflePatchTo(C_File *file, int to, CyStringList *errors);
156
	void ShuffleFakePatches(CyStringList *errors);
157
	void ShuffleTextFiles(CyStringList *errors);
158
	int  FindNextFakePatch(int start = 0, CyString dir = NullString);
130 cycrow 159
	unsigned int  findNextTextFile(unsigned int start = 4) const;
160
	unsigned int  findNextTextFile(const Utils::String &dir, unsigned int start = 4) const;
1 cycrow 161
	int  FindLastFakePatch(int start = 99, CyString dir = NullString);
162
	int  FindLastTextFile(int start = 9999, CyString dir = NullString);
163
	int  FindLowestFakePatchInstalled();
164
	void ReadGameLanguage(bool force = true);
165
	int	 RemoveAllPackages(CyStringList *errors = NULL, CProgressInfo *progress = NULL);
166
	void AssignPackageNumbers();
167
	int  GetChildPackages(CBaseFile *package, CLinkList<CBaseFile> *children, bool recursive = false);
168
	int  GetAllPackageFiles(CBaseFile *package, CLinkList<C_File> *fileList, bool includeChild);
169
	int	 GetAllPackageFiles(CLinkList<CBaseFile> *list, CLinkList<C_File> *fileList, bool includeChild);
170
	void AddLogEntry(int type, CyString args, CyStringList *errors);
127 cycrow 171
	Utils::String findDataDir(const Utils::String &dir, const Utils::String &file);
1 cycrow 172
	int  CountPackages(int type, bool onlyEnabled);
173
	int  CountBuiltInPackages(bool onlyEnabled);
121 cycrow 174
	bool isCurrentDir(const Utils::String &dir) const;
1 cycrow 175
	bool CheckOtherPackage(CBaseFile *package);
176
	int CheckPreparedInstallRequired(CLinkList<CBaseFile> *list);
177
	static int ConvertWareType(char w);
178
	static char ConvertWareTypeBack(int w);
102 cycrow 179
	Utils::String logDirectory();
180
	Utils::String logDirectory(const Utils::String &gameExe);
181
	Utils::String saveDirectory();
126 cycrow 182
	void backupSaves() { backupSaves(m_bVanilla); }
183
	void backupSaves(bool vanilla);
184
	void restoreSaves() { restoreSaves(m_bVanilla); }
185
	void restoreSaves(bool vanilla);
158 cycrow 186
	bool UnPackFile(const Utils::String &filename, bool checkxml = true);
1 cycrow 187
	bool PackFile(CyString filename);
188
	bool PackFile(CFileIO *File, CyString filename);
84 cycrow 189
	Utils::String ConvertTextString(const Utils::String &text);
1 cycrow 190
	void LoadVirtualFileSystem();
191
	bool CheckAccessRights(CyString dir);
192
	bool LoadShipData(CyString file, CyStringList *list);
35 cycrow 193
	bool LoadShipData(CVirtualFileSystem *pVfs, CyStringList *list);
1 cycrow 194
	bool ReadTextPage(CyString file, CyStringList *list, bool search, int page);
195
	CyStringList *LoadShipData(CyString file);
196
	CyStringList *ReadTextPage(CyString file, bool search, int page);
197
	int AdjustFileType(CyString name, int filetype);
35 cycrow 198
	CXspFile *extractShip(const Utils::String &sCatFile, const Utils::String &sId, CProgressInfo *progress = NULL);
1 cycrow 199
	CyString ReadShipData(CyString file, CyString entry);
200
	bool IsSamePackage(CBaseFile *p1, CBaseFile *p2);
201
	void ApplyFakePatchOrder(CyStringList *list);
202
	CBaseFile *CreateFromArchive(CyString filename, bool toInstall = false );
203
	void ReadArchiveData(const char *buf, size_t len, CBaseFile *archive);
204
	void ReadArchiveData(CyString filename, CBaseFile *archive);
205
	int VerifyInstalledFiles(CyStringList *missingFiles = NULL, bool getPackages = true);
88 cycrow 206
	Utils::String empWaresForGame(int *maxsize = NULL);
207
	void addEMPPriceOverride(int empId, int price);
208
	void addEMPNotoOverride(int empId, int noto);
209
	void addBuiltInWarePriceOverride(int empId, int price);
210
	void addBuiltInWareNotoOverride(int empId, int noto);
211
	void addCustomWarePriceOverride(const Utils::String &id, int price);
212
	void addCustomWareNotoOverride(const Utils::String &id, int noto);
1 cycrow 213
 
214
	int GetCurrentGameFlags() { return m_iGameFlags; }
215
 
158 cycrow 216
	void setCurrentDir(const Utils::String &dir);
1 cycrow 217
 
218
	// merge mods
124 cycrow 219
	void getMergedFiles(Utils::CStringList &list, CCatFile *cat1, CCatFile *cat2);
58 cycrow 220
	bool CanWeMerge(const Utils::String &file) const;
1 cycrow 221
	bool MergeMods(CCatFile *mod1, CCatFile *mod2, CyString outFile, CyStringList *cantMerge);
222
	bool NeedToMerge(CyString file);
223
	CyStringList MergeTextFiles(CyStringList *files, CCatFile *mod1, CCatFile *mod2);
224
	bool GetModCompatabilityList(C_File *file, CyStringList *list = NULL);
225
	bool CheckCompatabilityBetweenModFiles(C_File *from, C_File *to, CyStringList *list = NULL);
226
	bool CheckCompatabilityBetweenMods(CBaseFile *from, CBaseFile *to, CyStringList *list = NULL);
227
	int CheckCompatabilityAgainstPackages(CBaseFile *newFile, CyStringList *list = NULL, CLinkList<CBaseFile> *packages = NULL);
228
 
121 cycrow 229
	CyString GetLanguageName() const;
1 cycrow 230
 
121 cycrow 231
	int	GetGameLanguage() const;
232
	int	GetGameLanguage(const Utils::String &dir) const;
233
	int      GetGameAddons(Utils::CStringList &exes);
234
	int      GetGameAddons(Utils::CStringList &exes, const Utils::String &dir);
235
	Utils::String getGameName() const;
236
	Utils::String getGameName(const Utils::String &dir) const;
1 cycrow 237
	CyString GetGameName(CyString dir = NullString);
238
	CyString GetGameVersionFromType(int game, int version, CyString sVersion);
239
	CyString GetGameNameFromType(int game);
152 cycrow 240
	Utils::String getGameTypesString(CBaseFile *package, bool includeVersion);
1 cycrow 241
	CyString GetGameVersionString(CBaseFile *package);
121 cycrow 242
	Utils::String GetGameRunExe(const Utils::String &dir);
1 cycrow 243
	CyString GetProperDir(CyString dir = NullString);
244
	CyString GetAddonDir(CyString dir = NullString);
121 cycrow 245
	Utils::String GetGameRunExe();
246
	Utils::String getProperDir() const;
247
	Utils::String getProperDir(const Utils::String &dir) const;
248
	Utils::String getAddonDir() const;
249
	Utils::String getAddonDir(const Utils::String &dir) const;
1 cycrow 250
 
251
	// text files
252
	void CreateLanguageTextFiles(CyStringList *errors = 0);
253
	bool RenameTextFile(CyString textid, int languageid, CyStringList *errors);
254
	void AddTextFileToScripts(C_File *file, CyString textid);
255
	void CreatePluginManagerText();
87 cycrow 256
	void createPluginManagerOpenText();
1 cycrow 257
 
258
	// game control
65 cycrow 259
	void CreateEMPFile(CyString progDir = NullString);
1 cycrow 260
	void CreateWareFiles();
261
	int ExtractGameFile(CyString aFilename, CyString aTo, CyString dir = NullString, CyString addon = NullString);
262
	void CreateDummies();
263
	void CreateComponants();
264
	void CreateCutData();
265
	void CreateBodies();
266
	void CreateGlobals();
267
	void CreateAnimations();
268
	void CreateTShips();
269
	CyStringList *CreateCockpits();
270
	void CreateCustomStarts();
271
	void AddCreatedFile(CyString file);
88 cycrow 272
 
1 cycrow 273
	bool ReadGlobals(CyStringList &globals);
89 cycrow 274
	bool readWares(int iLang, CLinkList<SWareEntry> &list);
275
	bool readCommands(int iLang, CLinkList<SCommandSlot> &list);
276
	bool readWingCommands(int iLang, CLinkList<SCommandSlot> &list);
88 cycrow 277
	int  empOveridePrice(int id);
278
	bool empOverideNoto(int id, int *noto);
279
	int  builtInWareOveridePrice(int id);
280
	bool builtInWareOverideNoto(int id, int *noto);
281
	int  customWareOveridePrice(const Utils::String &id);
282
	bool customWareOverideNoto(const Utils::String &id, int *noto);
283
	void removeEmpOverride(int pos);
284
	void removeBuiltinWareOverride(int pos);
285
	void removeCustomWareOverride(const Utils::String &id);
1 cycrow 286
 
287
	// install text
288
	CyString GetInstallBeforeText(CBaseFile *package);
289
	CyString GetInstallAfterText(CBaseFile *package);
290
	CyString GetUninstallBeforeText(CBaseFile *package);
291
	CyString GetUninstallAfterText(CBaseFile *package);
292
 
293
	//setting functions
294
	void SetRenameText(bool b) { m_bRenameText = b; }
295
	void SetLanguage(int i) { m_iLanguage = i; }
296
	void SetAutoEnable(bool b) { m_bAutoEnableChild = b; }
297
	void SetForceModInstall(bool b) { m_bForceModInstall = b; }
118 cycrow 298
	void setTempDirectory(const Utils::String &s) { m_sTempDir = s; }
127 cycrow 299
	void setMyDocuments(const Utils::String &s) { m_sMyDoc = s; }
1 cycrow 300
	void SetForceEMP(bool b) { m_bForceEMP = b; }
301
	void SetSurpressProtectedWarning(bool b) { m_bSurpressProtectedWarning = b; }
302
	void SurpressProtectedWarning() { m_bSurpressProtectedWarning = true; }
303
	bool IsSupressProtectedWarning() { return m_bSurpressProtectedWarning; }
304
 
305
	int GetLanguage() { return m_iLanguage; }
306
	int GetGame() { return m_iGame; }
307
	bool IsLoaded() { return m_bLoaded; }
308
	bool IsVanilla() { return m_bVanilla; }
309
	void SetVanilla(bool b);
310
 
311
	CyString GetSetMod() { return m_sSetMod; }
312
	void SetMod(CyString mod) { 
313
		if ( mod != "PluginManager" )
314
			m_sSetMod = mod; 
315
	}
126 cycrow 316
	void setSaveGameManager(bool managed);
1 cycrow 317
 
318
	CBaseFile *GetEnabledMod() { return m_pEnabledMod; }
319
 
320
	//errors
321
	void ClearError() { m_iError = PKERR_NONE; }
322
	int  GetError() { return m_iError; }
323
 
324
	CLinkList<CBaseFile> *PackageList() { return &m_lPackages; }
325
	CLinkList<SAvailablePackage> *GetAvailablePackageList() { return &m_lAvailablePackages; }
326
	bool AnyAvailablePackages(int type = -1);
327
	bool AddAvailablePackage(SAvailablePackage *package);
328
	void ParseAvailablePackage(CyString str, CyString webaddress = NullString);
126 cycrow 329
	SAvailablePackage *FindAvailablePackage(const Utils::String &filename);
1 cycrow 330
	int FindAllServers(CyStringList *list);
331
 
332
	CBaseFile *FindScriptByAuthor(CyString author, CBaseFile *prev = NULL);
333
	void RemoveFailedFiles();
334
 
335
private:
85 cycrow 336
	bool _checkForDisable(CBaseFile *package, bool disabled, CBaseFile *oldPackage);
43 cycrow 337
	CBaseFile *_archive_fromRar(CyString filename, bool toInstall);
338
	CBaseFile *_archive_fromZip(CyString filename, bool toInstall);
50 cycrow 339
	void _addToFakePatch(CBaseFile *pPackage);
56 cycrow 340
	int _gameTextNumber() const;
88 cycrow 341
	void _addWareOverride(enum WareTypes type, int pos, const Utils::String &id, int value, bool noto);
342
	int _warePriceOverride(enum WareTypes type, int pos, const Utils::String &id);
343
	bool _wareNotoOverride(enum WareTypes type, int pos, const Utils::String &id, int *noto);
344
	void _removeWareOverride(enum WareTypes type, int pos, const Utils::String &id);
43 cycrow 345
 
346
private:
158 cycrow 347
	Utils::String	m_sCurrentDir;
118 cycrow 348
	static Utils::String	m_sTempDir;
127 cycrow 349
	Utils::String			m_sMyDoc;
1 cycrow 350
	CyString	m_sSetMod;
126 cycrow 351
	Utils::String _sSaveDir;
125 cycrow 352
	GameDirectory *_pCurrentDir;
1 cycrow 353
 
354
	// global files list
355
	CLinkList<C_File>		m_lFiles;
356
	CLinkList<CBaseFile>	m_lPackages;
357
	CLinkList<C_File>		m_lUninstallFiles;
358
	CLinkList<SGameWare>	m_lGameWares[WAREBUFFERS];
359
	CLinkList<SGameShip>	m_lGameShips;
88 cycrow 360
	CLinkList<SWarePriceOverride>	m_lWarePrices;
93 cycrow 361
	COriginalFiles		   *_pOriginalFiles;
1 cycrow 362
 
363
	// prepared lists
364
	CLinkList<CBaseFile>	m_lInstallList; // install/uninstalling packages
365
	CLinkList<CBaseFile>	m_lEnableList;  // enable packages
366
	CLinkList<CBaseFile>	m_lDisableList; // disable packages
367
 
368
	CyStringList			m_lCreatedFiles; // list of files we've created
369
	CyStringList			m_lNonRemovedFiles; // list of fiels that couldn't be removed for some reason
370
	CyStringList			m_lGlobals; // global settigns that we want changed
371
	CyStringList			m_lFakePatchOrder; // ordered fake patches
372
	CLinkList<SAvailablePackage> m_lAvailablePackages; // list of available packages online
373
 
374
	CVirtualFileSystem		m_pGameVFS; // Games Virtual File System
375
 
376
	CGameExe				m_gameExe;
56 cycrow 377
	SGameExe				*m_pCurrentGameExe;
1 cycrow 378
	CBaseFile			   *m_pEnabledMod;
379
 
380
	// settings
381
	bool		m_bRenameText;  // rename text files
382
	bool		m_bAutoEnableChild;	// auto enable all children
383
	bool		m_bForceModInstall; // allowsm ultiple mods to be installed
384
	bool		m_bOldPlugin;		// if its loading data from the old plugin manager
385
	bool		m_bLoadVFS;			// if we should load the virtual filesystem
386
	int			m_iLanguage;	// Language id to use
387
	int			m_iSaveGameManager; // Save game manager
388
	bool		m_bSurpressProtectedWarning; // prevent checking for protected directory
389
 
390
	int			m_iGame;		// the game the directory is
391
	int			m_iGameVersion; // the version of the game (version position)
392
	CyString	m_sGameVersion; // the version of the game (full version)
393
	int			m_iGameFlags;	// the flags for the game from SGameExe
394
	int			m_iMaxPatch;	// the maximum patch for the game
395
 
396
	int			m_iSaveGame;
397
	int			m_iError;
398
	int			m_iLastUpdated;
399
	int			m_iFakePatch;		// The current fake patch
400
 
401
	bool		m_bVanilla;		// currently in vanilla mode, dont allow unsigned packages to be installed
402
 
403
	bool		m_bLoaded;
404
	bool		m_bRedo;
405
	bool		m_bUsedWare;	// if we have used the ware files in the directory, not in a patch
406
	bool		m_bRemoveDir;	// shall we remove direcotires;
407
 
408
	int			m_iWareBuffer[WAREBUFFERS];	//Ware Buffers
409
	int			m_iShipBuffer; //Ship Buffers
410
 
411
	bool		m_bDisableVanilla;
412
	bool		m_bForceEMP;
413
 
414
	CListNode<CBaseFile>	*m_pPackageNode;
415
};
416
 
417
#endif // __PACKAGES_H__