22#ifndef MACS2_AMIGA_ARCHIVE_H
23#define MACS2_AMIGA_ARCHIVE_H
25#include "common/archive.h"
26#include "common/array.h"
27#include "common/file.h"
28#include "common/hashmap.h"
29#include "common/mutex.h"
30#include "common/ptr.h"
31#include "common/str.h"
32#include "common/stream.h"
40enum AmigaResourceType : uint16 {
49 AmigaResourceType type = kAmigaResUnknown;
56 uint16 cursorResourceIds[8] = {0};
57 uint16 useInventoryCursorId = 0;
58 uint16 sceneCount = 0;
59 uint16 volumeCount = 0;
81 bool usePanelPatternFill =
true;
111 bool isOpen()
const {
return !_entries.
empty(); }
113 uint16 getSceneCount()
const {
return _sceneCount; }
114 uint16 getResourceCount()
const {
return _totalResources; }
115 const AmigaInfoData &getInfo()
const {
return _info; }
123 bool hasResource(AmigaResourceType type, uint16
id)
const;
131 static Common::String makeResourceName(AmigaResourceType type, uint16
id);
132 static bool parseResourceName(
const Common::String &name, AmigaResourceType &type, uint16 &
id);
133 static AmigaResourceType typeFromTag(uint16 tag);
134 static const char *typeToString(AmigaResourceType type);
151 uint32 payloadSize = 0;
157 bool openVolume(uint16 disk);
161 bool loadPrefMenuMode();
163 static byte *decompressPP20(
const byte *src, uint32 srcLen, uint32 &outLen);
164 static byte *decompressPayload(
const byte *payload, uint32 payloadLen, uint32 &outLen);
170 uint16 _sceneCount = 0;
171 uint16 _totalResources = 0;
172 uint32 _firstBlockSize = 0;
173 uint32 _firstBlockOffset = 14;
Definition: archive.h:141
bool empty() const
Definition: hashmap.h:303
Definition: amiga_archive.h:100
Common::SeekableReadStream * createSceneTableStream() const
bool hasFile(const Common::Path &path) const override
static bool decodePlanarSprite(const byte *mxoo, uint32 mxooSize, uint16 &width, uint16 &height, Common::Array< byte > &pixels)
int listMembers(Common::ArchiveMemberList &list) const override
Common::SeekableReadStream * createReadStreamForResource(AmigaResourceType type, uint16 id) const
const Common::ArchiveMemberPtr getMember(const Common::Path &path) const override
Common::SeekableReadStream * createReadStreamForMember(const Common::Path &path) const override
Definition: amiga_archive.h:48
Definition: amiga_archive.h:55
uint8 prefMenuMode
Definition: amiga_archive.h:80
uint16 panelDarkenColorIndices[8]
Definition: amiga_archive.h:72
uint16 startSceneResourceId
Definition: amiga_archive.h:86
uint16 uiPaletteAmiga[16]
Definition: amiga_archive.h:62
uint16 panelBorderColorIndices[5]
Definition: amiga_archive.h:67