-
Notifications
You must be signed in to change notification settings - Fork 0
/
PackManager.h
74 lines (48 loc) · 1.34 KB
/
PackManager.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#ifndef PACKMANAGER_H
#define PACKMANAGER_H
#include <stdio.h>
#include <iostream>
#include "Log.h"
#define MAX_FILES_PER_PACK 64
struct FILE_INDEX
{
char szFileName[32];
unsigned int iFileSize;
unsigned int iFileLocation;
unsigned int iReserved;
};
class PackManager
{
protected:
FILE *filePackFile;
FILE_INDEX fiMainIndex[MAX_FILES_PER_PACK];
char m_szFileName[128];
unsigned char *tmpBuffer; //for a file
int m_iAmountOfFiles;
bool m_bFileOpen;
public:
PackManager();
~PackManager();
//For creating packfiles
void CreateNewPackFile();
bool AddFile(char *szFileName);
bool ProcessPackFile( char *szFileName );
void CleanUp();
//For reading packfiles
bool OpenPackFile(char *szFileName);
int GetFileAmount();
const char *GetNameByIndex(int iIndex);
int GetIndexByName(char *szFileName);
unsigned char *GetDataByIndex( int iIndex );
unsigned char *GetDataByName( char *szFileName );
FILE *GetFPByIndex(int iIndex, bool shared = true);
FILE *GetFPByName(char *szFileName, bool shared = true);
unsigned int GetSizeByIndex( int iIndex );
unsigned int GetSizeByName( char *szFileName );
void ClosePackFile();
static PackManager* Instance() {return &I;}
private:
static PackManager I;
};
#define Pack PackManager::Instance()
#endif