diff options
author | Filippos Karapetis | 2009-04-23 18:17:35 +0000 |
---|---|---|
committer | Filippos Karapetis | 2009-04-23 18:17:35 +0000 |
commit | bd2c2b0e500bfa46077978d42e8a8c9e38582f4c (patch) | |
tree | 03e4b095dd9a5763929e299faf74a34ba933e501 /engines/sci/engine/message.cpp | |
parent | a016ed90ba814541af587cb185c0844164e16941 (diff) | |
download | scummvm-rg350-bd2c2b0e500bfa46077978d42e8a8c9e38582f4c.tar.gz scummvm-rg350-bd2c2b0e500bfa46077978d42e8a8c9e38582f4c.tar.bz2 scummvm-rg350-bd2c2b0e500bfa46077978d42e8a8c9e38582f4c.zip |
WIP code for kGetMessage (tested with Eco Quest 1). Currently, it doesn't always work for some reason...
svn-id: r40092
Diffstat (limited to 'engines/sci/engine/message.cpp')
-rw-r--r-- | engines/sci/engine/message.cpp | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/engines/sci/engine/message.cpp b/engines/sci/engine/message.cpp index 34754668e7..284129e365 100644 --- a/engines/sci/engine/message.cpp +++ b/engines/sci/engine/message.cpp @@ -28,17 +28,12 @@ namespace Sci { -#if 0 -// Unreferenced - removed static int get_talker_trivial(IndexRecordCursor *cursor) { return -1; } -#endif /* Version 2.101 and later code ahead */ -#if 0 -// Unreferenced - removed static void index_record_parse_2101(IndexRecordCursor *cursor, MessageTuple *t) { int noun = *(cursor->index_record + 0); int verb = *(cursor->index_record + 1); @@ -47,24 +42,17 @@ static void index_record_parse_2101(IndexRecordCursor *cursor, MessageTuple *t) t->verb = verb; t->cond = t->seq = 0; } -#endif -#if 0 -// Unreferenced - removed static void index_record_get_text_2101(IndexRecordCursor *cursor, char *buffer, int buffer_size) { int offset = READ_LE_UINT16(cursor->index_record + 2); char *stringptr = (char *)cursor->resource_beginning + offset; strncpy(buffer, stringptr, buffer_size); } -#endif -#if 0 -// Unreferenced - removed static int header_get_index_record_count_2101(byte *header) { return READ_LE_UINT16(header + 4); } -#endif // Version 3.411 and later code ahead @@ -175,6 +163,16 @@ int MessageState::loadRes(int module) { return 1; } +static MessageHandler fixed_handler_old = { + 2101, + index_record_parse_2101, + get_talker_trivial, + index_record_get_text_2101, + header_get_index_record_count_2101, + 10, // FIXME: is this correct? + 11 // FIXME: is this correct? +}; + static MessageHandler fixed_handler = { 3411, index_record_parse_3411, @@ -186,20 +184,23 @@ static MessageHandler fixed_handler = { }; void message_state_initialize(ResourceManager *resmgr, MessageState *state) { - //Resource *tester = resmgr->findResource(kResourceTypeMessage, 0, 0); - //int version; + Resource *tester = resmgr->findResource(kResourceTypeMessage, 0, 0); + int version; - //if (tester == NULL) - // return; + if (tester == NULL) + return; - //version = READ_LE_UINT16(tester->data); + version = READ_LE_UINT16(tester->data); state->initialized = 1; state->_module = -1; state->resmgr = resmgr; state->current_res = NULL; state->record_count = 0; - state->handler = &fixed_handler; + if (version == 2101) + state->handler = &fixed_handler_old; + else + state->handler = &fixed_handler; } } // End of namespace Sci |