ScummVM API documentation
kyra_hof.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef KYRA_KYRA_HOF_H
23 #define KYRA_KYRA_HOF_H
24 
25 #include "kyra/engine/kyra_v2.h"
26 #include "kyra/script/script.h"
27 #include "kyra/script/script_tim.h"
28 #include "kyra/graphics/screen_hof.h"
29 #include "kyra/text/text_hof.h"
30 #include "kyra/gui/gui_hof.h"
31 
32 #include "common/list.h"
33 #include "common/func.h"
34 
35 namespace Kyra {
36 
37 //class WSAMovie_v2;
38 //class KyraEngine_HoF;
39 class TextDisplayer_HoF;
40 class SeqPlayer_HOF;
41 
42 struct TIM;
43 
44 class KyraEngine_HoF : public KyraEngine_v2 {
45 friend class Debugger_HoF;
46 friend class TextDisplayer_HoF;
47 friend class GUI_HoF;
48 public:
49  KyraEngine_HoF(OSystem *system, const GameFlags &flags);
50  ~KyraEngine_HoF() override;
51 
52  void pauseEngineIntern(bool pause) override;
53 
54  Screen *screen() override { return _screen; }
55  Screen_v2 *screen_v2() const override { return _screen; }
56  GUI *gui() const override { return _gui; }
57  TextDisplayer *text() override { return _text; }
58  int language() const { return _lang; }
59 
60 protected:
61  static const EngineDesc _hofEngineDesc;
62 
63  // intro/outro
64  void seq_showStarcraftLogo();
65 
66  int seq_playIntro();
67  int seq_playOutro();
68  int seq_playDemo();
69 
70  void seq_pausePlayer(bool toggle);
71 
72  Common::Error init() override;
73  Common::Error go() override;
74 
75  Screen_HoF *_screen;
76  TextDisplayer_HoF *_text;
77  TIMInterpreter *_tim;
78 
79  static const int8 _dosTrackMap[];
80  static const int _dosTrackMapSize;
81  static const int8 _mt32SfxMap[];
82  static const int _mt32SfxMapSize;
83  static const int8 _gmSfxMap[];
84  static const int _gmSfxMapSize;
85  static const int8 _pcSpkSfxMap[];
86  static const int _pcSpkSfxMapSize;
87 
88 protected:
89  // game initialization
90  void startup();
91  void runLoop();
92  void cleanup();
93 
94  void registerDefaultSettings() override;
95  void writeSettings() override;
96  void readSettings() override;
97  uint8 _configTextspeed;
98 
99  // TODO: get rid of all variables having pointers to the static resources if possible
100  // i.e. let them directly use the _staticres functions
101  void initStaticResource();
102 
103  void setupTimers() override;
104  void setupOpcodeTable() override;
105 
106  void loadMouseShapes();
107  void loadItemShapes();
108 
109  // run
110  void update() override;
111  void updateWithText() override;
112 
114 
115  void updateMouse();
116 
117  void dinoRide();
118 
119  void handleInput(int x, int y);
120  bool handleInputUnkSub(int x, int y);
121 
122  int inputSceneChange(int x, int y, int unk1, int unk2) override;
123 
124  // special case
125  void processKeyboardSfx(int inputFlag);
126 
127  static const int16 _keyboardSounds[190];
128 
129  // gfx/animation specific
130  bool _inventorySaved;
131  void backUpPage0();
132  void restorePage0();
133 
134  uint8 *_gfxBackUpRect;
135 
136  void backUpGfxRect24x24(int x, int y);
137  void restoreGfxRect24x24(int x, int y);
138  void backUpGfxRect32x32(int x, int y);
139  void restoreGfxRect32x32(int x, int y);
140 
141  uint8 *_sceneShapeTable[50];
142 
143  WSAMovie_v2 *_wsaSlots[10];
144 
145  void freeSceneShapePtrs();
146 
147  struct ShapeDesc {
148  uint8 unk0, unk1, unk2, unk3, unk4;
149  uint16 width, height;
150  int16 xAdd, yAdd;
151  };
152 
153  ShapeDesc *_shapeDescTable;
154 
155  void loadCharacterShapes(int shapes) override;
156  void loadInventoryShapes();
157 
158  void resetScaleTable();
159  void setScaleTableItem(int item, int data);
160  int getScale(int x, int y) override;
161  uint16 _scaleTable[15];
162 
163  void setDrawLayerTableEntry(int entry, int data);
164  int getDrawLayer(int x, int y);
165  int _drawLayerTable[15];
166 
167  int _layerFlagTable[16]; // seems to indicate layers where items get destroyed when dropped to (TODO: check this!)
168 
169  int initAnimationShapes(uint8 *filedata) override;
170  void uninitAnimationShapes(int count, uint8 *filedata) override;
171 
172  // animator
173  uint8 *_gamePlayBuffer;
174  void restorePage3() override;
175 
176  void clearAnimObjects() override;
177 
178  void refreshAnimObjects(int force) override;
179 
180  void drawAnimObjects() override;
181  void drawSceneAnimObject(AnimObj *obj, int x, int y, int drawLayer) override;
182  void drawCharacterAnimObject(AnimObj *obj, int x, int y, int drawLayer) override;
183 
184  void updateItemAnimations();
185 
186  void updateCharFacing();
187  void updateCharacterAnim(int) override;
188  void updateSceneAnim(int anim, int newFrame) override;
189 
190  int _animObj0Width, _animObj0Height;
191  void setCharacterAnimDim(int w, int h) override;
192  void resetCharacterAnimDim() override;
193 
194  // scene
195  const char *_sceneCommentString;
196  uint8 _scenePal[688];
197 
198  void enterNewScene(uint16 newScene, int facing, int unk1, int unk2, int unk3) override;
199  void enterNewSceneUnk1(int facing, int unk1, int unk2);
200  void enterNewSceneUnk2(int unk1);
201  void unloadScene();
202 
203  void loadScenePal();
204  void loadSceneMsc();
205 
206  void fadeScenePal(int srcIndex, int delay);
207 
208  void startSceneScript(int unk1);
209  void runSceneScript2();
210  void runSceneScript4(int unk1);
211  void runSceneScript7();
212 
213  void initSceneAnims(int unk1);
214  void initSceneScreen(int unk1);
215 
216  int trySceneChange(int *moveTable, int unk1, int updateChar) override;
217  int checkSceneChange();
218 
219  // pathfinder
220  bool lineIsPassable(int x, int y) override;
221 
222  // item
223  void setMouseCursor(Item item) override;
224 
225  uint8 _itemHtDat[176];
226 
227  int checkItemCollision(int x, int y);
228  void updateWaterFlasks();
229 
230  bool dropItem(int unk1, Item item, int x, int y, int unk2);
231  bool processItemDrop(uint16 sceneId, Item item, int x, int y, int unk1, int unk2);
232  void itemDropDown(int startX, int startY, int dstX, int dstY, int itemSlot, Item item);
233  void exchangeMouseItem(int itemPos);
234  bool pickUpItem(int x, int y);
235 
236  bool isDropable(int x, int y);
237 
238  static const byte _itemStringMap[];
239  static const int _itemStringMapSize;
240 
241  static const Item _flaskTable[];
242  bool itemIsFlask(Item item);
243 
244  // inventory
245  static const int _inventoryX[];
246  static const int _inventoryY[];
247  static const uint16 _itemMagicTable[];
248 
249  int getInventoryItemSlot(Item item);
250  void removeSlotFromInventory(int slot);
251  bool checkInventoryItemExchange(Item item, int slot);
252  void drawInventoryShape(int page, Item item, int slot);
253  void clearInventorySlot(int slot, int page);
254  void redrawInventory(int page);
255  void scrollInventoryWheel();
256  int findFreeVisibleInventorySlot();
257 
258  ActiveItemAnim _activeItemAnim[15];
259  int _nextAnimItem;
260 
261  // gui
262  bool _menuDirectlyToLoad;
263  GUI_HoF *_gui;
264 
265  void loadButtonShapes();
266  void setupLangButtonShapes();
267  uint8 *_buttonShapes[19];
268 
269  void initInventoryButtonList();
270  Button *_inventoryButtons;
271  Button *_buttonList;
272 
273  int scrollInventory(Button *button);
274  int buttonInventory(Button *button);
275  int bookButton(Button *button);
276  int cauldronButton(Button *button);
277  int cauldronClearButton(Button *button);
278 
279  // book
280  static const int _bookPageYOffset[];
281  static const byte _bookTextColorMap[];
282 
283  int _bookMaxPage;
284  int _bookNewPage;
285  int _bookCurPage;
286  int _bookBkgd;
287  bool _bookShown;
288 
289  void loadBookBkgd();
290  void showBookPage();
291  void bookLoop();
292 
293  void bookDecodeText(uint8 *text);
294  void bookPrintText(int dstPage, const uint8 *text, int x, int y, uint8 color);
295 
296  int bookPrevPage(Button *button);
297  int bookNextPage(Button *button);
298  int bookClose(Button *button);
299 
300  // cauldron
301  uint8 _cauldronState;
302  int16 _cauldronUseCount;
303  int16 _cauldronTable[25];
304  int16 _cauldronStateTables[23][7];
305 
306  static const int16 _cauldronProtectedItems[];
307  static const int16 _cauldronBowlTable[];
308  static const int16 _cauldronMagicTable[];
309  static const int16 _cauldronMagicTableScene77[];
310  static const uint8 _cauldronStateTable[];
311 
312  void resetCauldronStateTable(int idx);
313  bool addToCauldronStateTable(int data, int idx);
314 
315  void setCauldronState(uint8 state, bool paletteFade);
316  void clearCauldronTable();
317  void addFrontCauldronTable(int item);
318  void cauldronItemAnim(int item);
319  void cauldronRndPaletteFade();
320  bool updateCauldron();
321  void listItemsInCauldron();
322 
323  // localization
324  void loadCCodeBuffer(const char *file);
325  void loadOptionsBuffer(const char *file);
326  void loadChapterBuffer(int chapter);
327  uint8 *_optionsBuffer;
328  uint8 *_cCodeBuffer;
329 
330  uint8 *_chapterBuffer;
331  int _currentChapter;
332  int _newChapterFile;
333 
334  uint8 *getTableEntry(uint8 *buffer, int id);
335  Common::String getTableString(int id, uint8 *buffer, bool decode);
336  Common::String getChapterString(int id);
337 
338  void changeFileExtension(Common::String &file);
339 
340  // - Just used in French version
341  int getItemCommandStringDrop(Item item);
342  int getItemCommandStringPickUp(Item item);
343  int getItemCommandStringInv(Item item);
344  // -
345 
346  char _internStringBuf[200];
347  static const char *const _languageExtension[];
348  static const char *const _scriptLangExt[];
349 
350  // character
351  bool _useCharPal;
352  bool _setCharPalFinal;
353  int _charPalEntry;
354  uint8 _charPalTable[16];
355  void updateCharPal(int unk1);
356  void setCharPalEntry(int entry, int value);
357 
358  int _characterFacingCountTable[2];
359 
360  int getCharacterWalkspeed() const override;
361  void updateCharAnimFrame(int *table) override;
362 
363  bool checkCharCollision(int x, int y);
364 
365  static const uint8 _characterFrameTable[];
366 
367  // text
368  void showMessageFromCCode(int id, int16 palIndex, int);
369  void showMessage(const Common::String &string, int16 palIndex);
370  void clearMessage();
371  void showChapterMessage(int id, int16 palIndex);
372 
373  void updateCommandLineEx(int str1, int str2, int16 palIndex);
374 
375  Common::String _shownMessage;
376 
377  byte _messagePal[3];
378  bool _fadeMessagePalette;
379  void fadeMessagePalette();
380 
381  Screen::FontId _defaultFont;
382  Screen::FontId _bookFont;
383  int _lineHeight;
384 
385  // chat
386  bool _chatIsNote;
387 
388  int chatGetType(const char *text);
389  int chatCalcDuration(const Common::String &text);
390 
391  void objectChat(const Common::String &text, int object, int vocHigh = -1, int vocLow = -1);
392  void objectChatInit(const Common::String &text, int object, int vocHigh = -1, int vocLow = -1);
393  void objectChatPrintText(const Common::String &text, int object);
394  void objectChatProcess(const char *script);
395  void objectChatWaitToFinish();
396 
397  void startDialogue(int dlgIndex);
398 
399  void zanthSceneStartupChat();
400  void randomSceneChat() override;
401  void updateDlgBuffer();
402  void loadDlgHeader(int &csEntry, int &vocH, int &scIndex1, int &scIndex2);
403  void processDialogue(int dlgOffset, int vocH = 0, int csEntry = 0);
404  void npcChatSequence(const Common::String &str, int objectId, int vocHigh = -1, int vocLow = -1);
405  void setDlgIndex(int dlgIndex) override;
406 
407  int _npcTalkChpIndex;
408  int _npcTalkDlgIndex;
409  uint8 _newSceneDlgState[32];
410  int8 **_conversationState;
411  uint8 *_dlgBuffer;
412 
413  // Talk object handling
414  void initTalkObject(int index);
415  void deinitTalkObject(int index);
416 
417  struct TalkObject {
418  char filename[13];
419  int8 scriptId;
420  int16 x, y;
421  int8 color;
422  };
423  TalkObject *_talkObjectList;
424 
425  struct TalkSections {
426  TIM *STATim;
427  TIM *TLKTim;
428  TIM *ENDTim;
429  };
430  TalkSections _currentTalkSections;
431 
432  Common::String _TLKFilename;
433 
434  // tim
435  void playTim(const char *filename);
436 
437  int t2_initChat(const TIM *tim, const uint16 *param);
438  int t2_updateSceneAnim(const TIM *tim, const uint16 *param);
439  int t2_resetChat(const TIM *tim, const uint16 *param);
440  int t2_playSoundEffect(const TIM *tim, const uint16 *param);
441 
443 
444  // sound
445  int _oldTalkFile;
446  int _currentTalkFile;
447  void openTalkFile(int newFile);
448  int _lastSfxTrack;
449 
450  void snd_playVoiceFile(int id) override;
451  void snd_loadSoundFile(int id);
452 
453  void playVoice(int high, int low);
454  void snd_playSoundEffect(int track, int volume=0xFF) override;
455 
456  // timer
457  void timerFadeOutMessage(int);
458  void timerCauldronAnimation(int);
459  void timerFunc4(int);
460  void timerFunc5(int);
461  void timerBurnZanthia(int);
462 
463  void setTimer1DelaySecs(int secs);
464 
465  uint32 _nextIdleAnim;
466  int _lastIdleScript;
467  bool _useSceneIdleAnim;
468 
469  void setNextIdleAnimTimer();
470  void showIdleAnim();
471  void runIdleScript(int script);
472 
473  void setWalkspeed(uint8 speed) override;
474 
475  // ingame static sequence handling
476  void seq_makeBookOrCauldronAppear(int type);
477  void seq_makeBookAppear();
478 
479  struct InventoryWsa {
480  int x, y, x2, y2, w, h;
481  int page;
482  int curFrame, lastFrame, specialFrame;
483  int sfx;
484  int delay;
485  bool running;
486  uint32 timer;
487  WSAMovie_v2 *wsa;
488  } _invWsa;
489 
490  // TODO: move inside KyraEngine_HoF::InventoryWsa?
491  void loadInvWsa(const char *filename, int run, int delay, int page, int sfx, int sFrame, int flags);
492  void closeInvWsa();
493 
494  void updateInvWsa();
495  void displayInvWsaLastFrame();
496 
497  // opcodes
498  int o2_setCharacterFacingRefresh(EMCState *script);
499  int o2_setCharacterPos(EMCState *script);
500  int o2_defineObject(EMCState *script);
501  int o2_refreshCharacter(EMCState *script);
502  int o2_setSceneComment(EMCState *script);
503  int o2_setCharacterAnimFrame(EMCState *script);
504  int o2_setCharacterFacing(EMCState *script);
505  int o2_customCharacterChat(EMCState *script);
506  int o2_soundFadeOut(EMCState *script);
507  int o2_showChapterMessage(EMCState *script);
508  int o2_restoreTalkTextMessageBkgd(EMCState *script);
509  int o2_wsaClose(EMCState *script);
510  int o2_meanWhileScene(EMCState *script);
511  int o2_backUpScreen(EMCState *script);
512  int o2_restoreScreen(EMCState *script);
513  int o2_displayWsaFrame(EMCState *script);
514  int o2_displayWsaSequentialFramesLooping(EMCState *script);
515  int o2_wsaOpen(EMCState *script);
516  int o2_displayWsaSequentialFrames(EMCState *script);
517  int o2_displayWsaSequence(EMCState *script);
518  int o2_addItemToInventory(EMCState *script);
519  int o2_drawShape(EMCState *script);
520  int o2_addItemToCurScene(EMCState *script);
521  int o2_loadSoundFile(EMCState *script);
522  int o2_removeSlotFromInventory(EMCState *script);
523  int o2_removeItemFromInventory(EMCState *script);
524  int o2_countItemInInventory(EMCState *script);
525  int o2_countItemsInScene(EMCState *script);
526  int o2_wipeDownMouseItem(EMCState *script);
527  int o2_getElapsedSecs(EMCState *script);
528  int o2_getTimerDelay(EMCState *script);
529  int o2_playCompleteSoundEffect(EMCState *script);
530  int o2_delaySecs(EMCState *script);
531  int o2_setTimerDelay(EMCState *script);
532  int o2_setScaleTableItem(EMCState *script);
533  int o2_setDrawLayerTableItem(EMCState *script);
534  int o2_setCharPalEntry(EMCState *script);
535  int o2_loadZShapes(EMCState *script);
536  int o2_drawSceneShape(EMCState *script);
537  int o2_drawSceneShapeOnPage(EMCState *script);
538  int o2_disableAnimObject(EMCState *script);
539  int o2_enableAnimObject(EMCState *script);
540  int o2_loadPalette384(EMCState *script);
541  int o2_setPalette384(EMCState *script);
542  int o2_restoreBackBuffer(EMCState *script);
543  int o2_backUpInventoryGfx(EMCState *script);
544  int o2_disableSceneAnim(EMCState *script);
545  int o2_enableSceneAnim(EMCState *script);
546  int o2_restoreInventoryGfx(EMCState *script);
547  int o2_setSceneAnimPos2(EMCState *script);
548  int o2_fadeScenePal(EMCState *script);
549  int o2_enterNewScene(EMCState *script);
550  int o2_switchScene(EMCState *script);
551  int o2_setPathfinderFlag(EMCState *script);
552  int o2_getSceneExitToFacing(EMCState *script);
553  int o2_setLayerFlag(EMCState *script);
554  int o2_setZanthiaPos(EMCState *script);
555  int o2_loadMusicTrack(EMCState *script);
556  int o2_setSceneAnimPos(EMCState *script);
557  int o2_setCauldronState(EMCState *script);
558  int o2_showItemString(EMCState *script);
559  int o2_isAnySoundPlaying(EMCState *script);
560  int o2_setDrawNoShapeFlag(EMCState *script);
561  int o2_setRunFlag(EMCState *script);
562  int o2_showLetter(EMCState *script);
563  int o2_playFireflyScore(EMCState *script);
564  int o2_encodeShape(EMCState *script);
565  int o2_defineSceneAnim(EMCState *script);
566  int o2_updateSceneAnim(EMCState *script);
567  int o2_addToSceneAnimPosAndUpdate(EMCState *script);
568  int o2_useItemOnMainChar(EMCState *script);
569  int o2_startDialogue(EMCState *script);
570  int o2_addCauldronStateTableEntry(EMCState *script);
571  int o2_setCountDown(EMCState *script);
572  int o2_getCountDown(EMCState *script);
573  int o2_pressColorKey(EMCState *script);
574  int o2_objectChat(EMCState *script);
575  int o2_changeChapter(EMCState *script);
576  int o2_getColorCodeFlag1(EMCState *script);
577  int o2_setColorCodeFlag1(EMCState *script);
578  int o2_getColorCodeFlag2(EMCState *script);
579  int o2_setColorCodeFlag2(EMCState *script);
580  int o2_getColorCodeValue(EMCState *script);
581  int o2_setColorCodeValue(EMCState *script);
582  int o2_countItemInstances(EMCState *script);
583  int o2_removeItemFromScene(EMCState *script);
584  int o2_initObject(EMCState *script);
585  int o2_npcChat(EMCState *script);
586  int o2_deinitObject(EMCState *script);
587  int o2_playTimSequence(EMCState *script);
588  int o2_makeBookOrCauldronAppear(EMCState *script);
589  int o2_resetInputColorCode(EMCState *script);
590  int o2_mushroomEffect(EMCState *script);
591  int o2_customChat(EMCState *script);
592  int o2_customChatFinish(EMCState *script);
593  int o2_setupSceneAnimation(EMCState *script);
594  int o2_stopSceneAnimation(EMCState *script);
595  int o2_processPaletteIndex(EMCState *script);
596  int o2_updateTwoSceneAnims(EMCState *script);
597  int o2_getRainbowRoomData(EMCState *script);
598  int o2_drawSceneShapeEx(EMCState *script);
599  int o2_midiSoundFadeout(EMCState *script);
600  int o2_getSfxDriver(EMCState *script);
601  int o2_getVocSupport(EMCState *script);
602  int o2_getMusicDriver(EMCState *script);
603  int o2_zanthiaChat(EMCState *script);
604  int o2_isVoiceEnabled(EMCState *script);
605  int o2_isVoicePlaying(EMCState *script);
606  int o2_stopVoicePlaying(EMCState *script);
607  int o2_getGameLanguage(EMCState *script);
608  int o2_demoFinale(EMCState *script);
609  int o2_dummy(EMCState *script);
610 
611  // animation opcodes
612  int o2a_setCharacterFrame(EMCState *script);
613 
614  // script
615  void runStartScript(int script, int unk1);
616  void loadNPCScript();
617 
618  bool _noScriptEnter;
619 
620  EMCData _npcScriptData;
621 
622  bool _chatAltFlag;
623 
624  // sequence player
625 /* ActiveWSA *_activeWSA;
626  ActiveText *_activeText;
627  */
628  /*const char *const *_sequencePakList;
629  int _sequencePakListSize;*/
630  const char *const *_ingamePakList;
631  int _ingamePakListSize;
632 
633  const char *const *_musicFileListIntro;
634  int _musicFileListIntroSize;
635  const char *const *_musicFileListFinale;
636  int _musicFileListFinaleSize;
637  const char *const *_musicFileListIngame;
638  int _musicFileListIngameSize;
639  const uint8 *_cdaTrackTableIntro;
640  int _cdaTrackTableIntroSize;
641  const uint8 *_cdaTrackTableIngame;
642  int _cdaTrackTableIngameSize;
643  const uint8 *_cdaTrackTableFinale;
644  int _cdaTrackTableFinaleSize;
645  const char *const *_ingameSoundList;
646  int _ingameSoundListSize;
647  const int16 *_ingameSoundIndex;
648  int _ingameSoundIndexSize;
649  const uint16 *_ingameTalkObjIndex;
650  int _ingameTalkObjIndexSize;
651  const char *const *_ingameTimJpStr;
652  int _ingameTimJpStrSize;
653 
654  const ItemAnimDefinition *_itemAnimDefinition;
655  int _itemAnimDefinitionSize;
656 
657  /*const HofSeqData *_sequences;
658 
659  const ItemAnimData_v1 *_demoAnimData;
660  int _demoAnimSize;
661 
662  int _sequenceStringsDuration[33];*/
663 
664 /* static const uint8 _seqTextColorPresets[];
665  char *_seqProcessedString;
666  WSAMovie_v2 *_seqWsa;
667 
668  bool _abortIntroFlag;
669  int _menuChoice;*/
670 
671  /*uint32 _seqFrameDelay;
672  uint32 _seqStartTime;
673  uint32 _seqSubFrameStartTime;
674  uint32 _seqEndTime;
675  uint32 _seqSubFrameEndTimeInternal;
676  uint32 _seqWsaChatTimeout;
677  uint32 _seqWsaChatFrameTimeout;
678 
679  int _seqFrameCounter;
680  int _seqScrollTextCounter;
681  int _seqWsaCurrentFrame;
682  bool _seqSpecialFlag;
683  bool _seqSubframePlaying;
684  uint8 _seqTextColor[2];
685  uint8 _seqTextColorMap[16];*/
686 
687  static const uint8 _rainbowRoomData[];
688 
689  // color code related vars
690  int _colorCodeFlag1;
691  int _colorCodeFlag2;
692  uint8 _presetColorCode[7];
693  uint8 _inputColorCode[7];
694  uint32 _scriptCountDown;
695  int _dbgPass;
696 
697  // save/load specific
698  Common::Error saveGameStateIntern(int slot, const char *saveName, const Graphics::Surface *thumbnail) override;
699  Common::Error loadGameState(int slot) override;
700 };
701 
702 } // End of namespace Kyra
703 
704 #endif
Definition: kyra_hof.h:425
Definition: str.h:59
Definition: surface.h:66
Definition: kyra_v2.h:57
Definition: error.h:84
Definition: text.h:32
Definition: gui_hof.h:32
Definition: array.h:52
Definition: kyra_hof.h:147
Definition: screen.h:565
Definition: system.h:45
Definition: func.h:389
Definition: script.h:47
Definition: kyra_v2.h:53
Definition: screen_hof.h:31
Definition: kyra_hof.h:479
Definition: kyra_hof.h:44
Definition: script_tim.h:156
Definition: kyra_v2.h:46
Common::Error run() override
Definition: kyra_v1.h:199
Definition: detection.h:38
Definition: kyra_v2.h:102
Definition: detection.h:27
Definition: gui.h:38
Common::Error loadGameState(int slot) override
Definition: script_tim.h:108
Definition: kyra_hof.h:417
Definition: system.h:167
Definition: screen_v2.h:30
Definition: script.h:35
Definition: wsamovie.h:112
Definition: text_hof.h:32
Definition: debugger.h:85
void pauseEngineIntern(bool pause) override
Definition: kyra_v2.h:40