aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/game.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gob/game.h')
-rw-r--r--engines/gob/game.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/engines/gob/game.h b/engines/gob/game.h
index 7e14a54091..f272ece7d3 100644
--- a/engines/gob/game.h
+++ b/engines/gob/game.h
@@ -94,6 +94,37 @@ public:
int16 frontColor;
char *ptr;
} GCC_PACK;
+
+ struct ImdCoord {
+ int16 left;
+ int16 top;
+ int16 right;
+ int16 bottom;
+ } GCC_PACK;
+
+ struct Imd {
+ int16 fileHandle;
+ int16 verMin;
+ int16 framesCount;
+ int16 x;
+ int16 y;
+ int16 width;
+ int16 height;
+ int16 field_E;
+ int16 curFrame;
+ Video::Color *palette;
+ Video::SurfaceDesc *surfDesc;
+ int32 *framesPos;
+ int32 firstFramePos;
+ int16 stdX;
+ int16 stdY;
+ int16 stdWidth;
+ int16 stdHeight;
+ int32 filePos;
+ ImdCoord *frameCoords;
+ int32 frameDataSize;
+ int32 vidBufferSize;
+ } GCC_PACK;
#pragma END_PACK_STRUCTS
TotResTable *_totResourceTable;
@@ -135,6 +166,18 @@ public:
char *_variablesArray[5];
char _curTotFileArray[5][14];
+ Imd *_imdFile;
+ char _curImdFile[15];
+ int16 _imdX;
+ int16 _imdY;
+ int16 _imdFrameDataSize;
+ int16 _imdVidBufferSize;
+ byte *_imdFrameData;
+ byte *_imdVidBuffer;
+ int8 _byte_2FC82;
+ int8 _byte_2FC83;
+ byte *_word_2FC80;
+
Game(GobEngine *vm);
virtual ~Game() {};
@@ -163,6 +206,18 @@ public:
char *loadLocTexts(void);
Snd::SoundDesc *loadSND(const char *path, int8 arg_4);
+ Imd *loadImdFile(const char *path, Video::SurfaceDesc *surfDesc, int8 flags);
+ int8 openImd(const char *path, int16 x, int16 y, int16 repeat, int16 flags);
+ void closeImd(void);
+ void finishImd(Imd *imdPtr);
+ void setImdXY(Imd *imdPtr, int16 x, int16 y);
+ void playImd(int16 arg_0, int16 arg_2, int16 arg_4, int16 arg_6, int16 arg_8, int16 arg_A);
+ int16 viewImd(Game::Imd *imdPtr, int16 arg_4);
+ void imdDrawFrame(Imd *imdPtr, int16 arg_4, int16 arg_6, int16 arg_8);
+ void imdRenderFrame(Imd *imdPtr);
+ void imdFrameUncompressor(byte *dest, byte *src);
+ int16 sub_2C825(Imd *imdPtr);
+
virtual void playTot(int16 skipPlay) = 0;
virtual void clearCollisions(void) = 0;
virtual void addNewCollision(int16 id, int16 left, int16 top, int16 right,
@@ -177,10 +232,12 @@ public:
int16 _word_2FC9C;
int16 _word_2FC9E;
int16 _word_2E51F;
+ int32 _dword_2F2B6;
Video::SurfaceDesc *_off_2E51B;
Video::SurfaceDesc *_off_2E517;
void sub_ADD2(void);
void sub_BB28(void);
+
protected:
int16 _lastCollKey;