Subversion Repositories spk

Rev

Rev 58 | Rev 89 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 58 Rev 88
Line 11... Line 11...
11
 
11
 
12
#include "lists.h"
12
#include "lists.h"
13
#include "StringList.h"
13
#include "StringList.h"
14
#include "File.h"
14
#include "File.h"
15
#include "Utils/String.h"
15
#include "Utils/String.h"
-
 
16
#include "Utils/StringList.h"
16
 
17
 
17
#include "Package/CorePackage.h"
18
#include "Package/CorePackage.h"
18
 
19
 
19
#define GAME_ALL			0
20
#define GAME_ALL			0
20
#define GAME_X2				1
21
#define GAME_X2				1
Line 27... Line 28...
27
#define FILEVERSION 4.20f
28
#define FILEVERSION 4.20f
28
 
29
 
29
#define WRITECHUNK		50000
30
#define WRITECHUNK		50000
30
 
31
 
31
class CPackages;
32
class CPackages;
-
 
33
 
-
 
34
namespace SPK {
-
 
35
	class CTextDB;
-
 
36
}
-
 
37
 
-
 
38
using namespace SPK;
32
 
39
 
33
enum {
40
enum {
34
	READFLAG_NONE = 0,
41
	READFLAG_NONE = 0,
35
	READFLAG_NOUNCOMPRESS = 1
42
	READFLAG_NOUNCOMPRESS = 1
36
};
43
};
Line 41... Line 48...
41
enum {SPKINSTALL_CREATEDIRECTORY, SPKINSTALL_CREATEDIRECTORY_FAIL, SPKINSTALL_WRITEFILE, SPKINSTALL_WRITEFILE_FAIL, SPKINSTALL_DELETEFILE, SPKINSTALL_DELETEFILE_FAIL,
48
enum {SPKINSTALL_CREATEDIRECTORY, SPKINSTALL_CREATEDIRECTORY_FAIL, SPKINSTALL_WRITEFILE, SPKINSTALL_WRITEFILE_FAIL, SPKINSTALL_DELETEFILE, SPKINSTALL_DELETEFILE_FAIL,
42
		SPKINSTALL_SKIPFILE, SPKINSTALL_REMOVEDIR, SPKINSTALL_ENABLEFILE, SPKINSTALL_DISABLEFILE, SPKINSTALL_ENABLEFILE_FAIL, SPKINSTALL_DISABLEFILE_FAIL,
49
		SPKINSTALL_SKIPFILE, SPKINSTALL_REMOVEDIR, SPKINSTALL_ENABLEFILE, SPKINSTALL_DISABLEFILE, SPKINSTALL_ENABLEFILE_FAIL, SPKINSTALL_DISABLEFILE_FAIL,
43
		SPKINSTALL_UNINSTALL_MOVE, SPKINSTALL_UNINSTALL_COPY, SPKINSTALL_UNINSTALL_MOVE_FAIL, SPKINSTALL_UNINSTALL_COPY_FAIL, SPKINSTALL_UNINSTALL_REMOVE, SPKINSTALL_UNINSTALL_REMOVE_FAIL,
50
		SPKINSTALL_UNINSTALL_MOVE, SPKINSTALL_UNINSTALL_COPY, SPKINSTALL_UNINSTALL_MOVE_FAIL, SPKINSTALL_UNINSTALL_COPY_FAIL, SPKINSTALL_UNINSTALL_REMOVE, SPKINSTALL_UNINSTALL_REMOVE_FAIL,
44
		SPKINSTALL_ORIGINAL_BACKUP, SPKINSTALL_ORIGINAL_RESTORE, SPKINSTALL_ORIGINAL_BACKUP_FAIL, SPKINSTALL_ORIGINAL_RESTORE_FAIL, SPKINSTALL_FAKEPATCH, SPKINSTALL_FAKEPATCH_FAIL, 
51
		SPKINSTALL_ORIGINAL_BACKUP, SPKINSTALL_ORIGINAL_RESTORE, SPKINSTALL_ORIGINAL_BACKUP_FAIL, SPKINSTALL_ORIGINAL_RESTORE_FAIL, SPKINSTALL_FAKEPATCH, SPKINSTALL_FAKEPATCH_FAIL, 
45
		SPKINSTALL_MISSINGFILE, SPKINSTALL_SHARED, SPKINSTALL_SHARED_FAIL, SPKINSTALL_ORPHANED, SPKINSTALL_ORPHANED_FAIL, SPKINSTALL_UNCOMPRESS_FAIL, SPKINSTALL_AUTOTEXT, SPKINSTALL_AUTOTEXT_FAIL
52
		SPKINSTALL_MISSINGFILE, SPKINSTALL_SHARED, SPKINSTALL_SHARED_FAIL, SPKINSTALL_ORPHANED, SPKINSTALL_ORPHANED_FAIL, SPKINSTALL_UNCOMPRESS_FAIL, SPKINSTALL_AUTOTEXT, SPKINSTALL_AUTOTEXT_FAIL
46
};
53
};
47
 
54
 
48
enum {PACKAGETYPE_NORMAL, PACKAGETYPE_LIBRARY, PACKAGETYPE_CUSTOMSTART, PACKAGETYPE_PATCH, PACKAGETYPE_UPDATE, PACKAGETYPE_MOD, PACKAGETYPE_SHIP, PACKAGETYPE_FAKEPATCH};
55
enum {PACKAGETYPE_NORMAL, PACKAGETYPE_LIBRARY, PACKAGETYPE_CUSTOMSTART, PACKAGETYPE_PATCH, PACKAGETYPE_UPDATE, PACKAGETYPE_MOD, PACKAGETYPE_SHIP, PACKAGETYPE_FAKEPATCH};
49
 
56
 
