aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/mult.h
diff options
context:
space:
mode:
authorMax Horn2006-02-11 22:45:04 +0000
committerMax Horn2006-02-11 22:45:04 +0000
commit26ee630756ebdd7c96bccede0881a8c8b98e8f2b (patch)
tree26e378d5cf990a2b81c2c96e9e683a7f333b62e8 /engines/gob/mult.h
parent2a9a0d4211b1ea5723f1409d91cb95de8984429e (diff)
downloadscummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.tar.gz
scummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.tar.bz2
scummvm-rg350-26ee630756ebdd7c96bccede0881a8c8b98e8f2b.zip
Moved engines to the new engines/ directory
svn-id: r20582
Diffstat (limited to 'engines/gob/mult.h')
-rw-r--r--engines/gob/mult.h208
1 files changed, 208 insertions, 0 deletions
diff --git a/engines/gob/mult.h b/engines/gob/mult.h
new file mode 100644
index 0000000000..992c01cba3
--- /dev/null
+++ b/engines/gob/mult.h
@@ -0,0 +1,208 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2004 Ivan Dubrov
+ * Copyright (C) 2004-2006 The ScummVM project
+ *
+ * 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+#ifndef GOB_MULT_H
+#define GOB_MULT_H
+
+#include "gob/sound.h"
+
+namespace Gob {
+
+class Mult {
+public:
+#pragma START_PACK_STRUCTS
+ struct Mult_AnimData {
+ int8 animation;
+ int8 layer;
+ int8 frame;
+ int8 animType;
+ int8 order;
+ int8 isPaused;
+ int8 isStatic;
+ int8 maxTick;
+ int8 unknown;
+ int8 newLayer;
+ int8 newAnimation;
+ byte intersected;
+ int8 newCycle;
+ } GCC_PACK;
+
+ struct Mult_Object {
+ int32 *pPosX;
+ int32 *pPosY;
+ Mult_AnimData *pAnimData;
+ int16 tick;
+ int16 lastLeft;
+ int16 lastRight;
+ int16 lastTop;
+ int16 lastBottom;
+ };
+
+ struct Mult_StaticKey {
+ int16 frame;
+ int16 layer;
+ } GCC_PACK;
+
+ struct Mult_AnimKey {
+ int16 frame;
+ int16 layer;
+ int16 posX;
+ int16 posY;
+ int16 order;
+ } GCC_PACK;
+
+ struct Mult_TextKey {
+ int16 frame;
+ int16 cmd;
+ int16 unknown0[9];
+ int16 index;
+ int16 unknown1[2];
+ } GCC_PACK;
+
+ struct Mult_PalKey {
+ int16 frame;
+ int16 cmd;
+ int16 rates[4];
+ int16 unknown0;
+ int16 unknown1;
+ int8 subst[16][4];
+ } GCC_PACK;
+
+ struct Mult_PalFadeKey {
+ int16 frame;
+ int16 fade;
+ int16 palIndex;
+ int8 flag;
+ } GCC_PACK;
+
+ struct Mult_SndKey {
+ int16 frame;
+ int16 cmd;
+ int16 freq;
+ int16 channel;
+ int16 repCount;
+ int16 resId;
+ int16 soundIndex;
+ } GCC_PACK;
+#pragma END_PACK_STRUCTS
+
+ // Globals
+
+ Mult_Object *_objects;
+ int16 *_renderData;
+ int16 _objCount;
+ Video::SurfaceDesc *_underAnimSurf;
+
+ char *_multData;
+ int16 _frame;
+ char _doPalSubst;
+ int16 _counter;
+ int16 _frameRate;
+
+ int32 *_animArrayX;
+ int32 *_animArrayY;
+
+ Mult_AnimData *_animArrayData;
+
+ int16 _index;
+
+ // Static keys
+ int16 _staticKeysCount;
+ Mult_StaticKey *_staticKeys;
+ int16 _staticIndices[10];
+
+ // Anim keys
+ Mult_AnimKey *_animKeys[4];
+ int16 _animKeysCount[4];
+ int16 _animLayer;
+ int16 _animIndices[10];
+
+ // Text keys
+ int16 _textKeysCount;
+ Mult_TextKey *_textKeys;
+
+ int16 _frameStart;
+
+ // Palette keys
+ int16 _palKeyIndex;
+ int16 _palKeysCount;
+ Mult_PalKey *_palKeys;
+ Video::Color *_oldPalette;
+ Video::Color _palAnimPalette[256];
+ int16 _palAnimKey;
+ int16 _palAnimIndices[4];
+ int16 _palAnimRed[4];
+ int16 _palAnimGreen[4];
+ int16 _palAnimBlue[4];
+
+ // Palette fading
+ Mult_PalFadeKey *_palFadeKeys;
+ int16 _palFadeKeysCount;
+ char _palFadingRed;
+ char _palFadingGreen;
+ char _palFadingBlue;
+
+ char _animDataAllocated;
+
+ char *_dataPtr;
+ int16 _staticLoaded[10];
+ int16 _animLoaded[10];
+ int16 _sndSlotsCount;
+
+ // Sound keys
+ int16 _sndKeysCount;
+ Mult_SndKey *_sndKeys;
+
+ void zeroMultData(void);
+ void loadMult(int16 resId);
+ void freeMultKeys(void);
+ void checkFreeMult(void);
+ void playMult(int16 startFrame, int16 endFrame, char checkEscape,
+ char handleMouse);
+ void animate(void);
+ void interGetObjAnimSize(void);
+ void interInitMult(void);
+ void freeMult(void);
+ void interLoadMult(void);
+ void freeAll(void);
+ void initAll(void);
+ void playSound(Snd::SoundDesc * soundDesc, int16 repCount, int16 freq,
+ int16 channel);
+
+ Mult(GobEngine *vm);
+
+protected:
+ Video::Color _fadePal[5][16];
+ GobEngine *_vm;
+
+ char drawStatics(char stop);
+ void drawAnims(void);
+ void drawText(char *pStop, char *pStopNoClear);
+ char prepPalAnim(char stop);
+ void doPalAnim(void);
+ char doFadeAnim(char stop);
+ char doSoundAnim(char stop);
+};
+
+} // End of namespace Gob
+
+#endif /* __MULT_H */