diff options
Diffstat (limited to 'engines/fullpipe')
-rw-r--r-- | engines/fullpipe/objects.h | 46 | ||||
-rw-r--r-- | engines/fullpipe/scene.cpp | 28 | ||||
-rw-r--r-- | engines/fullpipe/scene.h | 2 | ||||
-rw-r--r-- | engines/fullpipe/statics.h | 112 |
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 */ |