aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/fullpipe/objects.h10
-rw-r--r--engines/fullpipe/stateloader.cpp14
-rw-r--r--engines/fullpipe/utils.cpp6
3 files changed, 29 insertions, 1 deletions
diff --git a/engines/fullpipe/objects.h b/engines/fullpipe/objects.h
index 6b615ffcba..36f6996062 100644
--- a/engines/fullpipe/objects.h
+++ b/engines/fullpipe/objects.h
@@ -396,6 +396,16 @@ class CGameLoader {
int _preloadId2;
};
+class CObjstateCommand : public CObject {
+ ExCommand _cmd;
+ char *_stringObj;
+ int _value;
+
+ public:
+ CObjstateCommand();
+ virtual bool load(MfcArchive &file);
+};
+
} // End of namespace Fullpipe
#endif /* FULLPIPE_OBJECTS_H */
diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp
index 4e54aa3d5d..fe67bf9b7d 100644
--- a/engines/fullpipe/stateloader.cpp
+++ b/engines/fullpipe/stateloader.cpp
@@ -384,4 +384,18 @@ Message::Message() {
_field_34 = 0;
}
+CObjstateCommand::CObjstateCommand() {
+ _value = 0;
+}
+
+bool CObjstateCommand::load(MfcArchive &file) {
+ _cmd.load(file);
+
+ _value = file.readUint32LE();
+
+ _stringObj = file.readPascalString();
+
+ return true;
+}
+
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/utils.cpp b/engines/fullpipe/utils.cpp
index 36eb86c56e..1c324a020c 100644
--- a/engines/fullpipe/utils.cpp
+++ b/engines/fullpipe/utils.cpp
@@ -56,7 +56,8 @@ int MfcArchive::readCount() {
enum {
kCInteraction = 0,
kMessageQueue = 1,
- kExCommand = 2
+ kExCommand = 2,
+ kCObjstateCommand = 3
};
const struct {
@@ -66,6 +67,7 @@ const struct {
{ "CInteraction", kCInteraction },
{ "MessageQueue", kMessageQueue },
{ "ExCommand", kExCommand },
+ { "CObjstateCommand", kCObjstateCommand },
{ 0, 0 }
};
@@ -125,6 +127,8 @@ CObject *MfcArchive::parseClass() {
return new MessageQueue();
case kExCommand:
return new ExCommand();
+ case kCObjstateCommand:
+ return new CObjstateCommand();
default:
error("Unknown objectId: %d", objectId);
}