ScummVM API documentation
enginedata.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 NANCY_ENGINEDATA_H
23 #define NANCY_ENGINEDATA_H
24 
25 #include "engines/nancy/commontypes.h"
26 #include "engines/nancy/util.h"
27 
28 #include "common/hash-str.h"
29 #include "common/path.h"
30 
31 namespace Nancy {
32 
33 // Data types corresponding to chunks found inside BOOT
34 
35 struct EngineData {
37  virtual ~EngineData() {}
38 };
39 
40 // Boot summary. Contains data for the UI, game clock, starting a new game.
41 struct BSUM : public EngineData {
42  BSUM(Common::SeekableReadStream *chunkStream);
43 
44  byte header[90];
45 
46  Common::Path conversationTextsFilename;
47  Common::Path autotextFilename;
48 
49  // Nancy12+
50  Common::Path fontFilename;
51  Common::Path flagsFilename;
52 
53  // Game start section
54  SceneChangeDescription firstScene;
55  uint16 startTimeHours;
56  uint16 startTimeMinutes;
57 
58  // More Nancy Drew! scene
59  SceneChangeDescription adScene;
60 
61  // UI
62  Common::Rect extraButtonHotspot; // Extra button is map in tvd, clock in nancy2 and up
63  Common::Rect extraButtonHighlightDest;
64  Common::Rect textboxScreenPosition;
65  Common::Rect inventoryBoxScreenPosition;
66  Common::Rect menuButtonSrc;
67  Common::Rect helpButtonSrc;
68  Common::Rect menuButtonDest;
69  Common::Rect helpButtonDest;
70  Common::Rect menuButtonHighlightSrc;
71  Common::Rect helpButtonHighlightSrc;
72  Common::Rect clockHighlightSrc;
73 
74  // Transparent color
75  byte paletteTrans = 0;
76  byte rTrans = 0;
77  byte gTrans = 0;
78  byte bTrans = 0;
79 
80  uint16 horizontalEdgesSize;
81  uint16 verticalEdgesSize;
82 
83  uint16 numFonts;
84 
85  uint16 playerTimeMinuteLength;
86  uint16 buttonPressTimeDelay;
87  uint16 dayStartMinutes = 0;
88  uint16 dayEndMinutes = 0;
89  byte overrideMovementTimeDeltas;
90  uint16 slowMovementTimeDelta;
91  uint16 fastMovementTimeDelta;
92 };
93 
94 // Contains rects defining the in-game viewport
95 struct VIEW : public EngineData {
96  VIEW(Common::SeekableReadStream *chunkStream);
97 
98  Common::Rect screenPosition;
99  Common::Rect bounds;
100 };
101 
102 // Contains a list of .cal filenames, which are to be loaded at startup.
103 // .cal files themselves are just collections of image files used in dialogue.
104 // First introduced in nancy2.
105 struct PCAL : public EngineData {
106  PCAL(Common::SeekableReadStream *chunkStream);
107 
109 };
110 
111 // Contains definitions for all in-game items, as well as data for the
112 // inventory box at the bottom right of the game screen.
113 struct INV : public EngineData {
115  Common::String name;
116  byte keepItem = kInvItemKeepAlways;
117  uint16 sceneID = kNoScene;
118  uint16 sceneSoundFlag = kContinueSceneSound;
119  Common::Rect sourceRect;
120  Common::Rect highlightedSourceRect;
121 
122  Common::String cantText;
123  Common::String cantTextNotHolding; // nancy2 only
124  Common::String cantTexts[3]; // Nancy9 and newer
125  SoundDescription cantSound;
126  SoundDescription cantSoundNotHolding; // nancy2 only
127  SoundDescription cantSounds[3]; // Nancy9 and newer
128  };
129 
130  INV(Common::SeekableReadStream *chunkStream);
131 
132  Common::Rect scrollbarSrcBounds;
133  Common::Point scrollbarDefaultPos;
134  uint16 scrollbarMaxScroll;
135 
136  Common::Array<Common::Rect> ornamentSrcs;
137  Common::Array<Common::Rect> ornamentDests;
138 
139  Common::Array<Common::Rect> curtainAnimationSrcs;
140  Common::Rect curtainsScreenPosition;
141  uint16 curtainsFrameTime;
142 
143  uint16 captionAutoClearTime = 3000;
144 
145  Common::Path inventoryBoxIconsImageName;
146  Common::Path inventoryCursorsImageName;
147 
148  SoundDescription cantSound;
149  Common::String cantText;
150 
151  Common::Array<ItemDescription> itemDescriptions;
152 };
153 
154 // Contains data about the textbox at the bottom left of the game screen
155 struct TBOX : public EngineData {
156  TBOX(Common::SeekableReadStream *chunkStream);
157 
158  Common::Rect scrollbarSrcBounds;
159  Common::Rect innerBoundingBox;
160  Common::Point scrollbarDefaultPos;
161  uint16 scrollbarMaxScroll;
162 
163  uint16 upOffset;
164  uint16 downOffset;
165  uint16 leftOffset;
166  uint16 rightOffset;
167 
168  Common::Array<Common::Rect> ornamentSrcs;
169  Common::Array<Common::Rect> ornamentDests;
170 
171  uint16 defaultFontID;
172  uint16 defaultTextColor;
173  uint16 conversationFontID;
174  uint16 highlightConversationFontID;
175  uint16 tabWidth;
176  uint16 pageScrollPercent;
177 
178  uint32 textBackground;
179  uint32 highlightTextBackground;
180 
181  // Nancy 10+ extra layout variables.
182  int32 maxScrollWidth = 0;
183  int32 firstLineY = 0; // added to the y-cursor when starting a new line
184  int32 unknown1 = 0;
185  int32 unknown2 = 0;
186  int32 contentWidth = 0;
187  int32 contentHeight = 0;
188 };
189 
190 // Contains data about the map state. Only used in TVD and nancy1
191 struct MAP : public EngineData {
192  struct Location {
193  Common::String description;
194  Common::Rect hotspot;
195  SceneChangeDescription scenes[2];
196 
197  Common::Rect labelSrc;
198  };
199 
200  MAP(Common::SeekableReadStream *chunkStream);
201 
203  Common::Array<Common::Path> mapPaletteNames;
205 
206  // Globe section, TVD only
207  uint16 globeFrameTime;
208  Common::Array<Common::Rect> globeSrcs;
209  Common::Rect globeDest;
210  Common::Rect globeGargoyleSrc;
211  Common::Rect globeGargoyleDest;
212 
213  // Button section, nancy1 only
214  Common::Rect buttonSrc;
215  Common::Rect buttonDest;
216 
217  Common::Rect closedLabelSrc;
218 
219  Common::Array<Location> locations;
220 
221  Common::Point cursorPosition;
222 };
223 
224 // Contains data for the help screen.
225 struct HELP : public EngineData {
226  HELP(Common::SeekableReadStream *chunkStream);
227 
228  Common::Path imageName;
229  Common::Rect buttonDest;
230  Common::Rect buttonSrc;
231  Common::Rect buttonHoverSrc;
232 };
233 
234 // Contains data for the credits screen.
235 struct CRED : public EngineData {
236  CRED(Common::SeekableReadStream *chunkStream);
237 
238  Common::Path imageName;
239  Common::Array<Common::Path> textNames;
240  Common::Rect textScreenPosition;
241  uint16 updateTime;
242  uint16 pixelsToScroll;
243  SoundDescription sound;
244 };
245 
246 // Contains data for the main menu.
247 struct MENU : public EngineData {
248  MENU(Common::SeekableReadStream *chunkStream);
249 
250  Common::Path _imageName;
251  Common::Array<Common::Rect> _buttonDests;
252  Common::Array<Common::Rect> _buttonDownSrcs;
253  Common::Array<Common::Rect> _buttonHighlightSrcs;
254  Common::Array<Common::Rect> _buttonDisabledSrcs;
255 };
256 
257 // Contains data for the Setup screen (a.k.a settings menu)
258 struct SET : public EngineData {
259  SET(Common::SeekableReadStream *chunkStream);
260 
261  Common::Path _imageName;
262  // Common::Rect _scrollbarsBounds
263  Common::Array<Common::Rect> _scrollbarBounds;
264  Common::Array<Common::Rect> _buttonDests;
265  Common::Array<Common::Rect> _buttonDownSrcs;
266  Common::Rect _doneButtonHighlightSrc;
267  Common::Array<Common::Rect> _scrollbarSrcs;
268 
269  Common::Array<uint16> _scrollbarsCenterYPos;
270  Common::Array<uint16> _scrollbarsCenterXPosL;
271  Common::Array<uint16> _scrollbarsCenterXPosR;
272 
274 };
275 
276 // Contains data for the Save/Load screen. Used up to nancy7
277 struct LOAD : public EngineData {
278  LOAD(Common::SeekableReadStream *chunkStream);
279 
280  Common::Path _image1Name;
281 
282  int16 _mainFontID;
283  int16 _highlightFontID;
284  int16 _disabledFontID;
285  int16 _fontXOffset;
286  int16 _fontYOffset;
287 
288  Common::Array<Common::Rect> _saveButtonDests;
289  Common::Array<Common::Rect> _loadButtonDests;
290  Common::Array<Common::Rect> _textboxBounds;
291  Common::Rect _inputTextboxBounds;
292  Common::Rect _doneButtonDest;
293  Common::Array<Common::Rect> _saveButtonDownSrcs;
294  Common::Array<Common::Rect> _loadButtonDownSrcs;
295 
296  Common::Rect _doneButtonDownSrc;
297  Common::Array<Common::Rect> _saveButtonHighlightSrcs;
298  Common::Array<Common::Rect> _loadButtonHighlightSrcs;
299 
300  Common::Rect _doneButtonHighlightSrc;
301  Common::Array<Common::Rect> _saveButtonDisabledSrcs;
302  Common::Array<Common::Rect> _loadButtonDisabledSrcs;
303 
304  Common::Rect _doneButtonDisabledSrc;
305  Common::Rect _blinkingCursorSrc;
306  uint16 _blinkingTimeDelay;
307  Common::Array<Common::Rect> _cancelButtonSrcs;
308  Common::Array<Common::Rect> _cancelButtonDests;
309  Common::Rect _cancelButtonDownSrc;
310  Common::Rect _cancelButtonHighlightSrc;
311  Common::Rect _cancelButtonDisabledSrc;
312 
313  Common::Path _gameSavedPopup;
314  Common::String _emptySaveText;
315  Common::String _defaultSaveNamePrefix;
316  // Common::Rect _gameSavedBounds
317 
318  // v2 members
319  Common::Path _image2Name;
320  Common::Path _imageButtonsName;
321 
322  Common::Array<Common::Rect> _unpressedButtonSrcs;
323  Common::Array<Common::Rect> _pressedButtonSrcs;
324  Common::Array<Common::Rect> _highlightedButtonSrcs;
325  Common::Array<Common::Rect> _disabledButtonSrcs;
326 
327  Common::Array<Common::Rect> _buttonDests;
328 };
329 
330 // Contains data for the prompt that appears when exiting the game
331 // without saving first. Introduced in nancy3.
332 struct SDLG : public EngineData {
333  struct Dialog {
334  Dialog(Common::SeekableReadStream *chunkStream);
335 
336  Common::Path imageName;
337 
338  Common::Rect yesDest;
339  Common::Rect noDest;
340  Common::Rect cancelDest;
341 
342  Common::Rect yesHighlightSrc;
343  Common::Rect noHighlightSrc;
344  Common::Rect cancelHighlightSrc;
345 
346  Common::Rect yesDownSrc;
347  Common::Rect noDownSrc;
348  Common::Rect cancelDownSrc;
349  };
350 
351  SDLG(Common::SeekableReadStream *chunkStream);
352 
353  Common::Array<Dialog> dialogs;
354 };
355 
356 // Contains data for the hint system. Only used in nancy1.
357 struct HINT : public EngineData {
358  HINT(Common::SeekableReadStream *chunkStream);
359 
360  Common::Array<uint16> numHints;
361 };
362 
363 // Contains data for the slider puzzle. First used in nancy1
364 struct SPUZ : public EngineData {
365  SPUZ(Common::SeekableReadStream *chunkStream);
366 
368 };
369 
370 // Contains data for the clock UI that appears at the bottom left of the screen (top left in TVD)
371 // Not used in nancy1 but still present in the data.
372 struct CLOK : public EngineData {
373  CLOK(Common::SeekableReadStream *chunkStream);
374 
376  Common::Array<Common::Rect> animDests;
377 
378  Common::Array<Common::Rect> hoursHandSrcs;
379  Common::Array<Common::Rect> minutesHandSrcs;
380  Common::Rect screenPosition;
381  Common::Array<Common::Rect> hoursHandDests;
382  Common::Array<Common::Rect> minutesHandDests;
383 
384  Common::Rect staticImageSrc;
385  Common::Rect staticImageDest;
386 
387  uint32 timeToKeepOpen = 0;
388  uint16 frameTime = 0;
389 
390  bool clockIsDisabled = false;
391  bool clockIsDay = false; // nancy5 clock
392 
393  uint32 countdownTime = 0;
395  Common::Array<Common::Rect> countdownSrcs;
396  Common::Rect disabledSrc; // possibly useless
397 };
398 
399 // Contains data for special effects (fades between scenes/fades to black).
400 // Introduced in nancy2.
401 struct SPEC : public EngineData {
402  SPEC(Common::SeekableReadStream *chunkStream);
403 
404  byte fadeToBlackNumFrames;
405  uint16 fadeToBlackFrameTime;
406  byte crossDissolveNumFrames;
407 };
408 
409 // Contains data for the raycast puzzle in nancy3. Specifically, this is the
410 // data for the different "themes" that appear in the 3D space.
411 struct RCLB : public EngineData {
412  struct Theme {
413  Common::String themeName;
414 
415  Common::Array<uint32> wallIDs;
416 
417  Common::Array<uint16> exitFloorIDs;
418  Common::Array<uint16> floorIDs;
419  Common::Array<uint16> ceilingIDs;
420 
421  Common::Array<uint32> doorIDs;
422  Common::Array<uint32> transparentwallIDs;
423  Common::Array<uint32> objectwallIDs;
424  Common::Array<uint16> objectWallHeights;
425 
426  uint16 generalLighting;
427  uint16 hasLightSwitch;
428 
429  int16 transparentWallDensity;
430  int16 objectWallDensity;
431  int16 doorDensity;
432  };
433 
434  RCLB(Common::SeekableReadStream *chunkStream);
435 
436  uint16 lightSwitchID;
437  uint16 unk2;
438  Common::Array<Theme> themes;
439 };
440 
441 // Contains data about the raycast puzzle in nancy3. Specifically, this is the
442 // data for the debug map and the names of the textures to be used when rendering.
443 struct RCPR : public EngineData {
444  RCPR(Common::SeekableReadStream *chunkStream);
445 
446  Common::Array<Common::Rect> screenViewportSizes;
447  uint16 viewportSizeUsed;
448 
449  byte wallColor[3];
450  byte playerColor[3];
451  byte doorColor[3];
452  byte lightSwitchColor[3];
453  byte exitColor[3];
454  byte uColor6[3];
455  byte uColor7[3];
456  byte uColor8[3];
457  byte transparentWallColor[3];
458  byte uColor10[3];
459 
460  Common::Array<Common::Path> wallNames;
461  Common::Array<Common::Path> specialWallNames;
462  Common::Array<Common::Path> ceilingNames;
463  Common::Array<Common::Path> floorNames;
464 };
465 
466 // Contains the name and dimensions of an image.
467 struct ImageChunk : public EngineData {
469 
470  Common::Path imageName;
471  uint16 width;
472  uint16 height;
473 };
474 
475 // Contains text data. Every string is tagged with a key via which
476 // it can be accessed. Used to store dialogue and journal (autotext) strings.
477 // NOT found inside BOOT; these are stored in their own cifs, the names of which
478 // can be found inside BSUM. Introduced in nancy6.
479 struct CVTX : public EngineData {
480  CVTX(Common::SeekableReadStream *chunkStream);
481 
483 };
484 
485 struct TABL : public EngineData {
486  TABL(Common::SeekableReadStream *chunkStream);
487 
488  Common::String soundBaseName;
489  Common::Array<uint16> startIDs;
490  Common::Array<uint16> correctIDs;
493 };
494 
495 struct MARK : public EngineData {
496  MARK(Common::SeekableReadStream *chunkStream);
497 
498  Common::Array<Common::Rect> _markSrcs;
499 };
500 
501 // Shared UI elements. Introduced in Nancy 10
502 struct SHUI : public EngineData {
503  SHUI(Common::SeekableReadStream *chunkStream);
504 
505  Common::Array<Common::Rect> _closeRects; // Close/"X" button rects
506  Common::Array<Common::Rect> _sliderRects; // Slider rects
507 };
508 
509 // ScrollTextBox - introduced in Nancy 11. Configuration for the scrollable
510 // text-box UI used for long textbox content (e.g. journal / scheduled-talk
511 // panels) that needs to scroll within a fixed frame.
512 struct SCTB : public EngineData {
513  SCTB(Common::SeekableReadStream *chunkStream);
514 
515  Common::Path imageName;
516 };
517 
518 enum TaskButton {
519  kTaskButtonMenu = 0,
520  kTaskButtonInventory = 1,
521  kTaskButtonNotebook = 2,
522  kTaskButtonCellphone = 3,
523  kTaskButtonHelp = 4
524 };
525 
526 // Taskbar (the always-on strip at the bottom of the screen with MENU /
527 // inventory / notebook / cellphone / HELP buttons). Introduced in Nancy 10.
528 struct TASK : public EngineData {
529  struct ButtonRecord {
530  UIButtonRecord button;
531  // Source rect for the notification sprite (the badge shown on
532  // the middle three buttons when the popup has new content).
533  // Empty for buttons that don't carry a notification.
534  Common::Rect notificationSrcRect;
535  Common::String clickSoundName[3];
536  };
537 
538  TASK(Common::SeekableReadStream *chunkStream);
539 
540  static const uint kNumButtons = 5;
541  static const uint kButtonRecordSize = 354;
542  static const uint kNumAltSounds = 3;
543 
544  Common::Path imageName;
545 
546  Common::Rect srcRect;
547  Common::Rect dstRect;
548  Common::Rect unkRect1;
549  Common::Rect unkRect2;
550 
551  ButtonRecord buttons[kNumButtons];
552 };
553 
554 // Web browser popup UI (used from the cell phone to view in-game "web
555 // pages"). Introduced in Nancy 10
556 struct UIBW : public EngineData {
557  struct Hotspot {
558  uint16 id = 0;
559  Common::Rect rect;
560  };
561 
562  struct UrlPage {
563  Common::Path imageName;
564  Common::Array<Hotspot> hotspots;
565  };
566 
567  UIBW(Common::SeekableReadStream *chunkStream);
568 
569  static const uint kUrlRecordSize = 215;
570  static const uint kMaxHotspotsPerPage = 10;
571 
572  Common::Path imageName;
574 };
575 
576 // Cell-phone popup UI. Introduced in Nancy 10.
577 struct UICL : public EngineData {
578  struct DialPadSlot {
579  Common::Rect srcRect;
580  Common::Rect destRect;
581  Common::String soundName;
582  };
583 
585  Common::Rect srcRectIdle;
586  Common::Rect srcRectPressed;
587  Common::Rect destRect;
588  };
589 
590  struct Contact {
591  // Prefix layout:
592  // [0..1] visibility flag (10 = always, 11 = never, else =
593  // scene event-flag index; contact hidden until set).
594  // [2..8] 7-digit dial pattern (slot indices 0..9).
595  // [9] '\n' terminator.
596  // [10..12] unused.
597  byte unknownPrefix[13];
598  Common::String name; // 20-byte null-terminated
599  // Suffix layout: [0..1] sceneID, [2..3] frameID,
600  // [4..5] event-flag label, [6] event-flag value, [7] unused.
601  byte unknownSuffix[8];
602  };
603 
605  Common::Rect srcRect;
606  Common::Rect destRect;
607  };
608 
609  static const uint kNumDialPadSlots = 15;
610  static const uint kNumSubButtons = 10;
611  static const uint kNumStatusLabels = 3; // No Signal / No Access / Old Email Only
612 
613  UICL(Common::SeekableReadStream *chunkStream);
614 
615  UIPopupHeader header;
616  Common::Path overlayImageName;
617 
618  // Template the call-flow sounds (ring / pickup / invalid) are played
619  // through. Only the name is swapped per call; channel / volume /
620  // loops come from here.
621  SoundDescription callSoundTemplate;
622 
623  DialPadSlot dialPadSlots[kNumDialPadSlots];
624 
625  // Screen-frame and label rects
626  SrcDestRectPair dialHilite;
627  Common::Rect screenOutSrcRect;
628  int32 statusTextX = 0; // text X-baseline
629  int32 statusTextY = 0; // text Y-baseline
630  SrcDestRectPair welcomeScreen;
631  Common::String statusLabels[kNumStatusLabels]; // "No Signal", "No Access", "Old Email Only"
632  SrcDestRectPair dialLabel;
633  SrcDestRectPair webLabel;
634  SrcDestRectPair dirLabel;
635 
636  // Help "?" button (original button index 15). The visible Talk/Call key
637  // is dial-pad slot 12, not a separate widget.
638  ThreeRectWidget helpButton;
639 
640  // Screen-content sprite block
641  Common::String helpTextKey; // CVTX key for the help page text
642  Common::Rect signalSpriteSrc;
643  Common::Rect signalSpriteSrcAlt;
644  Common::Rect signalSpriteDest;
645  Common::Rect batterySpriteSrc;
646  Common::Rect batterySpriteSrcAlt;
647  Common::Rect batterySpriteDest;
648  SrcDestRectPair typeMessage;
649  SrcDestRectPair connectedLabel;
650  Common::Rect connectingSpriteSrc;
651  Common::Rect connectingSpriteSrcAlt; // state-8 variant
652  Common::Rect connectingSpriteDest;
653  SrcDestRectPair onlineHeading;
654  Common::Rect fullEmptyScreenSrc;
655  Common::Rect emailListContainer; // scrollbar/list container
656  Common::Rect dirArrowSrc;
657  Common::Rect dirCursorSrc;
658  SrcDestRectPair dirHeading;
659 
660  ThreeRectWidget subButtons[kNumSubButtons];
661 
662  // Heading/icon SRC+DEST pairs
663  SrcDestRectPair searchHeading;
664  Common::Rect emailIconUnread;
665  Common::Rect emailIconSelected;
666  SrcDestRectPair emailHeading;
667  SrcDestRectPair helpHeading;
668  SrcDestRectPair browserHeading;
669 
670  Common::Path holdMusicSound;
671  Common::Path answeringMachineSound; // chunk+0xCE4 (33B): "SHAMA02"
672  int16 holdLink1 = 0;
673  int16 holdLink2 = 0;
674  Common::Path urlSound;
675  int16 urlLink1 = 0;
676  int16 urlLink2 = 0;
677  int16 urlLink3 = 0;
678 
679  uint16 fontId1 = 0;
680  uint16 fontId2 = 0;
681 
682  Common::Path outgoingRingSound; // Process case 2 (post-dial ring)
683  Common::Path pickupSound; // Process cases 0/4 (call connect)
684  Common::Path invalidNumberSound; // Process case 7 (try again)
685 
686  uint16 contactCount = 0;
687  Common::Array<Contact> contacts;
688 };
689 
690 // New conversation popup UI (the text strip that appears above the taskbar
691 // when a character is speaking). Introduced in Nancy 10.
692 // Note: response hotspots are NOT in this chunk — they live in a separate
693 // TextBoxSummaryChunk, each carrying a response-sound filename referenced
694 // by ProcessConversation when STOP_VIDEO transitions to PLAYER_RESPONSE_SOUND.
695 struct UICO : public EngineData {
696  UICO(Common::SeekableReadStream *chunkStream);
697 
698  UIPopupHeader header;
699  Common::Rect textRect; // Text-drawing rect inside the popup overlay
700 };
701 
702 // New inventory popup UI (4x4 item grid with paging slider and category
703 // filter tabs along the right edge). Introduced in Nancy 10.
704 struct UIIV : public EngineData {
705  UIIV(Common::SeekableReadStream *chunkStream);
706 
707  static const uint kNumFilters = 6;
708 
709  UIPopupHeader header;
710  Common::Array<Common::Rect> slotSrcRects; // 16 entries (image coords)
711  Common::Array<Common::Rect> slotDestRects; // 16 entries (screen coords)
712  UIButtonSlot filters[kNumFilters]; // 6 entries
713  Common::Array<Common::Rect> tabCaptionSrcRects; // 6 entries
714  Common::Rect tabCaptionDestRect; // on-screen target
715 };
716 
717 // New notebook UI. Introduced in Nancy 10.
718 struct UINB : public EngineData {
719  UINB(Common::SeekableReadStream *chunkStream);
720 
721  static const uint kNumTabs = 2;
722  static const uint kNumPageSoundsPerSet = 3;
723 
724  UIPopupHeader header;
725  UIButtonSlot tabs[kNumTabs];
726  Common::Rect textRect;
727  uint16 primaryFontID = 0;
728  uint16 secondaryFontAttr = 0;
729  uint16 useFilenameTextFlag = 0;
730  Common::Path conditionalTextFilename;
731  Common::Path actionableClickSounds[kNumPageSoundsPerSet];
732  Common::Path noActionClickSounds[kNumPageSoundsPerSet];
733  Common::Array<Common::Rect> tabCaptionSrcRects; // 2 entries
734  Common::Rect tabCaptionDestRect; // on-screen target
735 };
736 } // End of namespace Nancy
737 
738 #endif // NANCY_ENGINEDATA_H
Definition: enginedata.h:364
Definition: enginedata.h:41
Definition: enginedata.h:357
Definition: enginedata.h:333
Definition: str.h:59
Definition: enginedata.h:401
Definition: enginedata.h:485
Definition: enginedata.h:235
Definition: commontypes.h:152
Definition: enginedata.h:577
Definition: enginedata.h:590
Definition: enginedata.h:557
Definition: enginedata.h:695
Definition: rect.h:524
Definition: path.h:52
Definition: enginedata.h:584
Definition: enginedata.h:495
Definition: enginedata.h:192
Definition: stream.h:745
Definition: enginedata.h:191
Definition: enginedata.h:105
Definition: enginedata.h:562
Definition: commontypes.h:353
Definition: enginedata.h:556
Definition: enginedata.h:258
Definition: enginedata.h:467
Definition: enginedata.h:443
Definition: enginedata.h:247
Definition: enginedata.h:225
Definition: enginedata.h:113
Definition: enginedata.h:502
Definition: rect.h:144
Definition: enginedata.h:372
Definition: commontypes.h:400
Definition: enginedata.h:95
Definition: enginedata.h:412
Definition: enginedata.h:578
Definition: enginedata.h:512
Definition: enginedata.h:604
Definition: enginedata.h:277
Definition: commontypes.h:255
Definition: enginedata.h:479
Definition: enginedata.h:332
Definition: enginedata.h:155
Definition: enginedata.h:704
Definition: enginedata.h:35
Definition: commontypes.h:372
Definition: enginedata.h:528
Definition: actionmanager.h:32
Definition: enginedata.h:114
Definition: enginedata.h:718
Definition: enginedata.h:529
Definition: enginedata.h:411