Subversion Repositories spk

Rev

Rev 248 | Rev 318 | 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"
11
 
93 cycrow 12
#include "spkdefines.h"
1 cycrow 13
 
14
class CFileIO;
15
 
93 cycrow 16
namespace SPK {
17
	class COriginalFiles;
18
}
1 cycrow 19
 
93 cycrow 20
using namespace SPK;
1 cycrow 21
 
22
class SPKEXPORT CPackages
23
{
24
public:
220 cycrow 25
	static Utils::WString ConvertLanguage(int lang);
1 cycrow 26
	static SAvailablePackage *CreateAvailablePackageData(CBaseFile *package);
197 cycrow 27
	static Utils::WString FormatAvailablePackageData(CBaseFile *package);
28
	static Utils::WString FormatAvailablePackageData(SAvailablePackage *package);
29
	static Utils::WString CreateFromPackagerScript(CPackages *packages, const Utils::WString &filename);
30
	static int GeneratePackageUpdateData(const Utils::WString &dir, bool includeSingle = true);
1 cycrow 31
 
32
	CPackages ();
33
	~CPackages ();
34
 
212 cycrow 35
	bool isOldDir(const Utils::WString &dir);
197 cycrow 36
	bool read(const Utils::WString &dir, CProgressInfo *progress = NULL);
37
	void startup(const Utils::WString &dir, const Utils::WString &tempDir, const Utils::WString &myDoc);
38
	void startup(const Utils::WString &dir, const Utils::WString &tempDir, const Utils::WString &myDoc, const Utils::WString &mod);
1 cycrow 39
 
221 cycrow 40
	bool extractAll(CBaseFile *baseFile, const Utils::WString &dir, int game, bool includedir = true, CProgressInfo *progress = NULL) const;
210 cycrow 41
	bool generatePackagerScript(CBaseFile *baseFile, bool wildcard, Utils::WStringList *list, int game, bool datafile = false) const;
197 cycrow 42
	CBaseFile *loadPackagerScript(const Utils::WString &filename, int compression, Utils::WString (*askFunc)(const Utils::WString &), Utils::WStringList *malformedLines = NULL, Utils::WStringList *unknownCommands = NULL, Utils::WStringList *variables = NULL, CProgressInfo *progress = NULL);
43
	Utils::WStringList &getGlobals() { return _lGlobals; }
44
	Utils::WStringList &getFakePatchOrder() { return _lFakePatchOrder; }
45
	Utils::WString getCurrentDirectory() const;
46
	static const Utils::WString &tempDirectory() { return m_sTempDir; }
47
	const Utils::WString &myDocuments() { return m_sMyDoc; }
1 cycrow 48
	CGameExe *GetGameExe() { return &m_gameExe; }
49
	CLinkList<CBaseFile> *GetInstallPackageList() { return &m_lInstallList; }
50
 
51
	// installing/uninstalling
197 cycrow 52
	bool		installPackage(CBaseFile *package, Utils::WStringList *errors, CProgressInfo *progress = NULL, bool disabled = false);
53
	CBaseFile		*openPackage(const Utils::WString &file, int *error, CProgressInfo *progress = NULL, int readtype = SPKREAD_ALL, int flags = READFLAG_NONE);
54
	CMultiSpkFile	*openMultiPackage(const Utils::WString &file, int *error, CProgressInfo *progress = NULL);
55
	bool			 openMultiPackage(const Utils::WString &file, CLinkList<CBaseFile> *packageList, int *error, CProgressInfo *progress = NULL );
1 cycrow 56
	int			CheckInstallPackage(CBaseFile *package, int check = IC_ALL);
197 cycrow 57
	bool		removeFile(C_File *file, Utils::WStringList *errors = NULL);
1 cycrow 58
	void		PrepareUninstallPackage(CBaseFile *package);
197 cycrow 59
	bool		uninstallPreparedPackages(Utils::WStringList *errors, CProgressInfo *progress, CLinkList<CBaseFile> *uninstalledPackages = NULL, CLinkList<CBaseFile> *disabledPackages = NULL);
1 cycrow 60
	void		ConvertOldPackage(CBaseFile *p);
197 cycrow 61
	void		purgeUninstallScripts(CBaseFile *package, Utils::WStringList *errors);
1 cycrow 62
	int 		PrepareInstallPackage(CBaseFile *package, bool disabled = false, bool force = false, int check = IC_ALL);
197 cycrow 63
	int			installPreparedPackages(Utils::WStringList *errors, CProgressInfo *progress, CLinkList<CBaseFile> *errored, CLinkList<CBaseFile> *installedList = NULL);
1 cycrow 64
	void		RemovePreparedInstall(CBaseFile *package);
65
	int			GetNumPackagesInQueue() { return m_lInstallList.size(); }
197 cycrow 66
	int			checkOpenPackage(const Utils::WString &file, int* error);
133 cycrow 67
	bool		findAllNeededDependacies(CBaseFile *p, const CLinkList<CBaseFile> &packages, CLinkList<CBaseFile> *foundPackages, bool onlyEnabled = false, bool includePrepared = false) const;
203 cycrow 68
	int			getMissingDependacies(CBaseFile *p, Utils::WStringList *list, bool onlyEnabled = false, bool includePrepared = false);
170 cycrow 69
	size_t		getDownloadableDependacies(CBaseFile* p, std::vector<const SAvailablePackage*>& list, bool onlyEnabled = false, bool includePrepared = false) const;
204 cycrow 70
	bool		checkInstalledDependacy(const Utils::WString &name, const Utils::WString &author, const Utils::WString &version, bool onlyEnabled = false, bool includePerpered = false) const;
1 cycrow 71
	bool		CheckEnabledDependacy(CBaseFile *p);
72
	int			GetDependacyList(CBaseFile *package, CLinkList<CBaseFile> *list);
221 cycrow 73
	int			prepareMultiPackage(const Utils::WString &file, CLinkList<CBaseFile> *errorPackageList, int *error, CProgressInfo *progress = 0);
1 cycrow 74
 
75
	bool		IsOldPluginManager() { return m_bOldPlugin; }
197 cycrow 76
	int			findPackageFiles(CLinkList<CBaseFile> &packages, const Utils::WString &dir);
77
	int			findPackageDirectories(CLinkList<CBaseFile> &packages, const Utils::WString &dir);
78
	int			findAllPackages(CLinkList<CBaseFile> &packages, const Utils::WString &dir);
79
	size_t		updateFoundPackages(const Utils::WString& dir);
80
	size_t		addFoundPackages(const Utils::WString& dir);
1 cycrow 81
 
82
	// enable/disable
197 cycrow 83
	bool enablePackage(CBaseFile *package, Utils::WStringList *errors, CProgressInfo *progress = NULL );
84
	bool disablePackage(CBaseFile *package, Utils::WStringList *errors, CProgressInfo *progress = NULL );
85
	bool disablePreparedPackages(Utils::WStringList *errors, CProgressInfo *progress, CLinkList<CBaseFile> *disabledPackages = NULL );
86
	bool enablePreparedPackages(Utils::WStringList* errors, CProgressInfo* progress, CLinkList<CBaseFile>* enabledPackages = NULL);
1 cycrow 87
	bool PrepareEnablePackage(CBaseFile *package);
88
	bool PrepareDisablePackage(CBaseFile *package);
89
	int  GetNumPackagesInEnabledQueue() { return m_lEnableList.size(); }
90
	int  GetNumPackagesInDisabledQueue() { return m_lDisableList.size(); }
91
	bool PrepareDisableForVanilla();
92
	bool PrepareEnableLibrarys();
93
	bool PrepareEnableFromVanilla();
94
 
95
	void WriteData();
197 cycrow 96
	bool closeDir(Utils::WStringList *errors = 0, CProgressInfo *progress = NULL, bool removedir = false);
1 cycrow 97
	bool RestoreFakePatch();
98
	bool ReadyFakePatch();
197 cycrow 99
	bool checkValidPluginManagerFile(const Utils::WString &filename) const;
100
	bool checkIfPluginManagerFile(const Utils::WString &filename) const;
1 cycrow 101
 
102
	// package control
103
	void UpdateUsedFiles(CLinkList<CBaseFile> *ignoreList = NULL, bool = true);
104
	void UpdateSigned();
105
	bool UpdatePackages(int doStatus = -1, bool individual = false);
217 cycrow 106
	CBaseFile *findXspPackage(const Utils::WString &id) const;
203 cycrow 107
	CBaseFile *findSpkPackage(const Utils::WString &name, const Utils::WString &author) const;
217 cycrow 108
	CArchiveFile *findArchivePackage(const Utils::WString &name) const;
197 cycrow 109
	CBaseFile* findPackage(const Utils::WString &name, const Utils::WString &author) const;
182 cycrow 110
	CBaseFile *findFirstPackageWithFile(C_File *f) const;
111
	CBaseFile *findNextPackageWithFile(CBaseFile *p, C_File *f) const;
112
	CBaseFile *findPackage(CBaseFile *package) const;
197 cycrow 113
	C_File *findFile(FileType filetype, const Utils::WString &filename, const Utils::WString &dir = Utils::WString::Null()) const;
1 cycrow 114
	CBaseFile *FirstPackage() { return m_lPackages.First(); }
115
	CBaseFile *NextPackage() { return m_lPackages.Next(); }
116
	CBaseFile *GetFirstPackage() { if ( m_lPackages.Front() ) return m_lPackages.Front()->Data(); return NULL; }
117
	CBaseFile *GetNextPackage(CBaseFile *from) 
118
	{ 
119
		bool found = false;
120
		for ( CListNode<CBaseFile> *node = m_lPackages.Front(); node; node = node->next() )
121
		{
122
			if ( !node->Data() ) continue;
123
			if ( node->Data() == from )
124
				found = true;
125
			else if ( found )
126
				return node->Data();
127
		}
128
		return NULL; 
129
	}
130
	void Reset();
131
	CBaseFile *GetPackageAt(int i) { return m_lPackages[i]; }
197 cycrow 132
	Utils::WString selectedModName() const;
133
	Utils::WString getModKey() const;
1 cycrow 134
	void SetupWares();
135
	void SetupShips();
136
	void PurgeGameObjects();
137
	void PurgeWares();
138
	void PurgeShips();
139
	void StartPackage() { m_pPackageNode = m_lPackages.Front(); }
140
	void UpdatePackage(CBaseFile *p);
141
	CBaseFile *GetCurrentPackage() { return (m_pPackageNode) ? m_pPackageNode->Data() : NULL; }
142
	bool RemoveCurrentDirectory();
143
	void RemoveCreatedFiles();
144
	bool AnyUnusedShared();
145
 
146
	// util functions
197 cycrow 147
	void removeUnusedDirectories(const Utils::WStringList &dirs, Utils::WStringList* errors = NULL);
148
	int  removeUninstallScripts(Utils::WStringList *errors = 0, CProgressInfo *progress = NULL);
149
	bool removeUninstallFile(C_File *file, Utils::WStringList *errors = 0);
150
	int  removeUnusedSharedFiles(Utils::WStringList *errors = 0, CProgressInfo *progress = NULL);
151
	bool removeSharedFile(C_File *file, Utils::WStringList *errors = NULL);
152
	void shufflePatchTo(C_File *file, int to, Utils::WStringList *errors);
153
	void shuffleFakePatches(Utils::WStringList *errors);
154
	void shuffleTextFiles(Utils::WStringList *errors);
155
	int  findNextFakePatch(int start = 0, const Utils::WString &dir = Utils::WString::Null()) const;
130 cycrow 156
	unsigned int  findNextTextFile(unsigned int start = 4) const;
197 cycrow 157
	unsigned int  findNextTextFile(const Utils::WString &dir, unsigned int start = 4) const;
158
	int  findLastFakePatch(int start = 99, const Utils::WString &dir = Utils::WString::Null()) const;
159
	int  findLastTextFile(int start = 9999, const Utils::WString &dir = Utils::WString::Null()) const;
1 cycrow 160
	int  FindLowestFakePatchInstalled();
161
	void ReadGameLanguage(bool force = true);
197 cycrow 162
	int	 removeAllPackages(Utils::WStringList *errors = NULL, CProgressInfo *progress = NULL);
1 cycrow 163
	void AssignPackageNumbers();
164
	int  GetChildPackages(CBaseFile *package, CLinkList<CBaseFile> *children, bool recursive = false);
165
	int  GetAllPackageFiles(CBaseFile *package, CLinkList<C_File> *fileList, bool includeChild);
166
	int	 GetAllPackageFiles(CLinkList<CBaseFile> *list, CLinkList<C_File> *fileList, bool includeChild);
197 cycrow 167
	void addLogEntry(int type, const Utils::WString &args, Utils::WStringList* errors);
196 cycrow 168
	Utils::WString findDataDir(const Utils::WString &dir, const Utils::WString &file);
179 cycrow 169
	int  countPackages(int type, bool onlyEnabled) const;
1 cycrow 170
	int  CountBuiltInPackages(bool onlyEnabled);
197 cycrow 171
	bool isCurrentDir(const Utils::WString &dir) const;
1 cycrow 172
	bool CheckOtherPackage(CBaseFile *package);
173
	int CheckPreparedInstallRequired(CLinkList<CBaseFile> *list);
197 cycrow 174
	static int ConvertWareType(wchar_t w);
175
	static wchar_t ConvertWareTypeBack(int w);
176
	Utils::WString logDirectory();
177
	Utils::WString logDirectory(const Utils::WString &gameExe);
178
	Utils::WString saveDirectory();
126 cycrow 179
	void backupSaves() { backupSaves(m_bVanilla); }
180
	void backupSaves(bool vanilla);
181
	void restoreSaves() { restoreSaves(m_bVanilla); }
182
	void restoreSaves(bool vanilla);
197 cycrow 183
	bool unPackFile(const Utils::WString &filename, bool checkxml = true) const;
184
	bool packFile(const Utils::WString &filename) const;
185
	bool packFile(CFileIO* File, const Utils::WString &filename) const;
186
	Utils::WString convertTextString(const Utils::WString &text);
1 cycrow 187
	void LoadVirtualFileSystem();
197 cycrow 188
	bool checkAccessRights(const Utils::WString &dir) const;
189
	bool readTextPage(const Utils::WString &file, Utils::WStringList &list, bool search, int page) const;
217 cycrow 190
	size_t loadShipData(const Utils::WString& file, Utils::WStringList& list) const;
197 cycrow 191
	FileType adjustFileType(const Utils::WString &name, FileType filetype) const;
221 cycrow 192
	CXspFile *extractShip(const Utils::WString &sCatFile, const Utils::WString &sId, CProgressInfo *progress = NULL);
217 cycrow 193
	Utils::WString readShipData(const Utils::WString &file, const Utils::WString &entry) const;
182 cycrow 194
	bool isSamePackage(CBaseFile *p1, CBaseFile *p2) const;
203 cycrow 195
	void applyFakePatchOrder(const Utils::WStringList &list);
221 cycrow 196
	CBaseFile *createFromArchive(const Utils::WString &filename, bool toInstall = false) const;
182 cycrow 197
	void readArchiveData(const char *buf, size_t len, CBaseFile *archive) const;
221 cycrow 198
	void readArchiveData(const Utils::WString &filename, CBaseFile *archive) const;
197 cycrow 199
	size_t verifyInstalledFiles(Utils::WStringList *missingFiles = nullptr, bool getPackages = true) const;
200
	Utils::WString empWaresForGame(size_t *maxsize = NULL);
88 cycrow 201
	void addEMPPriceOverride(int empId, int price);
202
	void addEMPNotoOverride(int empId, int noto);
203
	void addBuiltInWarePriceOverride(int empId, int price);
204
	void addBuiltInWareNotoOverride(int empId, int noto);
197 cycrow 205
	void addCustomWarePriceOverride(const Utils::WString &id, int price);
206
	void addCustomWareNotoOverride(const Utils::WString &id, int noto);
1 cycrow 207
 
208
	int GetCurrentGameFlags() { return m_iGameFlags; }
209
 
197 cycrow 210
	void setCurrentDir(const Utils::WString &dir);
1 cycrow 211
 
212
	// merge mods
197 cycrow 213
	void getMergedFiles(Utils::WStringList &list, CCatFile *cat1, CCatFile *cat2) const;
214
	bool canWeMerge(const Utils::WString &file) const;
215
	bool mergeMods(CCatFile *mod1, CCatFile *mod2, const Utils::WString &outFile, Utils::WStringList *cantMerge) const;
216
	bool needToMerge(const Utils::WString &file) const;
217
	bool getModCompatabilityList(C_File *file, Utils::WStringList *list = NULL) const;
218
	bool checkCompatabilityBetweenModFiles(C_File *from, C_File *to, Utils::WStringList *list = NULL) const;
219
	bool checkCompatabilityBetweenMods(CBaseFile *from, CBaseFile *to, Utils::WStringList *list = NULL) const;
220
	int checkCompatabilityAgainstPackages(CBaseFile *newFile, Utils::WStringList *list = NULL, CLinkList<CBaseFile> *packages = NULL) const;
1 cycrow 221
 
220 cycrow 222
	Utils::WString getLanguageName() const;
182 cycrow 223
	int			  getGameLanguage() const;
197 cycrow 224
	int			  getGameLanguage(const Utils::WString &dir) const;
225
	int			  getGameAddons(Utils::WStringList &exes) const;
226
	int			  getGameAddons(Utils::WStringList &exes, const Utils::WString &dir) const;
227
	Utils::WString getGameName() const;
228
	Utils::WString getGameName(const Utils::WString &dir) const;
229
	Utils::WString getGameVersionFromType(int game, int version, const Utils::WString &sVersion) const;
230
	Utils::WString getGameNameFromType(int game) const;
231
	Utils::WString getGameTypesString(CBaseFile *package, bool includeVersion) const;
232
	Utils::WString getGameVersionString(CBaseFile *package) const;
233
	Utils::WString getGameRunExe(const Utils::WString &dir) const;
234
	Utils::WString getGameRunExe() const;
235
	Utils::WString getProperDir() const;
236
	Utils::WString getProperDir(const Utils::WString &dir) const;
237
	Utils::WString getAddonDir() const;
238
	Utils::WString getAddonDir(const Utils::WString &dir) const;
1 cycrow 239
 
240
	// text files
197 cycrow 241
	void CreateLanguageTextFiles(Utils::WStringList *errors = 0);
242
	bool renameTextFile(const Utils::WString &textid, int languageid, Utils::WStringList *errors);
243
	void addTextFileToScripts(C_File *file, const Utils::WString &textid);
1 cycrow 244
	void CreatePluginManagerText();
87 cycrow 245
	void createPluginManagerOpenText();
1 cycrow 246
 
247
	// game control
221 cycrow 248
	void createEMPFile(const Utils::WString &progDir = Utils::WString::Null());
1 cycrow 249
	void CreateWareFiles();
197 cycrow 250
	int  extractGameFile(const Utils::WString &aFilename, const Utils::WString &aTo, const Utils::WString &dir = Utils::WString::Null(), const Utils::WString &addon = Utils::WString::Null()) const;
1 cycrow 251
	void CreateDummies();
252
	void CreateComponants();
253
	void CreateCutData();
254
	void CreateBodies();
255
	void CreateGlobals();
256
	void CreateAnimations();
257
	void CreateTShips();
258
	void CreateCustomStarts();
197 cycrow 259
	void addCreatedFile(const Utils::WString &file);
88 cycrow 260
 
197 cycrow 261
	bool readGlobals(Utils::WStringList &globals) const;
89 cycrow 262
	bool readWares(int iLang, CLinkList<SWareEntry> &list);
263
	bool readCommands(int iLang, CLinkList<SCommandSlot> &list);
264
	bool readWingCommands(int iLang, CLinkList<SCommandSlot> &list);
88 cycrow 265
	int  empOveridePrice(int id);
266
	bool empOverideNoto(int id, int *noto);
267
	int  builtInWareOveridePrice(int id);
268
	bool builtInWareOverideNoto(int id, int *noto);
197 cycrow 269
	int  customWareOveridePrice(const Utils::WString &id);
270
	bool customWareOverideNoto(const Utils::WString &id, int *noto);
88 cycrow 271
	void removeEmpOverride(int pos);
272
	void removeBuiltinWareOverride(int pos);
197 cycrow 273
	void removeCustomWareOverride(const Utils::WString &id);
1 cycrow 274
 
275
	// install text
206 cycrow 276
	Utils::WString getInstallBeforeText(CBaseFile *package) const;
277
	Utils::WString getInstallAfterText(CBaseFile *package) const;
278
	Utils::WString getUninstallBeforeText(CBaseFile *package) const;
279
	Utils::WString getUninstallAfterText(CBaseFile *package) const;
1 cycrow 280
 
281
	//setting functions
282
	void SetRenameText(bool b) { m_bRenameText = b; }
283
	void SetLanguage(int i) { m_iLanguage = i; }
284
	void SetAutoEnable(bool b) { m_bAutoEnableChild = b; }
285
	void SetForceModInstall(bool b) { m_bForceModInstall = b; }
197 cycrow 286
	void setTempDirectory(const Utils::WString &s) { m_sTempDir = s; }
287
	void setMyDocuments(const Utils::WString &s) { m_sMyDoc = s; }
1 cycrow 288
	void SetForceEMP(bool b) { m_bForceEMP = b; }
289
	void SetSurpressProtectedWarning(bool b) { m_bSurpressProtectedWarning = b; }
290
	void SurpressProtectedWarning() { m_bSurpressProtectedWarning = true; }
291
	bool IsSupressProtectedWarning() { return m_bSurpressProtectedWarning; }
292
 
293
	int GetLanguage() { return m_iLanguage; }
294
	int GetGame() { return m_iGame; }
295
	bool IsLoaded() { return m_bLoaded; }
296
	bool IsVanilla() { return m_bVanilla; }
297
	void SetVanilla(bool b);
298
 
197 cycrow 299
	const Utils::WString &getMod() const { return m_sSetMod; }
300
	void setMod(const Utils::WString& mod);
126 cycrow 301
	void setSaveGameManager(bool managed);
1 cycrow 302
 
303
	CBaseFile *GetEnabledMod() { return m_pEnabledMod; }
304
 
305
	//errors
306
	void ClearError() { m_iError = PKERR_NONE; }
307
	int  GetError() { return m_iError; }
308
 
164 cycrow 309
	CLinkList<CBaseFile>* PackageList() { return &m_lPackages; }
161 cycrow 310
	CLinkList<SAvailablePackage> *getAvailablePackageList() { return &m_lAvailablePackages; }
164 cycrow 311
	CLinkList<CBaseFile>* getFoundPackageList() { return &m_lFoundPackages; }
1 cycrow 312
	bool AnyAvailablePackages(int type = -1);
161 cycrow 313
	bool addAvailablePackage(SAvailablePackage *package);
166 cycrow 314
	void saveAvailablePackages();
315
	void readAvailablePackages();
197 cycrow 316
	void parseAvailablePackage(const Utils::WString &str, const Utils::WString &webaddress = Utils::WString::Null());
317
	const SAvailablePackage* findAvailablePackage(const Utils::WString& filename) const;
318
	const SAvailablePackage* findAvailablePackage(const Utils::WString& name, const Utils::WString& author) const;
319
	CBaseFile* findFoundPackage(const Utils::WString& name, const Utils::WString& author) const;
205 cycrow 320
	int findAllServers(Utils::WStringList *list) const;
1 cycrow 321
 
221 cycrow 322
	CBaseFile *findScriptByAuthor(const Utils::WString &author, CBaseFile *prev = NULL);
1 cycrow 323
	void RemoveFailedFiles();
324
 
325
private:
248 cycrow 326
	void _processAddPackage(CBaseFile* p);
216 cycrow 327
	size_t _createCockpits(Utils::WStringList &list);
179 cycrow 328
 
85 cycrow 329
	bool _checkForDisable(CBaseFile *package, bool disabled, CBaseFile *oldPackage);
221 cycrow 330
	CBaseFile *_archive_fromRar(const Utils::WString &filename, bool toInstall) const;
271 cycrow 331
	CBaseFile* _archive_fromZip(const Utils::WString& filename, bool toInstall) const;
332
	bool _check_archive_fromZip(const Utils::WString& filename) const;
50 cycrow 333
	void _addToFakePatch(CBaseFile *pPackage);
56 cycrow 334
	int _gameTextNumber() const;
197 cycrow 335
	void _addWareOverride(enum WareTypes type, int pos, const Utils::WString &id, int value, bool noto);
336
	int _warePriceOverride(enum WareTypes type, int pos, const Utils::WString &id);
337
	bool _wareNotoOverride(enum WareTypes type, int pos, const Utils::WString &id, int *noto);
338
	void _removeWareOverride(enum WareTypes type, int pos, const Utils::WString &id);
43 cycrow 339
 
340
private:
197 cycrow 341
	Utils::WString	m_sCurrentDir;
342
	static Utils::WString	m_sTempDir;
343
	Utils::WString			m_sMyDoc;
344
	Utils::WString			m_sSetMod;
345
	Utils::WString			_sSaveDir;
125 cycrow 346
	GameDirectory *_pCurrentDir;
1 cycrow 347
 
348
	// global files list
349
	CLinkList<C_File>		m_lFiles;
350
	CLinkList<CBaseFile>	m_lPackages;
351
	CLinkList<C_File>		m_lUninstallFiles;
352
	CLinkList<SGameWare>	m_lGameWares[WAREBUFFERS];
353
	CLinkList<SGameShip>	m_lGameShips;
88 cycrow 354
	CLinkList<SWarePriceOverride>	m_lWarePrices;
164 cycrow 355
	CLinkList<CBaseFile>	m_lFoundPackages;
93 cycrow 356
	COriginalFiles		   *_pOriginalFiles;
1 cycrow 357
 
358
	// prepared lists
359
	CLinkList<CBaseFile>	m_lInstallList; // install/uninstalling packages
360
	CLinkList<CBaseFile>	m_lEnableList;  // enable packages
361
	CLinkList<CBaseFile>	m_lDisableList; // disable packages
362
 
197 cycrow 363
	Utils::WStringList		_lCreatedFiles; // list of files we've created
364
	Utils::WStringList		_lNonRemovedFiles; // list of fiels that couldn't be removed for some reason
365
	Utils::WStringList		_lGlobals; // global settigns that we want changed
366
	Utils::WStringList		_lFakePatchOrder; // ordered fake patches
1 cycrow 367
	CLinkList<SAvailablePackage> m_lAvailablePackages; // list of available packages online
368
 
369
	CVirtualFileSystem		m_pGameVFS; // Games Virtual File System
370
 
371
	CGameExe				m_gameExe;
56 cycrow 372
	SGameExe				*m_pCurrentGameExe;
1 cycrow 373
	CBaseFile			   *m_pEnabledMod;
374
 
375
	// settings
376
	bool		m_bRenameText;  // rename text files
377
	bool		m_bAutoEnableChild;	// auto enable all children
378
	bool		m_bForceModInstall; // allowsm ultiple mods to be installed
379
	bool		m_bOldPlugin;		// if its loading data from the old plugin manager
380
	bool		m_bLoadVFS;			// if we should load the virtual filesystem
381
	int			m_iLanguage;	// Language id to use
382
	int			m_iSaveGameManager; // Save game manager
383
	bool		m_bSurpressProtectedWarning; // prevent checking for protected directory
384
 
385
	int			m_iGame;		// the game the directory is
386
	int			m_iGameVersion; // the version of the game (version position)
197 cycrow 387
	Utils::WString	_sGameVersion; // the version of the game (full version)
1 cycrow 388
	int			m_iGameFlags;	// the flags for the game from SGameExe
389
	int			m_iMaxPatch;	// the maximum patch for the game
390
 
391
	int			m_iSaveGame;
392
	int			m_iError;
393
	int			m_iLastUpdated;
394
	int			m_iFakePatch;		// The current fake patch
395
 
396
	bool		m_bVanilla;		// currently in vanilla mode, dont allow unsigned packages to be installed
397
 
398
	bool		m_bLoaded;
399
	bool		m_bRedo;
400
	bool		m_bUsedWare;	// if we have used the ware files in the directory, not in a patch
401
	bool		m_bRemoveDir;	// shall we remove direcotires;
402
 
403
	int			m_iWareBuffer[WAREBUFFERS];	//Ware Buffers
404
	int			m_iShipBuffer; //Ship Buffers
405
 
406
	bool		m_bDisableVanilla;
407
	bool		m_bForceEMP;
408
 
409
	CListNode<CBaseFile>	*m_pPackageNode;
410
};
411
 
412
#endif // __PACKAGES_H__