diff options
author | Eugene Sandulenko | 2008-04-21 20:51:17 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2008-04-21 20:51:17 +0000 |
commit | 57a9ef3a8f42a7bb71d17f6150dce1e652ce33c0 (patch) | |
tree | 9f4fa14956a07d9c668b9e5abffa3323b42c9411 /engines/cine/msg.cpp | |
parent | 54485c24c530288280174f6d286c8c0b367a8206 (diff) | |
download | scummvm-rg350-57a9ef3a8f42a7bb71d17f6150dce1e652ce33c0.tar.gz scummvm-rg350-57a9ef3a8f42a7bb71d17f6150dce1e652ce33c0.tar.bz2 scummvm-rg350-57a9ef3a8f42a7bb71d17f6150dce1e652ce33c0.zip |
Patch #1941066: "CinE sprite overlay rewrite" courtsey of next_ghost
svn-id: r31651
Diffstat (limited to 'engines/cine/msg.cpp')
-rw-r--r-- | engines/cine/msg.cpp | 39 |
1 files changed, 13 insertions, 26 deletions
diff --git a/engines/cine/msg.cpp b/engines/cine/msg.cpp index 212b9ffd7c..55eb627309 100644 --- a/engines/cine/msg.cpp +++ b/engines/cine/msg.cpp @@ -31,45 +31,32 @@ namespace Cine { -uint16 messageCount; +Common::StringList messageTable; void loadMsg(char *pMsgName) { - uint16 i; + int i, count, len; byte *ptr, *dataPtr; + const char *messagePtr; checkDataDisk(-1); - messageCount = 0; - - for (i = 0; i < NUM_MAX_MESSAGE; i++) { - messageTable[i].len = 0; - if (messageTable[i].ptr) { - free(messageTable[i].ptr); - messageTable[i].ptr = NULL; - } - } + messageTable.clear(); ptr = dataPtr = readBundleFile(findFileInBundle(pMsgName)); setMouseCursor(MOUSE_CURSOR_DISK); - messageCount = READ_BE_UINT16(ptr); ptr += 2; - - assert(messageCount <= NUM_MAX_MESSAGE); - - for (i = 0; i < messageCount; i++) { - messageTable[i].len = READ_BE_UINT16(ptr); ptr += 2; - } - - for (i = 0; i < messageCount; i++) { - if (messageTable[i].len) { - messageTable[i].ptr = (byte *) malloc(messageTable[i].len); + count = READ_BE_UINT16(ptr); + ptr += 2; - assert(messageTable[i].ptr); + messagePtr = (const char*)(ptr + 2 * count); - memcpy(messageTable[i].ptr, ptr, messageTable[i].len); - ptr += messageTable[i].len; - } + for (i = 0; i < count; i++) { + len = READ_BE_UINT16(ptr); + ptr += 2; + + messageTable.push_back(messagePtr); + messagePtr += len; } free(dataPtr); |