1 /* ScummVM - Graphic Adventure Engine 2 * 3 * ScummVM is the legal property of its developers, whose names 4 * are too numerous to list here. Please refer to the COPYRIGHT 5 * file distributed with this source distribution. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * 21 */ 22 23 #ifndef GOB_TOTFILE_H 24 #define GOB_TOTFILE_H 25 26 #include "common/str.h" 27 28 namespace Common { 29 class SeekableReadStream; 30 } 31 32 namespace Gob { 33 34 class TOTFile { 35 public: 36 enum Function { 37 kFunctionStart = 0, 38 kFunctionCenter = 13 39 }; 40 41 struct Properties { 42 uint8 versionMajor; 43 uint8 versionMinor; 44 uint32 variablesCount; 45 uint32 textsOffset; 46 uint32 resourcesOffset; 47 uint16 animDataSize; 48 uint8 imFileNumber; 49 uint8 exFileNumber; 50 uint8 communHandling; 51 uint16 functions[14]; 52 uint32 scriptEnd; 53 uint32 textsSize; 54 uint32 resourcesSize; 55 }; 56 57 TOTFile(GobEngine *vm); 58 ~TOTFile(); 59 60 bool load(const Common::String &fileName); 61 void unload(); 62 63 Common::SeekableReadStream *getStream() const; 64 bool getProperties(Properties &props) const; 65 66 static Common::String createFileName(const Common::String &base, bool &isLOM); 67 static Common::String getFileBase(const Common::String &fileName); 68 69 private: 70 GobEngine *_vm; 71 72 Common::SeekableReadStream *_stream; 73 74 byte _header[128]; 75 }; 76 77 } // End of namespace Gob 78 79 #endif // GOB_TOTFILE_H 80