aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/message.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/engine/message.h')
-rw-r--r--engines/sci/engine/message.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/engines/sci/engine/message.h b/engines/sci/engine/message.h
index 5a8924f4b5..e8f0662440 100644
--- a/engines/sci/engine/message.h
+++ b/engines/sci/engine/message.h
@@ -27,6 +27,7 @@
#define SCI_ENGINE_MESSAGE_H
#include "sci/scicore/resource.h"
+#include "common/stack.h"
namespace Sci {
@@ -40,38 +41,40 @@ struct MessageTuple {
struct IndexRecordCursor {
byte *index_record;
int index;
- byte *resource_beginning;
+ int nextSeq;
};
+typedef Common::Stack<IndexRecordCursor> CursorStack;
+
class MessageState {
public:
+ MessageState() : _module(-1) { }
int getMessage(MessageTuple *t);
int getNext();
int getTalker();
int getLength();
void getText(char *buffer);
- int loadRes(int module);
+ int loadRes(ResourceManager *resmgr, int module, bool lock);
int isInitialized() { return _initialized; }
void initialize(ResourceManager *resmgr);
void setVersion(int version) { _version = version; }
private:
- void initIndexRecordCursor();
void parse(IndexRecordCursor *cursor, MessageTuple *t);
+ void parseRef(IndexRecordCursor *cursor, MessageTuple *t);
+ void initCursor();
+ void advanceCursor(bool increaseSeq);
int _initialized;
- ResourceManager *_resmgr;
Resource *_currentResource;
int _module;
int _recordCount;
byte *_indexRecords;
+ CursorStack _cursorStack;
IndexRecordCursor _engineCursor;
- MessageTuple _lastMessage;
int _version;
};
-void message_state_initialize(ResourceManager *resmgr, MessageState *state);
-
} // End of namespace Sci
#endif // SCI_ENGINE_MESSAGE_H