aboutsummaryrefslogtreecommitdiff
path: root/queen/resource.h
diff options
context:
space:
mode:
authorGregory Montoir2004-12-31 00:25:18 +0000
committerGregory Montoir2004-12-31 00:25:18 +0000
commita44e8248159fc836f9d534872b0d55741f0c803c (patch)
tree47df2cacddf071f0ff1c8a761b3038acc0d8c7d1 /queen/resource.h
parentf06348440fd2040cb8bf57849c7e6670db91caf0 (diff)
downloadscummvm-rg350-a44e8248159fc836f9d534872b0d55741f0c803c.tar.gz
scummvm-rg350-a44e8248159fc836f9d534872b0d55741f0c803c.tar.bz2
scummvm-rg350-a44e8248159fc836f9d534872b0d55741f0c803c.zip
added some comments and re-indented some parts of code
svn-id: r16394
Diffstat (limited to 'queen/resource.h')
-rw-r--r--queen/resource.h87
1 files changed, 64 insertions, 23 deletions
diff --git a/queen/resource.h b/queen/resource.h
index 9d32c175be..f937b03ef9 100644
--- a/queen/resource.h
+++ b/queen/resource.h
@@ -28,26 +28,6 @@
namespace Queen {
-enum Version {
- VER_ENG_FLOPPY = 0,
- VER_ENG_TALKIE = 1,
- VER_FRE_FLOPPY = 2,
- VER_FRE_TALKIE = 3,
- VER_GER_FLOPPY = 4,
- VER_GER_TALKIE = 5,
- VER_ITA_FLOPPY = 6,
- VER_ITA_TALKIE = 7,
- VER_SPA_TALKIE = 8,
- VER_HEB_TALKIE = 9,
- VER_DEMO_PCGAMES = 10,
- VER_DEMO = 11,
- VER_INTERVIEW = 12,
-
- VER_COUNT = 13
-};
-
-enum { CURRENT_TBL_VERSION = 1 };
-
struct ResourceEntry {
char filename[13];
uint8 bundle;
@@ -62,62 +42,123 @@ struct GameVersion {
};
class LineReader {
-
public:
+
LineReader(char *buffer, uint32 bufsize);
~LineReader();
char *nextLine();
private:
+
char *_buffer;
uint32 _bufSize;
int _current;
};
class Resource {
-
public:
+
Resource();
~Resource();
+ //! loads the specified from the resource file
uint8 *loadFile(const char *filename, uint32 skipBytes = 0, uint32 *size = NULL, bool useMalloc = false);
+
+ //! returns true if the file is present in the resource
bool fileExists(const char *filename) const { return resourceEntry(filename) != NULL; }
+ //! returns a reference to a sound file
File *giveCompressedSound(const char *filename, uint32 *size);
bool isDemo() const { return !strcmp(_versionString, "PE100"); }
bool isInterview() const { return !strcmp(_versionString, "PEint"); }
bool isFloppy() const { return _versionString[0] == 'P'; }
bool isCD() const { return _versionString[0] == 'C'; }
+
+ //! returns compression type for audio files
uint8 compression() const { return _compression; }
+
+ //! returns JAS version string (contains language, platform and version information)
const char *JASVersion() const { return _versionString; }
+
+ //! returns language of the game
Language getLanguage() const;
+ enum Version {
+ VER_ENG_FLOPPY = 0,
+ VER_ENG_TALKIE = 1,
+ VER_FRE_FLOPPY = 2,
+ VER_FRE_TALKIE = 3,
+ VER_GER_FLOPPY = 4,
+ VER_GER_TALKIE = 5,
+ VER_ITA_FLOPPY = 6,
+ VER_ITA_TALKIE = 7,
+ VER_SPA_TALKIE = 8,
+ VER_HEB_TALKIE = 9,
+ VER_DEMO_PCGAMES = 10,
+ VER_DEMO = 11,
+ VER_INTERVIEW = 12,
+
+ VER_COUNT = 13
+ };
+
+ enum {
+ CURRENT_TBL_VERSION = 1
+ };
+
enum {
JAS_VERSION_OFFSET_DEMO = 0x119A8,
JAS_VERSION_OFFSET_INTV = 0xCF8,
- JAS_VERSION_OFFSET = 0x12484
+ JAS_VERSION_OFFSET_PC = 0x12484
};
protected:
+
File *_resourceFile;
+
+ //! compression type for audio files
uint8 _compression;
+
+ //! JAS version string of the game
char _versionString[6];
+
+ //! number of entries in resource table
uint32 _resourceEntries;
+
ResourceEntry *_resourceTable;
+ //! look for a normal queen version (ie. queen.1)
bool findNormalVersion();
+
+ //! look for a compressed/rebuilt queen version (ie. queen.1c)
bool findCompressedVersion();
+
+ //! verify the version of the selected game
void checkJASVersion();
+
+ //! returns a reference to the ReseourceEntry for the specified filename
ResourceEntry *resourceEntry(const char *filename) const;
+
+ //! extarct the resource table for the specified game version
bool readTableFile(const GameVersion *gameVersion);
+
+ //! reads the resource table from a rebuilt datafile (ie. queen.1c)
void readTableCompResource();
+
+ //! read the resource table from the specified file
void readTableEntries(File *file);
+
+ //! detect game version based on queen.1 datafile size
const GameVersion *detectGameVersion(uint32 size) const;
+ //! resource table filename (queen.tbl)
static const char *_tableFilename;
+
+ //! known FOTAQ versions
static const GameVersion _gameVersions[];
+
#ifndef __PALM_OS__
+ //! resource table for english floppy version
static ResourceEntry _resourceTablePEM10[];
#endif
};