ScummVM API documentation
prince.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 PRINCE_PRINCE_H
23 #define PRINCE_PRINCE_H
24 
25 #include "common/random.h"
26 #include "common/system.h"
27 #include "common/debug.h"
28 #include "common/debug-channels.h"
29 #include "common/textconsole.h"
30 #include "common/text-to-speech.h"
31 #include "common/rect.h"
32 #include "common/events.h"
33 #include "common/endian.h"
34 #include "common/savefile.h"
35 #include "common/serializer.h"
36 
37 #include "image/bmp.h"
38 
39 #include "gui/debugger.h"
40 
41 #include "engines/engine.h"
42 #include "engines/util.h"
43 
44 #include "audio/mixer.h"
45 
46 #include "video/flic_decoder.h"
47 
48 #include "prince/mob.h"
49 #include "prince/object.h"
50 #include "prince/pscr.h"
51 #include "prince/detection.h"
52 
53 namespace Prince {
54 
55 enum PRINCEActions {
56  kActionNone,
57  kActionSave,
58  kActionLoad,
59  kActionZ,
60  kActionX,
61  kActionSkip,
62 };
63 
64 struct SavegameHeader;
65 
66 class PrinceEngine;
67 class GraphicsMan;
68 class Script;
69 class Interpreter;
70 class InterpreterFlags;
71 class Debugger;
72 class MusicPlayer;
73 class VariaTxt;
74 class Cursor;
75 class MhwanhDecoder;
76 class Font;
77 class Hero;
78 class Animation;
79 class Room;
80 class Pscr;
81 
83  uint8 version;
84  Common::String saveName;
85  Graphics::Surface *thumbnail;
86  int16 saveYear, saveMonth, saveDay;
87  int16 saveHour, saveMinutes;
88  uint32 playTime;
89 };
90 
91 #define kSavegameStrSize 14
92 #define kSavegameStr "SCUMMVM_PRINCE"
93 
94 struct Text {
95  const char *_str;
96  uint16 _x, _y;
97  uint16 _time;
98  uint32 _color;
99 
100  Text() {
101  clear();
102  }
103 
104  void clear() {
105  _str = nullptr;
106  _x = 0;
107  _y = 0;
108  _time = 0;
109  _color = 255;
110  }
111 };
112 
113 struct AnimListItem {
114  uint16 _type; // type of animation - for background anims RND of frame
115  uint16 _fileNumber;
116  uint16 _startPhase; // first phase number
117  uint16 _endPhase;
118  uint16 _loopPhase;
119  int16 _x;
120  int16 _y;
121  uint16 _loopType;
122  uint16 _nextAnim; // number of animation to do for loop = 3
123  uint16 _flags; // byte 0 - draw masks, byte 1 - draw in front of mask, byte 2 - load but turn off drawing
124  bool loadFromStream(Common::SeekableReadStream &stream);
125 };
126 
127 struct BAS {
128  int32 _type; // type of sequence
129  int32 _data; // additional data
130  int32 _anims; // number of animations
131  int32 _current; // actual number of animation
132  int32 _counter; // time counter for animation
133  int32 _currRelative; //actual relative number for animation
134  int32 _data2; // additional data for measurements
135 };
136 
137 const int kStructSizeBAS = 28;
138 
139 struct BASA {
140  int16 _num; // animation number
141  int16 _start; // initial frame
142  int16 _end; // final frame
143  //int16 _pad; // fulfilment to 8 bytes
144 };
145 
146 const int kStructSizeBASA = 8;
147 
148 // background and normal animation
149 struct Anim {
150  BASA _basaData;
151  int32 _addr; // animation address
152  int16 _usage;
153  int16 _state; // state of animation: 0 - turning on, 1 - turning off
154  int16 _flags;
155  int16 _frame; // number of phase to show
156  int16 _lastFrame; // last phase
157  int16 _loopFrame; // first frame of loop
158  int16 _showFrame; // actual visible frame of animation
159  int16 _loopType; // type of loop (0 - last frame; 1 - normal loop (begin from _loopFrame); 2 - no loop; 3 - load new animation)
160  int16 _nextAnim; // number of next animation to load after actual
161  int16 _x;
162  int16 _y;
163  int32 _currFrame;
164  int16 _currX;
165  int16 _currY;
166  int16 _currW;
167  int16 _currH;
168  int16 _packFlag;
169  int32 _currShadowFrame;
170  int16 _packShadowFlag;
171  int32 _shadowBack;
172  int16 _relX;
173  int16 _relY;
174  Animation *_animData;
175  Animation *_shadowData;
176 
177  enum AnimOffsets {
178  kAnimState = 10,
179  kAnimFrame = 14,
180  kAnimLastFrame = 16,
181  kAnimX = 26
182  };
183 
184  int16 getAnimData(Anim::AnimOffsets offset) {
185  switch (offset) {
186  case kAnimState:
187  return _state;
188  case kAnimFrame:
189  return _frame + 1; // fix for location 30 - man with a dog animation
190  case kAnimX:
191  return _x;
192  default:
193  error("getAnimData() - Wrong offset type: %d", (int)offset);
194  }
195  }
196 
197  void setAnimData(Anim::AnimOffsets offset, int16 value) {
198  if (offset == kAnimX) {
199  _x = value;
200  } else {
201  error("setAnimData() - Wrong offset: %d, value: %d", (int)offset, value);
202  }
203  }
204 };
205 
207  BAS _seq;
208  Common::Array<Anim> backAnims;
209 };
210 
211 enum AnimType {
212  kBackgroundAnimation,
213  kNormalAnimation
214 };
215 
216 // Nak (PL - Nakladka)
217 struct Mask {
218  uint16 _state; // visible / invisible
219  int16 _flags; // turning on / turning off of a mask
220  int16 _x1;
221  int16 _y1;
222  int16 _x2;
223  int16 _y2;
224  int16 _z;
225  int16 _number; // number of mask for background recreating
226  int16 _width;
227  int16 _height;
228  byte *_data;
229 
230  int16 getX() const {
231  return READ_LE_UINT16(_data);
232  }
233 
234  int16 getY() const {
235  return READ_LE_UINT16(_data + 2);
236  }
237 
238  int16 getWidth() const {
239  return READ_LE_UINT16(_data + 4);
240  }
241 
242  int16 getHeight() const {
243  return READ_LE_UINT16(_data + 6);
244  }
245 
246  byte *getMask() const {
247  return (byte *)(_data + 8);
248  }
249 };
250 
251 struct InvItem {
252  int _x;
253  int _y;
254  Graphics::Surface *_surface;
255  Graphics::Surface *getSurface() const { return _surface; }
256 };
257 
258 struct DrawNode {
259  int posX;
260  int posY;
261  int posZ;
262  int32 width;
263  int32 height;
264  int32 scaleValue;
266  Graphics::Surface *originalRoomSurface;
267  void *data;
268  void (*drawFunction)(Graphics::Surface *, DrawNode *);
269 };
270 
271 struct DebugChannel {
272 
273 enum Type {
274  kScript = 1 << 0,
275  kEngine = 1 << 1
276 };
277 
278 };
279 
280 static const uint8 kHeroTextColor = 220;
281 
282 class PrinceEngine : public Engine {
283 protected:
284  Common::Error run() override;
285 
286 public:
287  PrinceEngine(OSystem *syst, const PrinceGameDescription *gameDesc);
288  ~PrinceEngine() override;
289 
290  bool scummVMSaveLoadDialog(bool isSave);
291 
292  bool hasFeature(EngineFeature f) const override;
293  void pauseEngineIntern(bool pause) override;
294  bool canSaveGameStateCurrently(Common::U32String *msg = nullptr) override;
295  bool canLoadGameStateCurrently(Common::U32String *msg = nullptr) override;
296  Common::Error saveGameState(int slot, const Common::String &desc, bool isAutosave = false) override;
297  Common::Error loadGameState(int slot) override;
298 
299  void playVideo(const Common::Path &videoFilename);
300 
301  WARN_UNUSED_RESULT static bool readSavegameHeader(Common::InSaveFile *in, SavegameHeader &header, bool skipThumbnail = true);
302  void writeSavegameHeader(Common::OutSaveFile *out, SavegameHeader &header);
303  void syncGame(Common::SeekableReadStream *readStream, Common::WriteStream *writeStream);
304  bool loadGame(int slotNumber);
305  void resetGame();
306 
307  int32 _creditsDataSize;
308  byte *_creditsData;
309  void scrollCredits();
310 
311  int getGameType() const;
312  const char *getGameId() const;
313  uint32 getFeatures() const;
314  Common::Language getLanguage() const;
315 
316  const PrinceGameDescription *_gameDescription;
317  Video::FlicDecoder _flicPlayer;
318  const Graphics::Surface *_flcFrameSurface;
319  VariaTxt *_variaTxt;
320 
321  uint32 _talkTxtSize;
322  byte *_talkTxt;
323 
324  uint32 _mobTranslationSize;
325  byte *_mobTranslationData;
326 
327  bool _missingVoice;
328 
329  bool loadLocation(uint16 locationNr);
330  bool loadAnim(uint16 animNr, bool loop);
331  bool loadVoice(uint32 textSlot, uint32 sampleSlot, const Common::String &name);
332  bool loadSample(uint32 sampleSlot, const Common::String &name);
333  bool loadZoom(byte *zoomBitmap, uint32 dataSize, const char *resourceName);
334  bool loadShadow(byte *shadowBitmap, uint32 dataSize, const char *resourceName1, const char *resourceName2);
335  bool loadTrans(byte *transTable, const char *resourceName);
336  bool loadMobPriority(const char *resourceName);
337 
338  void loadMobTranslationTexts();
339  void setMobTranslationTexts();
340 
341  bool loadMusic(int musNumber);
342  void stopMusic();
343 
344  void playSample(uint16 sampleId, uint16 loopType);
345  void stopSample(uint16 sampleId);
346  void stopAllSamples();
347  void freeSample(uint16 sampleId);
348  void freeAllSamples();
349 
350  void setVoice(uint16 slot, uint32 sampleSlot, uint16 flag);
351 
352  void changeCursor(uint16 curId);
353  void printAt(uint32 slot, uint8 color, char *s, uint16 x, uint16 y);
354  int calcTextLines(const char *s);
355  int calcTextTime(int numberOfLines);
356  void correctStringDEU(char *s);
357 
358  void sayText(const Common::String &text, bool isSpeech, Common::TextToSpeechManager::Action action = Common::TextToSpeechManager::INTERRUPT);
359 #ifdef USE_TTS
360  Common::U32String convertText(const Common::String &text) const;
361  bool checkConversionTable(const byte *character, int &index, byte *convertedBytes, const uint16 *table) const;
362 #endif
363  void setTTSVoice(uint8 textColor) const;
364  void stopTextToSpeech() const;
365 
366  static const uint8 kMaxTexts = 32;
367  Text _textSlots[kMaxTexts];
368 
369  Hero *_mainHero;
370  Hero *_secondHero;
371 
372  enum HeroId {
373  kMainHero,
374  kSecondHero
375  };
376 
377  int _mouseFlag;
378  uint32 _currentTime;
379  uint16 _locationNr;
380  uint16 _sceneWidth;
381  int32 _picWindowX;
382  int32 _picWindowY;
383 
384  bool _printMapNotification;
385  bool _intro;
386  bool _credits;
387 
388  Image::BitmapDecoder *_roomBmp;
389  MhwanhDecoder *_suitcaseBmp;
390  Room *_room;
391  Script *_script;
392  InterpreterFlags *_flags;
393  Interpreter *_interpreter;
394  GraphicsMan *_graph;
395  uint8 _currentMidi;
396  byte *_zoomBitmap;
397  byte *_shadowBitmap;
398  byte *_transTable;
399 
400  int16 _scaleValue; // scale for hero or special shadow animation
401  int16 _lightX; // for hero shadow
402  int16 _lightY;
403  int32 _shadScaleValue;
404  int32 _shadLineLen;
405  byte *_shadowLine;
406  void setShadowScale(int32 shadowScale);
407 
408  static const int16 kFPS = 15;
409  static const int32 kIntMax = 2147483647;
410 
411  static const int16 kMaxPicWidth = 1280;
412  static const int16 kMaxPicHeight = 480;
413  static const int16 kZoomStep = 4;
414  static const int32 kZoomBitmapLen = kMaxPicHeight / kZoomStep * kMaxPicWidth / kZoomStep;
415  static const int32 kShadowBitmapSize = kMaxPicWidth * kMaxPicHeight / 8;
416  static const int16 kShadowLineArraySize = 2 * 1280 * 4;
417  static const int16 kZoomBitmapWidth = kMaxPicWidth / kZoomStep;
418  static const int16 kZoomBitmapHeight = kMaxPicHeight / kZoomStep;
419  static const int16 kNormalWidth = 640;
420  static const int16 kNormalHeight = 480;
421  static const uint32 kTransTableSize = 256 * 256;
422 
423  static const int kMaxNormAnims = 64;
424  static const int kMaxBackAnims = 64;
425  static const int kMaxObjects = 64;
426  static const int kMaxMobs = 64;
427 
428  Common::Array<DrawNode> _drawNodeList;
429  Common::Array<AnimListItem> _animList;
430  Common::Array<BackgroundAnim> _backAnimList;
431  Common::Array<Anim> _normAnimList;
432  Common::Array<Mob> _mobList;
433  Common::Array<uint32> _mobPriorityList;
434  Common::Array<Mask> _maskList;
435  Common::Array<Object *> _objList;
436  uint16 *_objSlot;
437 
438  void freeNormAnim(int slot);
439  void freeAllNormAnims();
440  void removeSingleBackAnim(int slot);
441 
442  Common::RandomSource _randomSource;
443 
444  void checkMasks(int x1, int y1, int sprWidth, int sprHeight, int z);
445  void insertMasks(Graphics::Surface *originalRoomSurface);
446  void showMask(int maskNr, Graphics::Surface *originalRoomSurface);
447  void clsMasks();
448 
449  void grabMap();
450 
451  int _selectedMob; // number of selected Mob / inventory item
452  int _previousMob;
453  int _dialogMob;
454  int _selectedItem; // number of item on mouse cursor
455  int _selectedMode;
456  int _currentPointerNumber;
457 
458  static const int16 kMaxInv = 90; // max amount of inventory items in whole game
459  static const uint16 kMaxItems = 30; // size of inventory
460 
461  uint32 _invTxtSize;
462  byte *_invTxt;
463 
464  Graphics::Surface *_optionsPic;
465  Graphics::Surface *_optionsPicInInventory;
466 
467  bool _optionsFlag;
468  int _optionEnabled;
469  int _optionsMob;
470  int _optionsX;
471  int _optionsY;
472  int _optionsWidth;
473  int _optionsHeight;
474  int _invOptionsWidth;
475  int _invOptionsHeight;
476  int _optionsStep;
477  int _invOptionsStep;
478  int _optionsNumber;
479  int _invOptionsNumber;
480  int _optionsColor1; // color for non-selected options
481  int _optionsColor2; // color for selected option
482 
483  bool _showInventoryFlag;
484  int _invExamY;
485  bool _inventoryBackgroundRemember;
486  int _invLineX;
487  int _invLineY;
488  int _invLine; // number of items in one line
489  int _invLines; // number of lines with inventory items
490  int _invLineW;
491  int _invLineH;
492  int _maxInvW;
493  int _maxInvH;
494  int _invLineSkipX;
495  int _invLineSkipY;
496  int _invX1;
497  int _invY1;
498  int _invWidth;
499  int _invHeight;
500  bool _invCurInside;
501  int _mst_shadow;
502  int _mst_shadow2; // blinking after adding new item
503  int _candleCounter; // special counter for candle inventory item
504  int _invMaxCount; // time to turn inventory on
505  int _invCounter; // turning on counter
506 
507  void inventoryFlagChange(bool inventoryState);
508  bool loadAllInv();
509  void rememberScreenInv();
510  void prepareInventoryToView();
511  void drawInvItems();
512  void displayInventory();
513  void addInv(int heroId, int item, bool addItemQuiet);
514  void remInv(int heroId, int item);
515  void clearInv(int heroId);
516  void swapInv(int heroId);
517  void addInvObj();
518  void makeInvCursor(int itemNr);
519  void enableOptions(bool checkType);
520  void checkOptions();
521  void checkInvOptions();
522  void openInventoryCheck();
523 
524  void leftMouseButton();
525  void rightMouseButton();
526  void inventoryLeftMouseButton();
527  void inventoryRightMouseButton();
528  void dialogLeftMouseButton(byte *string, int dialogSelected);
529 
530  uint32 _dialogDatSize;
531  byte *_dialogDat;
532  byte *_dialogData; // on, off flags for lines of dialog text
533 
534  byte *_dialogBoxAddr[32]; // adresses of dialog windows
535  byte *_dialogOptAddr[32]; // adresses of dialog options
536  int _dialogOptLines[4 * 32]; // numbers of initial dialog lines
537 
538  byte *_dialogText;
539  int _dialogLines;
540  bool _dialogFlag;
541  int _dialogWidth;
542  int _dialogHeight;
543  int _dialogLineSpace;
544  int _dialogColor1; // color for non-selected options
545  int _dialogColor2; // color for selected option
546  int _previousSelectedDialog;
547  bool _isConversing;
548  Graphics::Surface *_dialogImage;
549 
550  void createDialogBox(int dialogBoxNr);
551  void dialogRun();
552  void talkHero(int slot);
553  void doTalkAnim(int animNumber, int slot, AnimType animType);
554 
555  static const uint8 zoomInStep = 8;
556  void initZoomIn(int slot);
557  void initZoomOut(int slot);
558  void doZoomIn(int slot);
559  void doZoomOut(int slot);
560  void freeZoomObject(int slot);
561 
562  static const uint8 kFadeStep = 4;
563  void blackPalette();
564  void setPalette(const byte *palette);
565 
566  int getMob(Common::Array<Mob> &mobList, bool usePriorityList, int posX, int posY);
567 
568  // 'Throw a rock' mini-game:
569  static const int16 kCurveLen = 17;
570  static const int kCelStep = 4;
571  int16 *_curveData;
572  int _curvPos;
573  void makeCurve();
574  void getCurve();
575  void mouseWeirdo();
576 
577  static const uint16 kPowerBarPosX = 288;
578  static const uint16 kPowerBarPosY = 430;
579  static const uint8 kPowerBarWidth = 64;
580  static const uint8 kPowerBarHeight = 16;
581  static const uint8 kPowerBarBackgroundColor = 0;
582  static const uint16 kPowerBarGreenPosY = 434;
583  static const uint8 kPowerBarGreenColor1 = 202;
584  static const uint8 kPowerBarGreenColor2 = 235;
585  static const uint8 kPowerBarGreenHeight = 8;
586  void showPower();
587 
588  // Pathfinding
589  static const int16 kPathGridStep = 2;
590  static const uint32 kPathBitmapLen = (kMaxPicHeight / kPathGridStep * kMaxPicWidth / kPathGridStep) / 8;
591  static const int32 kTracePts = 8000;
592  static const int32 kPBW = kMaxPicWidth / 16; // PathBitmapWidth
593  static const int kMinDistance = 2500;
594 
595  byte *_roomPathBitmap; // PL - Sala
596  byte *_roomPathBitmapTemp; // PL - SSala
597  byte *_coordsBufEnd;
598  byte *_coordsBuf; // optimal path
599  byte *_coords; // last path point address from coordsBuf
600  byte *_coordsBuf2;
601  byte *_coords2;
602  byte *_coordsBuf3;
603  byte *_coords3;
604  int _traceLineLen;
605  bool _traceLineFirstPointFlag; // if plotTraceLine after first point
606  bool _tracePointFirstPointFlag; // if plotTracePoint after first point
607  byte *_directionTable;
608  int _shanLen;
609 
610  byte *_checkBitmapTemp;
611  byte *_checkBitmap;
612  int _checkMask;
613  int _checkX;
614  int _checkY;
615 
616  byte *_rembBitmapTemp;
617  byte *_rembBitmap;
618  int _rembMask;
619  int _rembX;
620  int _rembY;
621 
622  int _fpX;
623  int _fpY;
624 
625  int drawLine(int x0, int y0, int x1, int y1, int (*plotProc)(int, int, void *), void *data);
626  bool loadPath(const char *resourceName);
627  byte *makePath(int heroId, int currX, int currY, int destX, int destY);
628  void findPoint(int x, int y);
629  int getPixelAddr(byte *pathBitmap, int x, int y);
630  static int plotTraceLine(int x, int y, void *data);
631  void specialPlotInside(int x, int y);
632  bool tracePath(int x1, int y1, int x2, int y2);
633  Direction makeDirection(int x1, int y1, int x2, int y2);
634  void specialPlot(int x, int y);
635  void specialPlot2(int x, int y);
636  void allocCoords2();
637  void freeCoords2();
638  void freeCoords3();
639  static int plotTracePoint(int x, int y, void *data);
640  void specialPlotInside2(int x, int y);
641  void approxPath();
642  void freeDirectionTable();
643  void scanDirections();
644  int scanDirectionsFindNext(byte *coords, int xDiff, int yDiff);
645  void moveShandria();
646  void walkTo();
647  void moveRunHero(int heroId, int x, int y, int dir, bool runHeroFlag);
648 
649  int leftDownDir();
650  int leftDir();
651  int leftUpDir();
652  int rightDownDir();
653  int rightDir();
654  int rightUpDir();
655  int upLeftDir();
656  int upDir();
657  int upRightDir();
658  int downLeftDir();
659  int downDir();
660  int downRightDir();
661 
662  int cpe();
663  int checkLeftDownDir();
664  int checkLeftDir();
665  int checkDownDir();
666  int checkUpDir();
667  int checkRightDir();
668  int checkLeftUpDir();
669  int checkRightDownDir();
670  int checkRightUpDir();
671 
672 private:
673  bool playNextFLCFrame();
674  void keyHandler(Common::Event event);
675  int checkMob(Graphics::Surface *screen, Common::Array<Mob> &mobList, bool usePriorityList);
676  void drawScreen();
677  void showTexts(Graphics::Surface *screen);
678  void init();
679  void showLogo();
680  void showAnim(Anim &anim);
681  void showNormAnims();
682  void setBackAnim(Anim &backAnim);
683  void showBackAnims();
684  void clearBackAnimList();
685  bool spriteCheck(int sprWidth, int sprHeight, int destX, int destY);
686  void showSprite(Graphics::Surface *spriteSurface, int destX, int destY, int destZ);
687  void showSpriteShadow(Graphics::Surface *shadowSurface, int destX, int destY, int destZ);
688  void showObjects();
689  void showParallax();
690  static bool compareDrawNodes(DrawNode d1, DrawNode d2);
691  void runDrawNodes();
692  void makeShadowTable(int brightness);
693  void pausePrinceEngine(int fps = kFPS);
694 
695  uint32 getTextWidth(const char *s);
696  void debugEngine(const char *s, ...);
697 
698  uint8 _cursorNr;
699 
700  Common::RandomSource *_rnd;
701  Cursor *_cursor1;
702  Graphics::Surface *_cursor2;
703  Cursor *_cursor3;
704  Debugger *_debugger;
705  Font *_font;
706  MusicPlayer *_midiPlayer;
707 
708  static const int kMaxSamples = 60;
709  Audio::RewindableAudioStream *_audioStream[kMaxSamples];
710  Audio::SoundHandle _soundHandle[kMaxSamples];
711 
712  Common::Array<PScr *> _pscrList;
713  Common::Array<InvItem> _allInvList;
714  Common::Array<Mob> _invMobList;
715 
716  bool _flicLooped;
717 
718  void mainLoop();
719 
720 };
721 
722 } // End of namespace Prince
723 
724 #endif
Definition: prince.h:82
Definition: prince.h:258
Definition: prince.h:251
Definition: str.h:59
Definition: cursor.h:31
Definition: surface.h:67
EngineFeature
Definition: engine.h:260
Definition: prince.h:206
Definition: music.h:32
Definition: prince.h:282
Definition: stream.h:77
Definition: savefile.h:54
Definition: error.h:81
Definition: hero.h:40
Definition: mhwanh.h:34
Definition: array.h:52
Definition: prince.h:127
Definition: random.h:44
Definition: detection.h:42
Definition: path.h:52
Definition: font.h:32
Definition: stream.h:745
Definition: mixer.h:49
Definition: flic_decoder.h:50
Definition: prince.h:271
Definition: animation.h:32
Definition: animation.h:30
Definition: script.h:86
Definition: ustr.h:57
Definition: atari-cursor.h:35
Definition: prince.h:94
Definition: prince.h:139
Definition: events.h:210
bool skipThumbnail(Common::SeekableReadStream &in)
Definition: script.h:41
Definition: variatxt.h:26
void NORETURN_PRE error(MSVC_PRINTF const char *s,...) GCC_PRINTF(1
Definition: audiostream.h:109
Definition: script.h:175
Definition: script.h:160
Definition: graphics.h:33
Definition: system.h:163
Definition: prince.h:217
Definition: bmp.h:69
Definition: engine.h:146
Definition: prince.h:149
Definition: debugger.h:33
Definition: prince.h:113
Language
Definition: language.h:45