50
enum {TYPE_BASE, TYPE_SPK, TYPE_XSP, TYPE_ARCHIVE};
57
enum {TYPE_BASE, TYPE_SPK, TYPE_XSP, TYPE_ARCHIVE};
51
 
58
 
52
// text pages
59
// text pages
53
#define TEXTPAGE_RACE		1266
60
#define TEXTPAGE_RACE		1266
54
#define TEXTPAGE_OBJECTS	17
61
#define TEXTPAGE_OBJECTS	17
55
#define TEXTPAGE_CLASS		2006
62
#define TEXTPAGE_CLASS		2006
56
#define TEXTPAGE_CARGOCLASS	1999
63
#define TEXTPAGE_CARGOCLASS	1999
-
 
64
 
-
 
65
 
-
 
66
enum WareTypes {
-
 
67
	Ware_BuiltIn,
-
 
68
	Ware_EMP,
-
 
69
	Ware_Custom
-
 
70
};
-
 
71
 
-
 
72
tstruct SWareEntry {
-
 
73
	Utils::String name;
-
 
74
	Utils::String description;
-
 
75
	enum WareTypes type;
-
 
76
	Utils::String id;
-
 
77
	int			  relval;
-
 
78
	int			  notority;
-
 
79
	int			  position;
-
 
80
} SWareEntry;
57
 
81
 
58
 
82
 
59
// spk header struct
83
// spk header struct
60
tstruct SSPKHeader {
84
tstruct SSPKHeader {
61
	SSPKHeader () { fVersion = 0; iValueCompression = lValueCompressSize = 0; }
85
	SSPKHeader () { fVersion = 0; iValueCompression = lValueCompressSize = 0; }
Line 268... Line 292...
268
	void RemoveFakePatchOrder(CyString scriptName, CyString author);
292
	void RemoveFakePatchOrder(CyString scriptName, CyString author);
269
	void AddFakePatchOrder(bool after, CyString scriptName, CyString author);
293
	void AddFakePatchOrder(bool after, CyString scriptName, CyString author);
270
	bool AnyFakePatchOrder() { if ( !m_lFakePatchBefore.Empty() || !m_lFakePatchAfter.Empty() ) return true; return false; }
294
	bool AnyFakePatchOrder() { if ( !m_lFakePatchBefore.Empty() || !m_lFakePatchAfter.Empty() ) return true; return false; }
271
	CyStringList &GetFakePatchBeforeOrder() { return m_lFakePatchBefore; }
295
	CyStringList &GetFakePatchBeforeOrder() { return m_lFakePatchBefore; }
272
	CyStringList &GetFakePatchAfterOrder() { return m_lFakePatchAfter; }
296
	CyStringList &GetFakePatchAfterOrder() { return m_lFakePatchAfter; }
-
 
297
	void updateTextDB() { this->_resetTextDB(); }
-
 
298
 
-
 
299
	virtual bool readWares(int iLang, CLinkList<SWareEntry> &list, const Utils::String &empWares);
273
 
300
 
274
//	bool IsChanged() { return m_bChanged; }
301
//	bool IsChanged() { return m_bChanged; }
275
//	void SetChanged(bool b) { m_bChanged = b; }
302
//	void SetChanged(bool b) { m_bChanged = b; }
276
 
303
 
277
	int  FindFirstGameInPackage();
304
	int  FindFirstGameInPackage();
Line 322... Line 349...
322
 
349
 
323
	int _read_FileHeader(std::fstream &stream, int iReadType, int iMaxProgress, int iDoneLen, CProgressInfo *pProgress);
350
	int _read_FileHeader(std::fstream &stream, int iReadType, int iMaxProgress, int iDoneLen, CProgressInfo *pProgress);
324
	int _read_Header(std::fstream &stream, int iReadType, int iMaxProgress, CProgressInfo *pProgress);
351
	int _read_Header(std::fstream &stream, int iReadType, int iMaxProgress, CProgressInfo *pProgress);
325
	CFileIO *_startRead();
352
	CFileIO *_startRead();
326
 
353
 
-
 
354
	void _addFile(C_File *file, bool dontChange = false);
-
 
355
	void _updateTextDB(C_File *file);
-
 
356
	void _resetTextDB();
-
 
357
	void _addWaresToList(int iLang, CLinkList<SWareEntry> &list, const Utils::String &wares, enum WareTypes eType);
-
 
358
 
-
 
359
protected:
327
	SSPKHeader m_SHeader;
360
	SSPKHeader m_SHeader;
328
	SSPKHeader2 m_SHeader2;
361
	SSPKHeader2 m_SHeader2;
329
 
362
 
330
	C_File *m_pIconFile;
363
	C_File *m_pIconFile;
331
	CyString m_sIconExt;
364
	CyString m_sIconExt;
Line 335... Line 368...
335
	CLinkList<C_File>  m_lFiles;
368
	CLinkList<C_File>  m_lFiles;
336
	CLinkList<SNames> m_lNames;			//TODO: move to CorePackage
369
	CLinkList<SNames> m_lNames;			//TODO: move to CorePackage
337
	CyStringList m_lMirrors;			//TODO: move to CorePackage
370
	CyStringList m_lMirrors;			//TODO: move to CorePackage
338
	CyStringList m_lFakePatchBefore;
371
	CyStringList m_lFakePatchBefore;
339
	CyStringList m_lFakePatchAfter;
372
	CyStringList m_lFakePatchAfter;
-
 
373
 
-
 
374
	CTextDB	*_pTextDB;
340
 
375
 
341
	CLinkList<SGameCompat> m_lGames;
376
	CLinkList<SGameCompat> m_lGames;
342
 
377
 
343
	bool m_bSigned;
378
	bool m_bSigned;
344
	bool m_bFullyLoaded;
379
	bool m_bFullyLoaded;