aboutsummaryrefslogtreecommitdiff
path: root/engines/cine/msg.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2008-04-21 20:51:17 +0000
committerEugene Sandulenko2008-04-21 20:51:17 +0000
commit57a9ef3a8f42a7bb71d17f6150dce1e652ce33c0 (patch)
tree9f4fa14956a07d9c668b9e5abffa3323b42c9411 /engines/cine/msg.cpp
parent54485c24c530288280174f6d286c8c0b367a8206 (diff)
downloadscummvm-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.cpp39
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);