diff options
author | Gregory Montoir | 2004-12-31 00:25:18 +0000 |
---|---|---|
committer | Gregory Montoir | 2004-12-31 00:25:18 +0000 |
commit | a44e8248159fc836f9d534872b0d55741f0c803c (patch) | |
tree | 47df2cacddf071f0ff1c8a761b3038acc0d8c7d1 /queen/resource.h | |
parent | f06348440fd2040cb8bf57849c7e6670db91caf0 (diff) | |
download | scummvm-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.h | 87 |
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 }; |