aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe
diff options
context:
space:
mode:
authorEugene Sandulenko2013-06-21 22:04:17 -0400
committerEugene Sandulenko2013-09-06 14:48:15 +0300
commit751f435df0ef424293e5bb44e205e898897aea6a (patch)
treef003322bdfce033f555c4d140b6a21a78ef9256f /engines/fullpipe
parent29f323fd27d67aede4668e07984eabd69180aee5 (diff)
downloadscummvm-rg350-751f435df0ef424293e5bb44e205e898897aea6a.tar.gz
scummvm-rg350-751f435df0ef424293e5bb44e205e898897aea6a.tar.bz2
scummvm-rg350-751f435df0ef424293e5bb44e205e898897aea6a.zip
FULLPIPE: Continued on scene loading
Diffstat (limited to 'engines/fullpipe')
-rw-r--r--engines/fullpipe/objects.h46
-rw-r--r--engines/fullpipe/scene.cpp28
-rw-r--r--engines/fullpipe/scene.h2
-rw-r--r--engines/fullpipe/statics.h112
4 files changed, 164 insertions, 24 deletions
diff --git a/engines/fullpipe/objects.h b/engines/fullpipe/objects.h
index c39e0d0425..c12905ec58 100644
--- a/engines/fullpipe/objects.h
+++ b/engines/fullpipe/objects.h
@@ -120,33 +120,33 @@ class CInputController {
};
struct PicAniInfo {
- int32 type;
- int16 objectId;
- int16 field_6;
- int32 field_8;
- int16 field_C;
- int16 field_E;
- int32 ox;
- int32 oy;
- int32 priority;
- int16 staticsId;
- int16 movementId;
- int16 dynamicPhaseIndex;
- int16 flags;
- int32 field_24;
- int32 someDynamicPhaseIndex;
-
- bool load(MfcArchive &file);
+ int32 type;
+ int16 objectId;
+ int16 field_6;
+ int32 field_8;
+ int16 field_C;
+ int16 field_E;
+ int32 ox;
+ int32 oy;
+ int32 priority;
+ int16 staticsId;
+ int16 movementId;
+ int16 dynamicPhaseIndex;
+ int16 flags;
+ int32 field_24;
+ int32 someDynamicPhaseIndex;
+
+ bool load(MfcArchive &file);
};
struct EntranceInfo {
- int32 sceneId;
- int32 field_4;
- int32 messageQueueId;
- byte gap_C[292]; // FIXME
- int32 field_130;
+ int32 sceneId;
+ int32 field_4;
+ int32 messageQueueId;
+ byte gap_C[292]; // FIXME
+ int32 field_130;
- bool load(MfcArchive &file);
+ bool load(MfcArchive &file);
};
class CMotionController;
diff --git a/engines/fullpipe/scene.cpp b/engines/fullpipe/scene.cpp
index 4f17230d6c..7b74c18f97 100644
--- a/engines/fullpipe/scene.cpp
+++ b/engines/fullpipe/scene.cpp
@@ -24,6 +24,7 @@
#include "fullpipe/objects.h"
#include "fullpipe/ngiarchive.h"
+#include "fullpipe/statics.h"
namespace Fullpipe {
@@ -116,6 +117,33 @@ bool Scene::load(MfcArchive &file) {
_bg.load(file);
+ _sceneId = file.readUint16LE();
+
+ _stringObj = file.readPascalString();
+ debug(0, "scene: <%s>", _stringObj);
+
+ int count = file.readUint16LE();
+
+ for (int i = 0; i < count; i++) {
+ int aniNum = file.readUint16LE();
+ char *aniname = genFileName(0, aniNum, "ani");
+
+ Common::SeekableReadStream *f = g_fullpipe->_currArchive->createReadStreamForMember(aniname);
+
+ StaticANIObject *ani = new StaticANIObject();
+
+ MfcArchive archive(f);
+
+ ani->load(archive);
+ ani->_sceneId = _sceneId;
+
+ _staticANIObjectList1.push_back(ani);
+
+ delete f;
+ free(aniname);
+
+
+ }
return true;
}
diff --git a/engines/fullpipe/scene.h b/engines/fullpipe/scene.h
index df532b2355..1c7a9fda04 100644
--- a/engines/fullpipe/scene.h
+++ b/engines/fullpipe/scene.h
@@ -34,7 +34,7 @@ class Scene : public CObject {
Shadows *_shadows;
int _soundList;
int16 _sceneId;
- int _stringObj;
+ char *_stringObj;
int _field_BC;
int _libHandle;
diff --git a/engines/fullpipe/statics.h b/engines/fullpipe/statics.h
new file mode 100644
index 0000000000..ef4f2a5fb3
--- /dev/null
+++ b/engines/fullpipe/statics.h
@@ -0,0 +1,112 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef FULLPIPE_STATICS_H
+#define FULLPIPE_STATICS_H
+
+namespace Fullpipe {
+
+class CStepArray : public CObject {
+ int _currPointIndex;
+ int _points;
+ int _maxPointIndex;
+ int _pointsCount;
+ int _isEos;
+};
+
+class StaticPhase : public Picture {
+ int16 _initialCountdown;
+ int16 _countdown;
+ int16 _field_68;
+ int16 _field_6A;
+ int _exCommand;
+};
+
+class DynamicPhase : public StaticPhase {
+ int _someX;
+ int _someY;
+ Common::Rect *_rectPtr;
+ int16 _field_7C;
+ int16 _field_7E;
+ int _flags;
+};
+
+class Statics : public DynamicPhase {
+ int16 _staticsId;
+ int16 _field_86;
+ char *_stringObj;
+ int _picture;
+};
+
+class Movement : public GameObject {
+ int _field_24;
+ int _field_28;
+ int _lastFrameSpecialFlag;
+ int _flipFlag;
+ int _updateFlag1;
+ Statics *_staticsObj1;
+ Statics *_staticsObj2;
+ int _mx;
+ int _my;
+ int _m2x;
+ int _m2y;
+ int _field_50;
+ int _counterMax;
+ int _counter;
+ CPtrList _dynamicPhases;
+ int _field_78;
+ int _framePosOffsets;
+ int _currMovementObj;
+ int _field_84;
+ DynamicPhase *_currDynamicPhase;
+ int _field_8C;
+ int _currDynamicPhaseIndex;
+ int _field_94;
+};
+
+class StaticANIObject : public GameObject {
+ Movement *_movementObj;
+ Statics *_staticsObj;
+ int _shadowsOn;
+ int16 _field_30;
+ int16 _field_32;
+ int _field_34;
+ int _initialCounter;
+ int _callback1;
+ int _callback2;
+ CPtrList _movements;
+ CPtrList _staticsList;
+ CStepArray _stepArray;
+ int16 _field_96;
+ int _messageQueueId;
+ int _messageNum;
+ int _animExFlag;
+ int _counter;
+ int _someDynamicPhaseIndex;
+
+ public:
+ int16 _sceneId;
+};
+
+} // End of namespace Fullpipe
+
+#endif /* FULLPIPE_STATICS_H */