aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2013-07-13 11:50:51 +0300
committerEugene Sandulenko2013-09-06 14:48:12 +0300
commita3de44d3b2ca9e30692d074fd538f89f20611c8c (patch)
tree6d40424c5d68387faf068baafb76628d6b816b10
parent5eaa5696e7b80b3dcc4e26979b3ee1976cba4b49 (diff)
downloadscummvm-rg350-a3de44d3b2ca9e30692d074fd538f89f20611c8c.tar.gz
scummvm-rg350-a3de44d3b2ca9e30692d074fd538f89f20611c8c.tar.bz2
scummvm-rg350-a3de44d3b2ca9e30692d074fd538f89f20611c8c.zip
FULLPIPE: Further work on sc2 loader
-rw-r--r--engines/fullpipe/objects.h114
-rw-r--r--engines/fullpipe/stateloader.cpp6
2 files changed, 80 insertions, 40 deletions
diff --git a/engines/fullpipe/objects.h b/engines/fullpipe/objects.h
index e6ed98dc50..81b172c548 100644
--- a/engines/fullpipe/objects.h
+++ b/engines/fullpipe/objects.h
@@ -190,17 +190,89 @@ class CMctlCompoundArray : public Common::Array<CObject>, public CObject {
virtual bool load(MfcArchive &file);
};
+class CMctlConnectionPointsArray : public Common::Array<CObject>, public CObject {
+ public:
+ virtual bool load(MfcArchive &file);
+};
+
+class CMctlCompoundArrayItem : public CObject {
+ int _motionControllerObj;
+ int _movGraphReactObj;
+ CMctlConnectionPointsArray _connectionPoints;
+ int _field_20;
+ int _field_24;
+ int _field_28;
+
+ public:
+ CMctlCompoundArrayItem() : _movGraphReactObj(0), _motionControllerObj(0) {}
+};
+
class CMctlCompound : public CMotionController {
- CMctlCompoundArray motionControllers;
+ CMctlCompoundArray _motionControllers;
+
+ public:
+ virtual bool load(MfcArchive &file);
+};
+
+class Unk2 {
+ //CObject CObject;
+ int items;
+ int count;
+};
+class CMovGraph : public CMotionController {
+ CObList _nodes;
+ CObList _links;
+ int _field_44;
+ int _items;
+ int _itemsCount;
+ int (*_callback1)(int, int, int);
+ Unk2 _unk2;
+};
+
+class ShadowsItemArray : public Common::Array<CObject>, public CObject {
public:
virtual bool load(MfcArchive &file);
};
+class Background {
+ CPtrList list;
+ int stringObj;
+ int x;
+ int y;
+ int16 messageQueueId;
+ int colorMemoryObj;
+ int bigPictureArray1Count;
+ int bigPictureArray2Count;
+ int bigPictureArray;
+};
+
+class Shadows {
+ //CObject obj;
+ int sceneId;
+ int staticAniObjectId;
+ int movementId;
+ ShadowsItemArray items;
+};
+
+class Scene {
+ Background bg;
+ CPtrList staticANIObjectList1;
+ CPtrList staticANIObjectList2;
+ CPtrList messageQueueList;
+ CPtrList faObjectList;
+ Shadows *shadows;
+ int soundList;
+ int16 sceneId;
+ int stringObj;
+ int field_BC;
+ int libHandle;
+};
+
class Sc2 : public CObject {
int16 _sceneId;
int16 _field_2;
- //Scene *_scene;
+ Scene *_scene;
CMotionController *_motionController;
int _data1;
int _count1;
@@ -322,44 +394,6 @@ class InventoryIcon {
typedef Common::Array<InventoryIcon> InventoryIcons;
-class Background {
- CPtrList list;
- int stringObj;
- int x;
- int y;
- int16 messageQueueId;
- int colorMemoryObj;
- int bigPictureArray1Count;
- int bigPictureArray2Count;
- int bigPictureArray;
-};
-
-class ShadowsItemArray {
- CObArray objs;
-};
-
-class Shadows {
- //CObject obj;
- int sceneId;
- int staticAniObjectId;
- int movementId;
- ShadowsItemArray items;
-};
-
-class Scene {
- Background bg;
- CPtrList staticANIObjectList1;
- CPtrList staticANIObjectList2;
- CPtrList messageQueueList;
- CPtrList faObjectList;
- Shadows *shadows;
- int soundList;
- int16 sceneId;
- int stringObj;
- int field_BC;
- int libHandle;
-};
-
class Picture {
MemoryObject obj;
Common::Rect rect;
diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp
index 9698da87e8..f242969a09 100644
--- a/engines/fullpipe/stateloader.cpp
+++ b/engines/fullpipe/stateloader.cpp
@@ -517,6 +517,12 @@ bool CMctlCompound::load(MfcArchive &file) {
debug(0, "CMctlCompund::count = %d", count);
+ for (int i = 0; i < count; i++) {
+ CMctlCompoundArrayItem *obj = (CMctlCompoundArrayItem *)file.readClass();
+
+ _motionControllers.push_back(*obj);
+ }
+
return true;
}