diff options
Diffstat (limited to 'engines/fullpipe/statics.h')
-rw-r--r-- | engines/fullpipe/statics.h | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/engines/fullpipe/statics.h b/engines/fullpipe/statics.h index 1767a5720e..a620daa528 100644 --- a/engines/fullpipe/statics.h +++ b/engines/fullpipe/statics.h @@ -42,7 +42,10 @@ class StepArray : public CObject { void clear(); int getCurrPointIndex() { return _currPointIndex; } + int getPointsCount() { return _maxPointIndex; } + Common::Point *getCurrPoint(Common::Point *point); + Common::Point *getPoint(Common::Point *point, int index, int offset); bool gotoNextPoint(); }; @@ -104,8 +107,7 @@ class StaticANIObject; class Movement : public GameObject { public: - int _field_24; - int _field_28; + Common::Point _somePoint; int _lastFrameSpecialFlag; int _flipFlag; int _updateFlag1; @@ -130,6 +132,8 @@ class Movement : public GameObject { public: Movement(); + virtual ~Movement(); + Movement(Movement *src, StaticANIObject *ani); Movement(Movement *src, int *flag1, int flag2, StaticANIObject *ani); @@ -140,6 +144,8 @@ class Movement : public GameObject { Common::Point *getCenter(Common::Point *p); Common::Point *getDimensionsOfPhase(Common::Point *p, int phaseIndex); + Common::Point *calcSomeXY(Common::Point &p, int idx); + void initStatics(StaticANIObject *ani); void updateCurrDynamicPhase(); @@ -149,14 +155,16 @@ class Movement : public GameObject { DynamicPhase *getDynamicPhaseByIndex(int idx); int calcDuration(); + int countPhasesWithFlag(int maxidx, int flag); void removeFirstPhase(); - bool gotoNextFrame(int callback1, void (*callback2)(int *)); + bool gotoNextFrame(void (*_callback1)(int, Common::Point *point, int, int), void (*callback2)(int *)); bool gotoPrevFrame(); void gotoFirstFrame(); void gotoLastFrame(); void loadPixelData(); + void freePixelData(); void draw(bool flipFlag, int angle); }; @@ -170,7 +178,7 @@ class StaticANIObject : public GameObject { int16 _field_32; int _field_34; int _initialCounter; - int _callback1; + void (*_callback1)(int, Common::Point *point, int, int); void (*_callback2)(int *); PtrList _movements; PtrList _staticsList; @@ -182,11 +190,12 @@ class StaticANIObject : public GameObject { int _counter; int _someDynamicPhaseIndex; - public: +public: int16 _sceneId; - public: +public: StaticANIObject(); + virtual ~StaticANIObject(); StaticANIObject(StaticANIObject *src); virtual bool load(MfcArchive &file); @@ -199,6 +208,8 @@ class StaticANIObject : public GameObject { Movement *getMovementByName(char *name); Common::Point *getCurrDimensions(Common::Point &p); + Common::Point *getSomeXY(Common::Point &p); + void clearFlags(); void setFlags40(bool state); bool isIdle(); @@ -206,11 +217,14 @@ class StaticANIObject : public GameObject { void deleteFromGlobalMessageQueue(); void queueMessageQueue(MessageQueue *msg); + void restartMessageQueue(MessageQueue *msg); MessageQueue *getMessageQueue(); bool trySetMessageQueue(int msgNum, int qId); + void startMQIfIdle(int qId, int flag); void initMovements(); void loadMovementsPixelData(); + void preloadMovements(MovTable *mt); void setSomeDynamicPhaseIndex(int val) { _someDynamicPhaseIndex = val; } void adjustSomeXY(); @@ -232,7 +246,9 @@ class StaticANIObject : public GameObject { MovTable *countMovements(); void setSpeed(int speed); + void updateStepPos(); void stopAnim_maybe(); + Common::Point *calcNextStep(Common::Point *point); MessageQueue *changeStatics1(int msgNum); void changeStatics2(int objId); @@ -243,6 +259,9 @@ class StaticANIObject : public GameObject { struct MovTable { int count; int16 *movs; + + MovTable() { count = 0; movs = 0; } + ~MovTable() { free(movs); } }; } // End of namespace Fullpipe |