-
Notifications
You must be signed in to change notification settings - Fork 14
/
resourcefile.h
87 lines (70 loc) · 1.32 KB
/
resourcefile.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
75
76
77
78
79
80
81
82
83
84
85
86
87
#ifndef __RESOURCEFILE_H
#define __RESOURCEFILE_H
#include <stdio.h>
#include <stdint.h>
#include "tarray.h"
//==========================================================================
//
//
//
//==========================================================================
struct CWADLump
{
uint32_t offset;
uint32_t length;
char name[9];
};
class CWADFile
{
TArray<CWADLump> lumps;
FILE *m_File;
char * m_Filename;
int m_NumLumps;
uint64_t m_LumpStart;
public:
CWADFile(const char * filename, FILE* f);
~CWADFile(void);
const char * GetName() const
{
return m_Filename;
}
int NumLumps()
{
return m_NumLumps;
}
virtual int FindLump(const char * name);
virtual int GetLumpSize(int lump);
virtual void * ReadLump(int lump);
virtual void ReadLump(int lump, void * buffer);
virtual const char * GetLumpName(int lump);
};
extern CWADFile *mainwad;
struct WadItemList
{
int mLump;
TArray<char> mData;
WadItemList(int lump)
{
mLump = lump;
}
char * Address()
{
if (mData.Size() != Length())
{
mData.Resize(Length());
}
mainwad->ReadLump(mLump, &mData[0]);
return &mData[0];
}
int Length() const
{
return mainwad->GetLumpSize(mLump);
}
void Release()
{
mData.Clear();
}
const char * Name() const { return mainwad->GetLumpName(mLump); }
};
void OpenMainWad(char * filename);
#endif