aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/ArchiveFile.h
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/ArchiveFile.h')
-rw-r--r--Minecraft.Client/ArchiveFile.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/Minecraft.Client/ArchiveFile.h b/Minecraft.Client/ArchiveFile.h
new file mode 100644
index 00000000..722d570d
--- /dev/null
+++ b/Minecraft.Client/ArchiveFile.h
@@ -0,0 +1,38 @@
+#pragma once
+
+#include <vector>
+#include <unordered_map>
+
+#include "..\Minecraft.World\File.h"
+#include "..\Minecraft.World\ArrayWithLength.h"
+
+using namespace std;
+
+class ArchiveFile
+{
+protected:
+ File m_sourcefile;
+ BYTE *m_cachedData;
+
+ typedef struct _MetaData
+ {
+ wstring filename;
+ int ptr;
+ int filesize;
+ bool isCompressed;
+
+ } MetaData, *PMetaData;
+
+ unordered_map<wstring, PMetaData> m_index;
+
+public:
+ void _readHeader(DataInputStream *dis);
+
+ ArchiveFile(File file);
+ ~ArchiveFile();
+
+ vector<wstring> *getFileList();
+ bool hasFile(const wstring &filename);
+ int getFileSize(const wstring &filename);
+ byteArray getFile(const wstring &filename);
+}; \ No newline at end of file