ScummVM API documentation
kyra_lok.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_LOK_H
23#define KYRA_KYRA_LOK_H
24
25#include "kyra/kyra_v1.h"
26#include "kyra/script/script.h"
27#include "kyra/graphics/screen_lok.h"
28#include "kyra/gui/gui_lok.h"
29#include "kyra/engine/item.h"
30
31namespace Kyra {
32
33class Movie;
34class SoundDigital_MR;
35class SeqPlayer;
36class Sprites;
37class Animator_LoK;
38class TextDisplayer;
39class KyraEngine_LoK;
40
41struct Character {
42 uint16 sceneId;
43 uint8 height;
44 uint8 facing;
45 uint16 currentAnimFrame;
46 int8 inventoryItems[10];
47 int16 x1, y1, x2, y2;
48};
49
50struct Shape {
51 uint8 imageIndex;
52 int8 xOffset, yOffset;
53 uint8 x, y, w, h;
54};
55
56struct Room {
57 uint8 nameIndex;
58 uint16 northExit;
59 uint16 eastExit;
60 uint16 southExit;
61 uint16 westExit;
62 int8 itemsTable[12];
63 uint16 itemsXPos[12];
64 uint8 itemsYPos[12];
65 uint8 needInit[12];
66};
67
68struct SeqLoop {
69 const uint8 *ptr = nullptr;
70 uint16 count = 0;
71};
72
73struct SceneExits {
74 uint16 northXPos;
75 uint8 northYPos;
76 uint16 eastXPos;
77 uint8 eastYPos;
78 uint16 southXPos;
79 uint8 southYPos;
80 uint16 westXPos;
81 uint8 westYPos;
82};
83
84struct BeadState {
85 int16 x;
86 int16 y;
87 int16 width;
88 int16 height;
89 int16 dstX;
90 int16 dstY;
91 int16 width2;
92 int16 unk8;
93 int16 unk9;
94 int16 tableIndex;
95};
96
98 friend class MusicPlayer;
99 friend class Debugger_LoK;
100 friend class Animator_LoK;
101 friend class GUI_LoK;
102public:
103 KyraEngine_LoK(OSystem *system, const GameFlags &flags);
104 ~KyraEngine_LoK() override;
105
106 // _sprites and _seqplayer should be paused here too, to avoid some animation glitches,
107 // also parts of the hardcoded Malcolm fight might need some special handling.
108
109 Screen *screen() override { return _screen; }
110 Animator_LoK *animator() { return _animator; }
111 GUI *gui() const override { return _gui; }
112 virtual Movie *createWSAMovie();
113
114 uint8 **shapes() { return _shapes; }
115 Character *currentCharacter() { return _currentCharacter; }
116 Character *characterList() { return _characterList; }
117 uint16 brandonStatus() { return _brandonStatusBit; }
118
119 // TODO: remove me with workaround in animator.cpp l209
120 uint16 getScene() { return _currentRoom; }
121
122 int _paletteChanged;
123 int16 _northExitHeight;
124
125 typedef bool (KyraEngine_LoK::*IntroProc)();
126
127 // static data access
128 const char *const *seqWSATable() { return _seq_WSATable; }
129 const char *const *seqCPSTable() { return _seq_CPSTable; }
130 const char *const *seqCOLTable() { return _seq_COLTable; }
131 const char *const *seqTextsTable() { return _seq_textsTable; }
132
133 const uint8 *const *palTable1() { return &_specialPalettes[0]; }
134 const uint8 *const *palTable2() { return &_specialPalettes[29]; }
135
136protected:
137 Common::Error go() override;
138 Common::Error init() override;
139
140public:
141 // sequences
142 // -> misc
143 bool seq_skipSequence() const;
144protected:
145 // -> demo
146 void seq_demo();
147
148 // -> intro
149 void seq_intro();
150 bool seq_introPublisherLogos();
151 bool seq_introLogos();
152 bool seq_introStory();
153 bool seq_introMalcolmTree();
154 bool seq_introKallakWriting();
155 bool seq_introKallakMalcolm();
156
157 // -> ingame animations
158 void seq_createAmuletJewel(int jewel, int page, int noSound, int drawOnly);
159 void seq_brandonHealing();
160 void seq_brandonHealing2();
161 void seq_poisonDeathNow(int now);
162 void seq_poisonDeathNowAnim();
163 void seq_playFluteAnimation();
164 void seq_winterScroll1();
165 void seq_winterScroll2();
166 void seq_makeBrandonInv();
167 void seq_makeBrandonNormal();
168 void seq_makeBrandonNormal2();
169 void seq_makeBrandonWisp();
170 void seq_dispelMagicAnimation();
171 void seq_fillFlaskWithWater(int item, int type);
172 void seq_playDrinkPotionAnim(int item, int makeFlaskEmpty, int flags);
173 void seq_brandonToStone();
174
175 // -> end fight
176 int seq_playEnd();
177 void seq_playEnding();
178
179 int handleMalcolmFlag();
180 int handleBeadState();
181 void initBeadState(int x, int y, int x2, int y2, int unk1, BeadState *ptr);
182 int processBead(int x, int y, int &x2, int &y2, BeadState *ptr);
183
184 // -> credits
185 void seq_playCredits();
186 void seq_playCreditsAmiga();
187
188public:
189 // delay
190 void delayUntil(uint32 timestamp, bool updateGameTimers = false, bool update = false, bool isMainLoop = false) override;
191 void delay(uint32 millis, bool update = false, bool isMainLoop = false) override;
192 void delayWithTicks(int ticks) override;
193
194 bool skipFlag() const override;
195 void resetSkipFlag(bool removeEvent = true) override;
196
197 // TODO
198 void registerDefaultSettings() override;
199 void readSettings() override;
200 void writeSettings() override;
201
202 void snd_playSoundEffect(int track, int volume=0xFF) override;
203 void snd_playWanderScoreViaMap(int command, int restart) override;
204 void snd_playVoiceFile(int id) override;
205 void snd_voiceWaitForFinish(bool ingame = true);
206 uint32 snd_getVoicePlayTime();
207
208protected:
209 int32 _speechPlayTime;
210
211 Common::Error saveGameStateIntern(int slot, const char *saveName, const Graphics::Surface *thumbnail) override;
212 Common::Error loadGameState(int slot) override;
213protected:
214 // input
215 void processInput(int xpos, int ypos);
216 int processInputHelper(int xpos, int ypos);
217 int clickEventHandler(int xpos, int ypos);
218 void clickEventHandler2();
219 void updateMousePointer(bool forceUpdate = false);
220 bool hasClickedOnExit(int xpos, int ypos);
221
222 // scene
223 // -> init
224 void loadSceneMsc();
225 void startSceneScript(int brandonAlive);
226 void setupSceneItems();
227 void initSceneData(int facing, int unk1, int brandonAlive);
228 void initSceneObjectList(int brandonAlive);
229 void initSceneScreen(int brandonAlive);
230 void setupSceneResource(int sceneId);
231
232 // -> process
233 void enterNewScene(int sceneId, int facing, int unk1, int unk2, int brandonAlive);
234 int handleSceneChange(int xpos, int ypos, int unk1, int frameReset);
235 int processSceneChange(int *table, int unk1, int frameReset);
236 int changeScene(int facing);
237
238 // -> modification
239 void transcendScenes(int roomIndex, int roomName);
240 void setSceneFile(int roomIndex, int roomName);
241
242 // -> pathfinder
243 int findWay(int x, int y, int toX, int toY, int *moveTable, int moveTableSize) override;
244 bool lineIsPassable(int x, int y) override;
245
246 // -> item handling
247 // --> misc
248 void addItemToRoom(uint16 sceneId, uint8 item, int itemIndex, int x, int y);
249
250 // --> drop handling
251 void itemDropDown(int x, int y, int destX, int destY, byte freeItem, int item);
252 int processItemDrop(uint16 sceneId, uint8 item, int x, int y, int unk1, int unk2);
253 void dropItem(int unk1, int item, int x, int y, int unk2);
254
255 // --> dropped item handling
256 int countItemsInScene(uint16 sceneId);
257 void exchangeItemWithMouseItem(uint16 sceneId, int itemIndex);
258 byte findFreeItemInScene(int scene);
259 byte findItemAtPos(int x, int y);
260
261 // --> drop area handling
262 void addToNoDropRects(int x, int y, int w, int h);
263 void clearNoDropRects();
264 int isDropable(int x, int y);
265 int checkNoDropRects(int x, int y);
266
267 // --> player items handling
268 void updatePlayerItemsForScene();
269
270 // --> item GFX handling
271 void backUpItemRect0(int xpos, int ypos);
272 void restoreItemRect0(int xpos, int ypos);
273 void backUpItemRect1(int xpos, int ypos);
274 void restoreItemRect1(int xpos, int ypos);
275
276 // items
277 // -> misc
278 void placeItemInGenericMapScene(int item, int index);
279
280 // -> mouse item
281 void setHandItem(Item item) override;
282 void removeHandItem() override;
283 void setMouseItem(Item item);
284
285 int getItemListIndex(Item item);
286
287 // -> graphics effects
288 void wipeDownMouseItem(int xpos, int ypos);
289 void itemSpecialFX(int x, int y, int item);
290 void itemSpecialFX1(int x, int y, int item);
291 void itemSpecialFX2(int x, int y, int item);
292 void magicOutMouseItem(int animIndex, int itemPos);
293 void magicInMouseItem(int animIndex, int item, int itemPos);
294 void specialMouseItemFX(int shape, int x, int y, int animIndex, int tableIndex, int loopStart, int maxLoops);
295 void processSpecialMouseItemFX(int shape, int x, int y, int tableValue, int loopStart, int maxLoops);
296
297 // character
298 // -> movement
299 void moveCharacterToPos(int character, int facing, int xpos, int ypos);
300 void setCharacterPositionWithUpdate(int character);
301 int setCharacterPosition(int character, int *facingTable);
302 void setCharacterPositionHelper(int character, int *facingTable);
303 void setCharactersPositions(int character);
304
305 // -> brandon
306 void setBrandonPoisonFlags(int reset);
307 void resetBrandonPoisonFlags();
308
309 // chat
310 // -> process
311 void characterSays(int vocFile, const char *chatStr, int16 charNum, int16 chatDuration);
312 void waitForChatToFinish(int vocFile, int chatDuration, const char *str, uint8 charNum, const bool printText);
313
314 // -> initialization
315 int initCharacterChat(int8 charNum);
316 void backupChatPartnerAnimFrame(int8 charNum);
317 void restoreChatPartnerAnimFrame(int8 charNum);
318 int8 getChatPartnerNum();
319
320 // -> deinitialization
321 void endCharacterChat(int8 charNum, int16 arg_4);
322
323 // graphics
324 // -> misc
325 int findDuplicateItemShape(int shape);
326 void updateKyragemFading();
327
328 // -> interface
329 void loadMainScreen(int page = 3);
330 void redrawInventory(int page);
331public:
332 void drawSentenceCommand(const char *sentence, int unk1);
333 void updateSentenceCommand(const char *str1, const char *str2, int unk1);
334 void updateTextFade();
335
336protected:
337 // -> amulet
338 void drawJewelPress(int jewel, int drawSpecial);
339 void drawJewelsFadeOutStart();
340 void drawJewelsFadeOutEnd(int jewel);
341
342 // -> shape handling
343 void setupShapes123(const Shape *shapeTable, int endShape, int flags);
344 void freeShapes123();
345
346 // misc (TODO)
347 void startup();
348 void mainLoop();
349
350 int checkForNPCScriptRun(int xpos, int ypos);
351 void runNpcScript(int func);
352
353 void loadMouseShapes();
354 void loadCharacterShapes();
355 void loadSpecialEffectShapes();
356 void loadItems();
357 void loadButtonShapes();
358 void initMainButtonList();
359 void setCharactersInDefaultScene();
360 void setupPanPages();
361 void freePanPages();
362 void closeFinalWsa();
363
364 //void setTimer19();
365 void setupTimers() override;
366 void timerUpdateHeadAnims(int timerNum);
367 void timerTulipCreator(int timerNum);
368 void timerRubyCreator(int timerNum);
369 void timerAsInvisibleTimeout(int timerNum);
370 void timerAsWillowispTimeout(int timerNum);
371 void checkAmuletAnimFlags();
372 void timerRedrawAmulet(int timerNum);
373 void timerLavenderRoseCreator(int timerNum);
374 void timerAcornCreator(int timerNum);
375 void timerBlueberryCreator(int timerNum);
376 void timerFadeText(int timerNum);
377 void timerWillowispFrameTimer(int timerNum);
378 void timerInvisibleFrameTimer(int timerNum);
379 void drawAmulet();
380 void setTextFadeTimerCountdown(int16 countdown);
381 void setWalkspeed(uint8 newSpeed) override;
382
383 void setItemCreationFlags(int offset, int count);
384
385 int buttonInventoryCallback(Button *caller);
386 int buttonAmuletCallback(Button *caller);
387
388 bool _seqPlayerFlag;
389 bool _skipIntroFlag;
390 bool _abortIntroFlag;
391
392 bool _menuDirectlyToLoad;
393 uint8 *_itemBkgBackUp[2];
394 uint8 *_shapes[373];
395 Item _itemInHand;
396 bool _changedScene;
397 int _unkScreenVar1, _unkScreenVar2, _unkScreenVar3;
398 int _beadStateVar;
399 int _unkAmuletVar;
400
401 int _malcolmFlag;
402 int _endSequenceSkipFlag;
403 int _endSequenceNeedLoading;
404 int _unkEndSeqVar2;
405 uint8 *_endSequenceBackUpRect;
406 int _unkEndSeqVar4;
407 int _unkEndSeqVar5;
408 int _lastDisplayedPanPage;
409 uint8 *_panPagesTable[20];
410 Movie *_finalA, *_finalB, *_finalC;
411
412 Movie *_movieObjects[10];
413
414 uint16 _entranceMouseCursorTracks[5];
415 uint16 _walkBlockNorth;
416 uint16 _walkBlockEast;
417 uint16 _walkBlockSouth;
418 uint16 _walkBlockWest;
419
420 int32 _scaleMode;
421 int16 _scaleTable[145];
422
423 Common::Rect _noDropRects[11];
424
425 int8 _birthstoneGemTable[4];
426 int8 _idolGemsTable[3];
427
428 int8 _marbleVaseItem;
429 int8 _foyerItemTable[3];
430
431 int8 _cauldronState;
432 int8 _crystalState[2];
433
434 uint16 _brandonStatusBit;
435 uint8 _brandonStatusBit0x02Flag;
436 uint8 _brandonStatusBit0x20Flag;
437 uint8 _brandonPoisonFlagsGFX[256];
438 int16 _brandonInvFlag;
439 uint8 _poisonDeathCounter;
440 int _brandonPosX;
441 int _brandonPosY;
442
443 uint16 _currentChatPartnerBackupFrame;
444 uint16 _currentCharAnimFrame;
445
446 int _characterFacingZeroCount[8];
447 int _characterFacingFourCount[8];
448
449 int8 *_sceneAnimTable[50];
450
451 uint8 _itemHtDat[145];
452 int _lastProcessedItem;
453 int _lastProcessedItemHeight;
454
455 int16 *_exitListPtr;
456 int16 _exitList[11];
457 SceneExits _sceneExits;
458 uint16 _currentRoom;
459 int _scenePhasingFlag;
460
461 int _sceneChangeState;
462 int _loopFlag2;
463
464 int _pathfinderFlag;
465 int _pathfinderFlag2;
466 int _lastFindWayRet;
467 int *_movFacingTable;
468
469 int8 _talkingCharNum;
470 int8 _charSayUnk2;
471 int8 _talkHeadAnimCharNum;
472 int8 _currHeadShape;
473 int _currentHeadFrameTableIndex;
474 int8 _disabledTalkAnimObject;
475 int8 _enabledTalkAnimObject;
476 uint8 _currSentenceColor[3];
477 int8 _startSentencePalIndex;
478 bool _fadeText;
479
480 uint8 _configTextspeed;
481
482 Screen::FontId _defaultFont;
483 Screen::FontId _noteFont;
484 int _defaultLineSpacing;
485
486 Animator_LoK *_animator;
487 SeqPlayer *_seq;
488 Sprites *_sprites;
489 Screen_LoK *_screen;
490
491 EMCState _scriptMain;
492
493 EMCState _npcScript;
494 EMCData _npcScriptData;
495
496 EMCState _scriptClick;
497 EMCData _scriptClickData;
498
499 Character *_characterList;
500 Character *_currentCharacter;
501
502 Button *_buttonList;
503 GUI_LoK *_gui;
504
505 uint16 _malcolmFrame;
506 uint32 _malcolmTimer1;
507 uint32 _malcolmTimer2;
508
509 uint32 _beadStateTimer1;
510 uint32 _beadStateTimer2;
511 BeadState _beadState1;
512 BeadState _beadState2;
513
515 uint16 nextOperation;
516 uint16 rOffset;
517 uint16 gOffset;
518 uint16 bOffset;
519 uint32 timerCount;
520 } _kyragemFadingState;
521
522 static const int8 _dosTrackMap[];
523 static const int _dosTrackMapSize;
524 static const int8 _amigaTrackMap[];
525 static const int _amigaTrackMapSize;
526 static const int8 _macHQTrackMap[];
527 static const int _macHQTrackMapSize;
528 static const int8 _macLQTrackMap[];
529 static const int _macLQTrackMapSize;
530
531 // TODO: get rid of all variables having pointers to the static resources if possible
532 // i.e. let them directly use the _staticres functions
533 void initStaticResource();
534
535 const uint8 *_seq_Forest;
536 const uint8 *_seq_KallakWriting;
537 const uint8 *_seq_KyrandiaLogo;
538 const uint8 *_seq_KallakMalcolm;
539 const uint8 *_seq_MalcolmTree;
540 const uint8 *_seq_WestwoodLogo;
541 const uint8 *_seq_Demo1;
542 const uint8 *_seq_Demo2;
543 const uint8 *_seq_Demo3;
544 const uint8 *_seq_Demo4;
545 const uint8 *_seq_Reunion;
546
547 const char *const *_seq_WSATable;
548 const char *const *_seq_CPSTable;
549 const char *const *_seq_COLTable;
550 const char *const *_seq_textsTable;
551
552 const char *const *_storyStrings;
553
554 int _seq_WSATable_Size;
555 int _seq_CPSTable_Size;
556 int _seq_COLTable_Size;
557 int _seq_textsTable_Size;
558
559 int _storyStringsSize;
560
561 const char *const *_itemList;
562 const char *const *_takenList;
563 const char *const *_placedList;
564 const char *const *_droppedList;
565 const char *const *_noDropList;
566 const char *const *_putDownFirst;
567 const char *const *_waitForAmulet;
568 const char *const *_blackJewel;
569 const char *const *_poisonGone;
570 const char *const *_healingTip;
571 const char *const *_thePoison;
572 const char *const *_fluteString;
573 const char *const *_wispJewelStrings;
574 const char *const *_magicJewelString;
575 const char *const *_flaskFull;
576 const char *const *_fullFlask;
577 const char *const *_veryClever;
578 const char *const *_homeString;
579 const char *const *_newGameString;
580
581 int _itemList_Size;
582 int _takenList_Size;
583 int _placedList_Size;
584 int _droppedList_Size;
585 int _noDropList_Size;
586 int _putDownFirst_Size;
587 int _waitForAmulet_Size;
588 int _blackJewel_Size;
589 int _poisonGone_Size;
590 int _healingTip_Size;
591 int _thePoison_Size;
592 int _fluteString_Size;
593 int _wispJewelStrings_Size;
594 int _magicJewelString_Size;
595 int _flaskFull_Size;
596 int _fullFlask_Size;
597 int _veryClever_Size;
598 int _homeString_Size;
599 int _newGameString_Size;
600
601 const char *const *_characterImageTable;
602 int _characterImageTableSize;
603
604 const char *const *_guiStrings;
605 int _guiStringsSize;
606
607 const char *const *_configStrings;
608 int _configStringsSize;
609
610 Shape *_defaultShapeTable;
611 int _defaultShapeTableSize;
612
613 const Shape *_healingShapeTable;
614 int _healingShapeTableSize;
615 const Shape *_healingShape2Table;
616 int _healingShape2TableSize;
617
618 const Shape *_posionDeathShapeTable;
619 int _posionDeathShapeTableSize;
620
621 const Shape *_fluteAnimShapeTable;
622 int _fluteAnimShapeTableSize;
623
624 const Shape *_winterScrollTable;
625 int _winterScrollTableSize;
626 const Shape *_winterScroll1Table;
627 int _winterScroll1TableSize;
628 const Shape *_winterScroll2Table;
629 int _winterScroll2TableSize;
630
631 const Shape *_drinkAnimationTable;
632 int _drinkAnimationTableSize;
633
634 const Shape *_brandonToWispTable;
635 int _brandonToWispTableSize;
636
637 const Shape *_magicAnimationTable;
638 int _magicAnimationTableSize;
639
640 const Shape *_brandonStoneTable;
641 int _brandonStoneTableSize;
642
643 Room *_roomTable;
644 int _roomTableSize;
645 const char *const *_roomFilenameTable;
646 int _roomFilenameTableSize;
647
648 const uint8 *_amuleteAnim;
649
650 const uint8 *const *_specialPalettes;
651
652 // positions of the inventory
653 static const uint16 _itemPosX[];
654 static const uint8 _itemPosY[];
655
656 void setupButtonData();
657 Button *_buttonData;
658 Button **_buttonDataListPtr;
659
660 static const uint8 _magicMouseItemStartFrame[];
661 static const uint8 _magicMouseItemEndFrame[];
662 static const uint8 _magicMouseItemStartFrame2[];
663 static const uint8 _magicMouseItemEndFrame2[];
664
665 static const uint16 _amuletX[];
666 static const uint16 _amuletY[];
667 static const uint16 _amuletX2[];
668 static const uint16 _amuletY2[];
669
670 // special palette handling for AMIGA
671 void setupZanthiaPalette(int pal);
672protected:
673 void setupOpcodeTable() override;
674
675 // Opcodes
676 int o1_magicInMouseItem(EMCState *script);
677 int o1_characterSays(EMCState *script);
678 int o1_delay(EMCState *script);
679 int o1_drawSceneAnimShape(EMCState *script);
680 int o1_runNPCScript(EMCState *script);
681 int o1_setSpecialExitList(EMCState *script);
682 int o1_walkPlayerToPoint(EMCState *script);
683 int o1_dropItemInScene(EMCState *script);
684 int o1_drawAnimShapeIntoScene(EMCState *script);
685 int o1_savePageToDisk(EMCState *script);
686 int o1_sceneAnimOn(EMCState *script);
687 int o1_sceneAnimOff(EMCState *script);
688 int o1_getElapsedSeconds(EMCState *script);
689 int o1_mouseIsPointer(EMCState *script);
690 int o1_runSceneAnimUntilDone(EMCState *script);
691 int o1_fadeSpecialPalette(EMCState *script);
692 int o1_phaseInSameScene(EMCState *script);
693 int o1_setScenePhasingFlag(EMCState *script);
694 int o1_resetScenePhasingFlag(EMCState *script);
695 int o1_queryScenePhasingFlag(EMCState *script);
696 int o1_sceneToDirection(EMCState *script);
697 int o1_setBirthstoneGem(EMCState *script);
698 int o1_placeItemInGenericMapScene(EMCState *script);
699 int o1_setBrandonStatusBit(EMCState *script);
700 int o1_delaySecs(EMCState *script);
701 int o1_getCharacterScene(EMCState *script);
702 int o1_runNPCSubscript(EMCState *script);
703 int o1_magicOutMouseItem(EMCState *script);
704 int o1_internalAnimOn(EMCState *script);
705 int o1_forceBrandonToNormal(EMCState *script);
706 int o1_poisonDeathNow(EMCState *script);
707 int o1_setScaleMode(EMCState *script);
708 int o1_openWSAFile(EMCState *script);
709 int o1_closeWSAFile(EMCState *script);
710 int o1_runWSAFromBeginningToEnd(EMCState *script);
711 int o1_displayWSAFrame(EMCState *script);
712 int o1_enterNewScene(EMCState *script);
713 int o1_setSpecialEnterXAndY(EMCState *script);
714 int o1_runWSAFrames(EMCState *script);
715 int o1_popBrandonIntoScene(EMCState *script);
716 int o1_restoreAllObjectBackgrounds(EMCState *script);
717 int o1_setCustomPaletteRange(EMCState *script);
718 int o1_loadPageFromDisk(EMCState *script);
719 int o1_customPrintTalkString(EMCState *script);
720 int o1_restoreCustomPrintBackground(EMCState *script);
721 int o1_getCharacterX(EMCState *script);
722 int o1_getCharacterY(EMCState *script);
723 int o1_setCharacterFacing(EMCState *script);
724 int o1_copyWSARegion(EMCState *script);
725 int o1_printText(EMCState *script);
726 int o1_loadSoundFile(EMCState *script);
727 int o1_displayWSAFrameOnHidPage(EMCState *script);
728 int o1_displayWSASequentialFrames(EMCState *script);
729 int o1_refreshCharacter(EMCState *script);
730 int o1_internalAnimOff(EMCState *script);
731 int o1_changeCharactersXAndY(EMCState *script);
732 int o1_clearSceneAnimatorBeacon(EMCState *script);
733 int o1_querySceneAnimatorBeacon(EMCState *script);
734 int o1_refreshSceneAnimator(EMCState *script);
735 int o1_placeItemInOffScene(EMCState *script);
736 int o1_wipeDownMouseItem(EMCState *script);
737 int o1_placeCharacterInOtherScene(EMCState *script);
738 int o1_getKey(EMCState *script);
739 int o1_specificItemInInventory(EMCState *script);
740 int o1_popMobileNPCIntoScene(EMCState *script);
741 int o1_mobileCharacterInScene(EMCState *script);
742 int o1_hideMobileCharacter(EMCState *script);
743 int o1_unhideMobileCharacter(EMCState *script);
744 int o1_setCharacterLocation(EMCState *script);
745 int o1_walkCharacterToPoint(EMCState *script);
746 int o1_specialEventDisplayBrynnsNote(EMCState *script);
747 int o1_specialEventRemoveBrynnsNote(EMCState *script);
748 int o1_setLogicPage(EMCState *script);
749 int o1_fatPrint(EMCState *script);
750 int o1_preserveAllObjectBackgrounds(EMCState *script);
751 int o1_updateSceneAnimations(EMCState *script);
752 int o1_sceneAnimationActive(EMCState *script);
753 int o1_setCharacterMovementDelay(EMCState *script);
754 int o1_getCharacterFacing(EMCState *script);
755 int o1_bkgdScrollSceneAndMasksRight(EMCState *script);
756 int o1_dispelMagicAnimation(EMCState *script);
757 int o1_findBrightestFireberry(EMCState *script);
758 int o1_setFireberryGlowPalette(EMCState *script);
759 int o1_setDeathHandlerFlag(EMCState *script);
760 int o1_drinkPotionAnimation(EMCState *script);
761 int o1_makeAmuletAppear(EMCState *script);
762 int o1_drawItemShapeIntoScene(EMCState *script);
763 int o1_setCharacterCurrentFrame(EMCState *script);
764 int o1_waitForConfirmationMouseClick(EMCState *script);
765 int o1_pageFlip(EMCState *script);
766 int o1_setSceneFile(EMCState *script);
767 int o1_getItemInMarbleVase(EMCState *script);
768 int o1_setItemInMarbleVase(EMCState *script);
769 int o1_addItemToInventory(EMCState *script);
770 int o1_intPrint(EMCState *script);
771 int o1_shakeScreen(EMCState *script);
772 int o1_createAmuletJewel(EMCState *script);
773 int o1_setSceneAnimCurrXY(EMCState *script);
774 int o1_poisonBrandonAndRemaps(EMCState *script);
775 int o1_fillFlaskWithWater(EMCState *script);
776 int o1_getCharacterMovementDelay(EMCState *script);
777 int o1_getBirthstoneGem(EMCState *script);
778 int o1_queryBrandonStatusBit(EMCState *script);
779 int o1_playFluteAnimation(EMCState *script);
780 int o1_playWinterScrollSequence(EMCState *script);
781 int o1_getIdolGem(EMCState *script);
782 int o1_setIdolGem(EMCState *script);
783 int o1_totalItemsInScene(EMCState *script);
784 int o1_restoreBrandonsMovementDelay(EMCState *script);
785 int o1_setEntranceMouseCursorTrack(EMCState *script);
786 int o1_itemAppearsOnGround(EMCState *script);
787 int o1_setNoDrawShapesFlag(EMCState *script);
788 int o1_fadeEntirePalette(EMCState *script);
789 int o1_itemOnGroundHere(EMCState *script);
790 int o1_queryCauldronState(EMCState *script);
791 int o1_setCauldronState(EMCState *script);
792 int o1_queryCrystalState(EMCState *script);
793 int o1_setCrystalState(EMCState *script);
794 int o1_setPaletteRange(EMCState *script);
795 int o1_shrinkBrandonDown(EMCState *script);
796 int o1_growBrandonUp(EMCState *script);
797 int o1_setBrandonScaleXAndY(EMCState *script);
798 int o1_resetScaleMode(EMCState *script);
799 int o1_getScaleDepthTableValue(EMCState *script);
800 int o1_setScaleDepthTableValue(EMCState *script);
801 int o1_message(EMCState *script);
802 int o1_checkClickOnNPC(EMCState *script);
803 int o1_getFoyerItem(EMCState *script);
804 int o1_setFoyerItem(EMCState *script);
805 int o1_setNoItemDropRegion(EMCState *script);
806 int o1_walkMalcolmOn(EMCState *script);
807 int o1_passiveProtection(EMCState *script);
808 int o1_setPlayingLoop(EMCState *script);
809 int o1_brandonToStoneSequence(EMCState *script);
810 int o1_brandonHealingSequence(EMCState *script);
811 int o1_protectCommandLine(EMCState *script);
812 int o1_pauseMusicSeconds(EMCState *script);
813 int o1_resetMaskRegion(EMCState *script);
814 int o1_setPaletteChangeFlag(EMCState *script);
815 int o1_vocUnload(EMCState *script);
816 int o1_vocLoad(EMCState *script);
817 int o1_dummy(EMCState *script);
818};
819
820} // End of namespace Kyra
821
822#endif
Definition: error.h:81
Definition: animator_lok.h:29
Definition: debugger.h:54
Definition: gui_lok.h:94
Definition: gui.h:98
Definition: kyra_lok.h:97
Common::Error loadGameState(int slot) override
Definition: kyra_v1.h:126
Definition: wsamovie.h:31
Definition: screen_lok.h:31
Definition: screen.h:587
Definition: seqplayer_lok.h:29
Definition: sprites.h:65
Definition: system.h:166
Definition: detection.h:27
Definition: rect.h:536
Definition: surface.h:67
Definition: kyra_lok.h:84
Definition: gui.h:38
Definition: kyra_lok.h:41
Definition: script.h:35
Definition: script.h:47
Definition: detection.h:38
Definition: kyra_lok.h:514
Definition: kyra_lok.h:56
Definition: kyra_lok.h:73
Definition: kyra_lok.h:68
Definition: kyra_lok.h:50