diff options
Diffstat (limited to 'engines/scumm/scumm_v7.h')
-rw-r--r-- | engines/scumm/scumm_v7.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/engines/scumm/scumm_v7.h b/engines/scumm/scumm_v7.h new file mode 100644 index 0000000000..fdc1d6de9c --- /dev/null +++ b/engines/scumm/scumm_v7.h @@ -0,0 +1,144 @@ +/* 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. + * + * $URL$ + * $Id$ + * + */ + +#ifndef SCUMM_SCRIPT_V7_H +#define SCUMM_SCRIPT_V7_H + +#ifdef ENABLE_SCUMM_7_8 + +#include "scumm/scumm_v6.h" + +namespace Scumm { + +class Insane; +class SmushMixer; +class SmushPlayer; + +class ScummEngine_v7 : public ScummEngine_v6 { + friend class SmushPlayer; + friend class Insane; +public: + ScummEngine_v7(OSystem *syst, const DetectorResult &dr); + ~ScummEngine_v7(); + + +protected: + int _smushFrameRate; + + /** + * Flag which signals that the SMUSH video playback should end now + * (e.g. because it was aborted by the user or it's simply finished). + */ + bool _smushVideoShouldFinish; + + bool _smushActive; + + Insane *_insane; + +public: + SmushMixer *_smixer; + SmushPlayer *_splayer; + + + struct LangIndexNode { + char tag[12+1]; + int32 offset; + }; + +protected: + int _verbLineSpacing; + bool _existLanguageFile; + char *_languageBuffer; + LangIndexNode *_languageIndex; + int _languageIndexSize; + char _lastStringTag[12+1]; + +#if defined(__SYMBIAN32__) || defined (_WIN32_WCE) // for some reason VC6 cannot find the base class TextObject + struct SubtitleText { + int16 xpos, ypos; + byte color; + byte charset; + byte text[256]; + bool actorSpeechMsg; + }; +#else + struct SubtitleText : TextObject { + bool actorSpeechMsg; + }; +#endif + + int _subtitleQueuePos; + SubtitleText _subtitleQueue[20]; + +public: + void processSubtitleQueue(); + void addSubtitleToQueue(const byte *text, const Common::Point &pos, byte color, byte charset); + void clearSubtitleQueue(); + virtual void CHARSET_1(); + +protected: + virtual int runDialog(Dialog &dialog); + + virtual void scummLoop_handleSound(); + virtual void scummLoop_handleDrawing(); + virtual void processKeyboard(Common::KeyState lastKeyHit); + + virtual void setupScumm(); + + virtual void setupScummVars(); + virtual void resetScummVars(); + + virtual void akos_processQueue(); + + virtual void saveOrLoad(Serializer *s); + + virtual void readMAXS(int blockSize); + virtual void readGlobalObjects(); + virtual void readIndexBlock(uint32 blocktype, uint32 itemsize); + + virtual void setCameraAt(int pos_x, int pos_y); + virtual void setCameraFollows(Actor *a, bool setCamera = false); + virtual void moveCamera(); + virtual void panCameraTo(int x, int y); + + virtual int getObjectIdFromOBIM(const byte *obim); + + virtual void actorTalk(const byte *msg); + virtual void translateText(const byte *text, byte *trans_buff); + virtual void loadLanguageBundle(); + void playSpeech(const byte *ptr); + + virtual void drawVerb(int verb, int mode); + + + virtual void o6_kernelSetFunctions(); +}; + + +} // End of namespace Scumm + +#endif // ENABLE_SCUMM_7_8 + +#endif |