diff options
Diffstat (limited to 'engines/lab/resource.cpp')
-rw-r--r-- | engines/lab/resource.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/engines/lab/resource.cpp b/engines/lab/resource.cpp index 290216c5e8..0c60924cda 100644 --- a/engines/lab/resource.cpp +++ b/engines/lab/resource.cpp @@ -58,7 +58,7 @@ void Resource::readStaticText() { TextFont *Resource::getFont(const char *fileName) { Common::File *dataFile; if (!(dataFile = openDataFile(fileName, MKTAG('V', 'G', 'A', 'F')))) - return NULL; + error("getFont: couldn't open %s (%s)", translateFileName(fileName), fileName); uint32 headerSize = 4L + 2L + 256 * 3 + 4L; uint32 fileSize = dataFile->size(); @@ -80,6 +80,25 @@ TextFont *Resource::getFont(const char *fileName) { return textfont; } +char *Resource::getText(const char *fileName) { + Common::File *dataFile = new Common::File(); + dataFile->open(translateFileName(fileName)); + if (!dataFile->isOpen()) + error("getText: couldn't open %s (%s)", translateFileName(fileName), fileName); + + g_lab->_music->updateMusic(); + + byte count = dataFile->size(); + byte *buffer = new byte[count]; + byte *text = buffer; + dataFile->read(buffer, count); + + while (text && *text != '\0') + *text++ -= (byte)95; + + return (char *)buffer; +} + bool Resource::readRoomData(const char *fileName) { Common::File *dataFile; if (!(dataFile = openDataFile(fileName, MKTAG('D', 'O', 'R', '1')))) |