22#ifndef DIRECTOR_ARCHIVE_H
23#define DIRECTOR_ARCHIVE_H
25#include "common/hash-str.h"
26#include "common/file.h"
30class SeekableMemoryWriteStream;
31class SeekableReadStreamEndian;
32class SeekableReadStream;
48 uint32 compressionType;
54 uint32 nextFreeResourceID;
61 index = original->index;
62 offset = original->offset;
63 size = original->size;
64 uncompSize = original->uncompSize;
65 compressionType = original->compressionType;
66 castId = original->castId;
67 libResourceId = original->libResourceId;
69 flags = original->flags;
70 unk1 = original->unk1;
71 nextFreeResourceID = original->nextFreeResourceID;
74 accessed = original->accessed;
88 error(
"Archive::writeToFile was called on a non-RIFX Archive, which is not allowed");
94 bool loadConfig(
Cast *cast);
98 void setPathName(
const Common::Path &name) { _pathName = name; }
99 virtual uint32 getFileSize();
101 bool isOpen()
const {
return _stream != 0; }
103 bool hasResource(uint32 tag,
int id)
const;
104 bool hasResource(uint32 tag,
const Common::String &resName)
const;
108 virtual Resource getResourceDetail(uint32 tag, uint16
id);
109 uint32 getOffset(uint32 tag, uint16
id)
const;
110 uint getResourceSize(uint32 tag, uint16
id)
const;
111 uint16 findResourceID(uint32 tag,
const Common::String &resName,
bool ignoreCase =
false)
const;
118 static uint32 convertTagToUppercase(uint32 tag);
122 void listUnaccessedChunks();
141 uint32 getFileSize()
override;
142 void close()
override;
179 Resource getResourceDetail(uint32 tag, uint16
id)
override;
191 uint32 getMmapSize();
192 uint32 getImapSize();
193 uint32 getCASResourceSize(uint32 castLib);
194 uint32 getKeyTableResourceSize();
202 static const uint32 kNoParent = 0xFFFFFFFF;
203 uint32 findParentIndex(uint32 tag, uint16 index);
209 uint32 _mmapHeaderSize;
210 uint32 _mmapEntrySize;
218 uint16 _keyTableEntrySize;
219 uint16 _keyTableEntrySize2;
220 uint32 _keyTableEntryCount;
221 uint32 _keyTableUsedCount;
225 uint32 _afterBurnerVersion;
230 uint32 _abmpCompressionType;
231 uint32 _abmpUncompLength;
232 uint32 _abmpActualUncompLength;
240 uint32 _ilsBodyOffset;
265 bool isLoaded() {
return _isLoaded; }
281void dumpFile(
Common::String filename, uint32
id, uint32 tag,
byte *dumpData, uint32 dumpSize);
Definition: archive.h:141
Definition: macresman.h:126
Definition: memstream.h:155
Definition: castmember.h:48
Definition: archive.h:136
Definition: archive.h:256
int listMembers(Common::ArchiveMemberList &list) const override
bool hasFile(const Common::Path &path) const override
Common::SeekableReadStream * createReadStreamForMember(const Common::Path &path) const override
const Common::ArchiveMemberPtr getMember(const Common::Path &path) const override
Definition: archive.h:154
Definition: archive.h:166
Definition: archive.h:283
int listMembers(Common::ArchiveMemberList &list) const override
bool hasFile(const Common::Path &path) const override
const Common::ArchiveMemberPtr getMember(const Common::Path &path) const override
Common::SeekableReadStream * createReadStreamForMember(const Common::Path &path) const override
void NORETURN_PRE error(MSVC_PRINTF const char *s,...) GCC_PRINTF(1
Definition: algorithm.h:29
Path
Definition: game.h:76