aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/mult.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gob/mult.h')
-rw-r--r--engines/gob/mult.h77
1 files changed, 76 insertions, 1 deletions
diff --git a/engines/gob/mult.h b/engines/gob/mult.h
index 5fa84a04c3..e67bfad3a8 100644
--- a/engines/gob/mult.h
+++ b/engines/gob/mult.h
@@ -24,6 +24,7 @@
#define GOB_MULT_H
#include "gob/sound.h"
+#include "gob/video.h"
namespace Gob {
@@ -173,7 +174,6 @@ public:
Mult_SndKey *_sndKeys;
void zeroMultData(void);
- void loadMult(int16 resId);
void freeMultKeys(void);
void checkFreeMult(void);
void playMult(int16 startFrame, int16 endFrame, char checkEscape,
@@ -187,7 +187,10 @@ public:
void playSound(Snd::SoundDesc * soundDesc, int16 repCount, int16 freq,
int16 channel);
+ virtual void loadMult(int16 resId) = 0;
+
Mult(GobEngine *vm);
+ virtual ~Mult() {};
protected:
Video::Color _fadePal[5][16];
@@ -202,6 +205,78 @@ protected:
char doSoundAnim(char stop);
};
+class Mult_v1 : public Mult {
+public:
+ Mult_v1(GobEngine *vm);
+ virtual ~Mult_v1() {};
+
+ virtual void loadMult(int16 resId);
+};
+
+class Mult_v2 : public Mult_v1 {
+public:
+#pragma START_PACK_STRUCTS
+ struct Mult_Data {
+ int16 palFadeKeysCount;
+ Mult_PalFadeKey *palFadeKeys;
+
+ int16 palKeysCount;
+ Mult_PalKey *palKeys;
+
+ int16 staticKeysCount;
+ Mult_StaticKey *staticKeys;
+ int8 staticCount;
+ int16 staticIndices[10];
+ int16 staticLoaded[10];
+
+ int16 animKeysCount[4];
+ Mult_AnimKey *animKeys[4];
+ int8 animCount;
+ int16 animIndices[10];
+ int16 animLoaded[10];
+ int16 animKeysIndices1[4]; // Not sure with these
+ int16 animKeysIndices2[4]; // "
+
+ int16 textKeysCount;
+ Mult_TextKey *textKeys;
+
+ int16 sndKeysCount;
+ Mult_SndKey *sndKeys;
+
+ int16 sndSlotsCount;
+ int16 sndSlot;
+ int16 frameRate;
+
+ Video::Color fadePal[5][16];
+ int16 palAnimIndices[4]; // Not sure here either
+ int16 frameStart;
+
+ int8 field_156;
+ int16 field_157[4];
+ int16 field_15F[4][4];
+ int16 field_17F[4][4];
+
+ int16 somepointer05size[4];
+ char *somepointer05[4]; // Seems to be similar to staticKeys/animKeys
+ int16 somepointer05indices[4];
+ char *somepointer09; // ?
+ char *somepointer10; // ?
+ char *execPtr;
+ } GCC_PACK;
+#pragma END_PACK_STRUCTS
+
+ Mult_Data *_multData2; // TODO: This'll be _multData once every function using it
+ // in GOB2 is done
+ // TODO: Maybe changing Mult_v1::_multData to struct Mult_Data as well?
+ // Could help minimizing code dup...
+ Mult_Data *_multDatas[8];
+
+ Mult_v2(GobEngine *vm);
+ virtual ~Mult_v2() {};
+
+ virtual void loadMult(int16 resId);
+};
+
} // End of namespace Gob
#endif /* __MULT_H */