ScummVM API documentation
displayinfo.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 // Interface widget display information
23 
24 #ifndef SAGA_DISPLAYINFO_H
25 #define SAGA_DISPLAYINFO_H
26 
27 namespace Saga {
28 
29 struct PanelButton {
30  PanelButtonType type;
31  int xOffset;
32  int yOffset;
33  int width;
34  int height;
35  int id;
36  uint16 customType;
37  int state;
38  int upSpriteNumber;
39  int downSpriteNumber;
40  int overSpriteNumber;
41 };
42 
44  int width;
45  int height;
46 
47  int pathStartY;
48  int sceneHeight;
49 
50  int statusXOffset;
51  int statusYOffset;
52  int statusWidth;
53  int statusHeight;
54  int statusTextY;
55  int statusTextColor;
56  int statusBGColor;
57 
58  int saveReminderXOffset;
59  int saveReminderYOffset;
60  int saveReminderWidth;
61  int saveReminderHeight;
62  int saveReminderFirstSpriteNumber;
63  int saveReminderNumSprites;
64 
65  int leftPortraitXOffset;
66  int leftPortraitYOffset;
67  int rightPortraitXOffset;
68  int rightPortraitYOffset;
69 
70  int inventoryUpButtonIndex;
71  int inventoryDownButtonIndex;
72  int inventoryRows;
73  int inventoryColumns;
74 
75  int mainPanelXOffset;
76  int mainPanelYOffset;
77  int mainPanelButtonsCount;
78  PanelButton *mainPanelButtons;
79 
80  int converseMaxTextWidth;
81  int converseTextHeight;
82  int converseTextLines;
83  int converseUpButtonIndex;
84  int converseDownButtonIndex;
85 
86  int conversePanelXOffset;
87  int conversePanelYOffset;
88  int conversePanelButtonsCount;
89  PanelButton *conversePanelButtons;
90 
91  int optionSaveFilePanelIndex;
92  int optionSaveFileSliderIndex;
93  uint32 optionSaveFileVisible;
94 
95  int optionPanelXOffset;
96  int optionPanelYOffset;
97  int optionPanelButtonsCount;
98  PanelButton *optionPanelButtons;
99 
100  int quitPanelXOffset;
101  int quitPanelYOffset;
102  int quitPanelWidth;
103  int quitPanelHeight;
104  int quitPanelButtonsCount;
105  PanelButton *quitPanelButtons;
106 
107  int loadPanelXOffset;
108  int loadPanelYOffset;
109  int loadPanelWidth;
110  int loadPanelHeight;
111  int loadPanelButtonsCount;
112  PanelButton *loadPanelButtons;
113 
114  int saveEditIndex;
115  int savePanelXOffset;
116  int savePanelYOffset;
117  int savePanelWidth;
118  int savePanelHeight;
119  int savePanelButtonsCount;
120  PanelButton *savePanelButtons;
121 
122  int protectEditIndex;
123  int protectPanelXOffset;
124  int protectPanelYOffset;
125  int protectPanelWidth;
126  int protectPanelHeight;
127  int protectPanelButtonsCount;
128  PanelButton *protectPanelButtons;
129 };
130 
131 #define ITE_CONVERSE_MAX_TEXT_WIDTH (256 - 60)
132 #define ITE_CONVERSE_TEXT_HEIGHT 10
133 #define ITE_CONVERSE_TEXT_LINES 4
134 
135 // ITE section
136 static PanelButton ITE_MainPanelButtons[] = {
137  {kPanelButtonVerb, 52, 4, 57,10, kVerbITEWalkTo, kActionWalkTo, 0, 0, 1, 0},
138  {kPanelButtonVerb, 52, 15, 57,10, kVerbITELookAt, kActionLookAt, 0, 2, 3, 0},
139  {kPanelButtonVerb, 52, 26, 57,10, kVerbITEPickUp, kActionPickUp, 0, 4, 5, 0},
140  {kPanelButtonVerb, 52, 37, 57,10, kVerbITETalkTo, kActionTalkTo, 0, 0, 1, 0},
141  {kPanelButtonVerb, 110, 4, 56,10, kVerbITEOpen, kActionOpen, 0, 6, 7, 0},
142  {kPanelButtonVerb, 110,15, 56,10, kVerbITEClose, kActionClose, 0, 8, 9, 0},
143  {kPanelButtonVerb, 110,26, 56,10, kVerbITEUse, kActionUse, 0, 10, 11, 0},
144  {kPanelButtonVerb, 110,37, 56,10, kVerbITEGive, kActionGive, 0, 12, 13, 0},
145  {kPanelButtonArrow, 306,6, 8,5, -1,'U',0, 0,4,2},
146  {kPanelButtonArrow, 306,41, 8,5, 1,'D',0, 1,5,3},
147 
148  {kPanelButtonInventory, 181 + 32*0,6, 27,18, 0,'-',0, 0,0,0},
149  {kPanelButtonInventory, 181 + 32*1,6, 27,18, 1,'-',0, 0,0,0},
150  {kPanelButtonInventory, 181 + 32*2,6, 27,18, 2,'-',0, 0,0,0},
151  {kPanelButtonInventory, 181 + 32*3,6, 27,18, 3,'-',0, 0,0,0},
152 
153  {kPanelButtonInventory, 181 + 32*0,27, 27,18, 4,'-',0, 0,0,0},
154  {kPanelButtonInventory, 181 + 32*1,27, 27,18, 5,'-',0, 0,0,0},
155  {kPanelButtonInventory, 181 + 32*2,27, 27,18, 6,'-',0, 0,0,0},
156  {kPanelButtonInventory, 181 + 32*3,27, 27,18, 7,'-',0, 0,0,0}
157 };
158 
159 static PanelButton ITE_MainPanelButtons_ZH[] = {
160  {kPanelButtonVerb, 53, 0, 34,16, kVerbITEWalkTo, kActionWalkTo, 0, 0,1,0},
161  {kPanelButtonVerb, 53,17, 34,16, kVerbITELookAt, kActionLookAt, 0, 2,3,0},
162  {kPanelButtonVerb, 53,34, 34,16, kVerbITEPickUp, kActionPickUp, 0, 4,5,0},
163  {kPanelButtonVerb, 92, 0, 34,16, kVerbITETalkTo, kActionTalkTo, 0, 0,1,0},
164  {kPanelButtonVerb, 92,17, 34,16, kVerbITEOpen, kActionOpen, 0, 6,7,0},
165  {kPanelButtonVerb, 92,34, 34,16, kVerbITEClose, kActionClose, 0, 8,9,0},
166  {kPanelButtonVerb, 132, 0, 34,16, kVerbITEUse, kActionUse, 0, 10,11,0},
167  {kPanelButtonVerb, 132,17, 34,16, kVerbITEGive, kActionGive, 0, 12,13,0},
168  {kPanelButtonArrow, 306,6, 8,5, -1,'U',0, 0,4,2},
169  {kPanelButtonArrow, 306,41, 8,5, 1,'D',0, 1,5,3},
170 
171  {kPanelButtonInventory, 181 + 32*0,2, 27,18, 0,'-',0, 0,0,0},
172  {kPanelButtonInventory, 181 + 32*1,2, 27,18, 1,'-',0, 0,0,0},
173  {kPanelButtonInventory, 181 + 32*2,2, 27,18, 2,'-',0, 0,0,0},
174  {kPanelButtonInventory, 181 + 32*3,2, 27,18, 3,'-',0, 0,0,0},
175 
176  {kPanelButtonInventory, 181 + 32*0,23, 27,18, 4,'-',0, 0,0,0},
177  {kPanelButtonInventory, 181 + 32*1,23, 27,18, 5,'-',0, 0,0,0},
178  {kPanelButtonInventory, 181 + 32*2,23, 27,18, 6,'-',0, 0,0,0},
179  {kPanelButtonInventory, 181 + 32*3,23, 27,18, 7,'-',0, 0,0,0}
180 };
181 
182 static PanelButton ITE_ConversePanelButtons[] = {
183  {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 0, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 0,'1',0, 0,0,0},
184  {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 1, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 1,'2',0, 0,0,0},
185  {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 2, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 2,'3',0, 0,0,0},
186  {kPanelButtonConverseText, 52,6 + ITE_CONVERSE_TEXT_HEIGHT * 3, ITE_CONVERSE_MAX_TEXT_WIDTH,ITE_CONVERSE_TEXT_HEIGHT, 3,'4',0, 0,0,0},
187  {kPanelButtonArrow, 257,6, 9,6, -1,'u',0, 0,4,2},
188  {kPanelButtonArrow, 257,41, 9,6, 1,'d',0, 1,5,3},
189 };
190 
191 static PanelButton ITE_OptionPanelButtons[] = {
192  {kPanelButtonOptionSlider, 284,19, 13,75, 0,'-',0, 0,0,0}, //slider-scroller
193  {kPanelButtonOption, 113,18, 45,17, kTextReadingSpeed, kActionOptionReadingSpeed, 0, 0,0,0}, //read speed
194  {kPanelButtonOption, 113,37, 45,17, kTextMusic, kActionOptionMusic, 0, 0,0,0}, //music
195  {kPanelButtonOption, 113,56, 45,17, kTextSound, kActionOptionSound, 0, 0,0,0}, //sound-noise
196  {kPanelButtonOption, 13,79, 135,17, kTextQuitGame, kActionOptionQuitGame, 0, 0,0,0}, //quit
197  {kPanelButtonOption, 13,98, 135,17, kTextContinuePlaying, kActionOptionContinue, 0, 0,0,0}, //continue
198  {kPanelButtonOption, 164,98, 57,17, kTextLoad, kActionOptionLoad, 0, 0,0,0}, //load
199  {kPanelButtonOption, 241,98, 57,17, kTextSave, kActionOptionSaveGame, 0, 0,0,0}, //save
200  {kPanelButtonOptionSaveFiles, 166,20, 112,74, 0,'-',0, 0,0,0}, //savefiles
201 
202  {kPanelButtonOptionText,-1,4, 0,0, kTextGameOptions,'-',0, 0,0,0}, // text: game options
203  {kPanelButtonOptionText,5,18, 109,17, kTextReadingSpeed,'-',0, 0,0,0}, // text: read speed
204  {kPanelButtonOptionText,5,18, 109,17, kTextShowDialog,'-',0, 0,0,0}, // text: read speed
205  {kPanelButtonOptionText,5,37, 109,17, kTextMusic,'-',0, 0,0,0}, // text: music
206  {kPanelButtonOptionText,5,56, 109,17, kTextSound,'-',0, 0,0,0}, // text: noise
207 };
208 
209 static PanelButton ITE_OptionPanelButtons_ZH[] = {
210  {kPanelButtonOptionSlider, 284,19, 13,75, 0,'-',0, 0,0,0}, //slider-scroller
211  {kPanelButtonOption, 113,18, 45,17, kTextReadingSpeed, kActionOptionReadingSpeed, 0, 0,0,0}, //read speed
212  {kPanelButtonOption, 113,37, 45,17, kTextMusic, kActionOptionMusic, 0, 0,0,0}, //music
213  {kPanelButtonOption, 113,56, 45,17, kTextSound, kActionOptionSound, 0, 0,0,0}, //sound-noise
214  {kPanelButtonOption, 13,79, 135,17, kTextQuitGame, kActionOptionQuitGame, 0, 0,0,0}, //quit
215  {kPanelButtonOption, 13,98, 135,17, kTextContinuePlaying, kActionOptionContinue, 0, 0,0,0}, //continue
216  {kPanelButtonOption, 164,98, 57,17, kTextLoad, kActionOptionLoad, 0, 0,0,0}, //load
217  {kPanelButtonOption, 241,98, 57,17, kTextSave, kActionOptionSaveGame, 0, 0,0,0}, //save
218  {kPanelButtonOptionSaveFiles, 166,20, 112,74, 0,'-',0, 0,0,0}, //savefiles
219 
220  {kPanelButtonOptionText,9,0, 165,17, kTextGameOptions,'-',0, 0,0,0}, // text: game options
221  {kPanelButtonOptionText,2,18, 96,17, kTextReadingSpeed,'-',0, 0,0,0}, // text: read speed
222  {kPanelButtonOptionText,2,18, 80,17, kTextShowDialog,'-',0, 0,0,0}, // text: read speed
223  {kPanelButtonOptionText,2,37, 80,17, kTextMusic,'-',0, 0,0,0}, // text: music
224  {kPanelButtonOptionText,2,56, 80,17, kTextSound,'-',0, 0,0,0}, // text: noise
225 };
226 
227 static PanelButton ITE_QuitPanelButtons[] = {
228  {kPanelButtonQuit, 11,17, 60,16, kTextQuit,kActionOptionQuit,0, 0,0,0},
229  {kPanelButtonQuit, 121,17, 60,16, kTextCancel,kActionOptionCancel,0, 0,0,0},
230  {kPanelButtonQuitText, -1,5, 0,0, kTextQuitTheGameQuestion,'-',0, 0,0,0},
231 };
232 
233 static PanelButton ITE_LoadPanelButtons[] = {
234  {kPanelButtonLoad, 101,19, 60,16, kTextOK,kActionOptionOkay,0, 0,0,0},
235  {kPanelButtonLoadText, -1,5, 0,0, kTextLoadSuccessful,'-',0, 0,0,0},
236 };
237 
238 static PanelButton ITE_SavePanelButtons[] = {
239  {kPanelButtonSave, 11,37, 60,16, kTextSave,kActionOptionSave,0, 0,0,0},
240  {kPanelButtonSave, 101,37, 60,16, kTextCancel,kActionOptionCancel,0, 0,0,0},
241  {kPanelButtonSaveEdit, 26,17, 119,17, 0,'-',0, 0,0,0},
242  {kPanelButtonSaveText, -1,5, 0,0, kTextEnterSaveGameName,'-',0, 0,0,0},
243 };
244 
245 static PanelButton ITE_ProtectPanelButtons[] = {
246  {kPanelButtonProtectEdit, 26,17, 119,17, 0,'-',0, 0,0,0},
247  {kPanelButtonProtectText, -1,5, 0,0, kTextEnterProtectAnswer,'-',0, 0,0,0},
248 };
249 
250 /*
251 static PanelButton ITE_ProtectionPanelButtons[] = {
252  {kPanelButtonArrow, 0,0, 0,0, 0,'-',0, 0,0,0}, //TODO
253 };*/
254 
255 static const GameDisplayInfo ITE_DisplayInfo = {
256  320, 200, // logical width&height
257 
258  35, // scene path y offset
259  137, // scene height
260 
261  0, // status x offset
262  137, // status y offset
263  320, // status width
264  11, // status height
265  2, // status text y offset
266  kITEDOSColorGreen, // status text color
267  kITEDOSColorBlack, // status BG color
268  308,137, // save reminder pos
269  12,12, // save reminder w & h
270  6, // save reminder first sprite number
271  2, // number of save reminder sprites
272 
273  5, 4, // left portrait x, y offset
274  274, 4, // right portrait x, y offset
275 
276  8, 9, // inventory Up & Down button indexes
277  2, 4, // inventory rows, columns
278 
279  0, 148, // main panel offsets
280  ARRAYSIZE(ITE_MainPanelButtons),
281  ITE_MainPanelButtons,
282 
283  ITE_CONVERSE_MAX_TEXT_WIDTH,
284  ITE_CONVERSE_TEXT_HEIGHT,
285  ITE_CONVERSE_TEXT_LINES,
286  4, 5, // converse Up & Down button indexes
287  0, 148, // converse panel offsets
288  ARRAYSIZE(ITE_ConversePanelButtons),
289  ITE_ConversePanelButtons,
290 
291  8, 0, // save file index
292  8, // optionSaveFileVisible
293  8, 8, // option panel offsets
294  ARRAYSIZE(ITE_OptionPanelButtons),
295  ITE_OptionPanelButtons,
296 
297  64,54, // quit panel offsets
298  192,38, // quit panel width & height
299  ARRAYSIZE(ITE_QuitPanelButtons),
300  ITE_QuitPanelButtons,
301 
302  74, 53, // load panel offsets
303  172, 40, // load panel width & height
304  ARRAYSIZE(ITE_LoadPanelButtons),
305  ITE_LoadPanelButtons,
306 
307  2, // save edit index
308  74, 44, // save panel offsets
309  172, 58, // save panel width & height
310  ARRAYSIZE(ITE_SavePanelButtons),
311  ITE_SavePanelButtons,
312 
313  0, // protect edit index
314  74, 44, // protect panel offsets
315  172, 58, // protect panel width & height
316  ARRAYSIZE(ITE_ProtectPanelButtons),
317  ITE_ProtectPanelButtons
318 };
319 
320 static const GameDisplayInfo ITE_DisplayInfo_ZH = {
321  320, 200, // logical width&height
322 
323  35, // scene path y offset
324  137, // scene height
325 
326  0, // status x offset
327  137, // status y offset
328  320, // status width
329  14, // status height
330  0, // status text y offset
331  186, // status text color
332  15, // status BG color
333  308,137, // save reminder pos
334  12,12, // save reminder w & h
335  6, // save reminder first sprite number
336  2, // number of save reminder sprites
337 
338  5, 0, // left portrait x, y offset
339  274, 0, // right portrait x, y offset
340 
341  8, 9, // inventory Up & Down button indexes
342  2, 4, // inventory rows, columns
343 
344  0, 153, // main panel offsets
345  ARRAYSIZE(ITE_MainPanelButtons_ZH),
346  ITE_MainPanelButtons_ZH,
347 
348  ITE_CONVERSE_MAX_TEXT_WIDTH,
349  ITE_CONVERSE_TEXT_HEIGHT,
350  ITE_CONVERSE_TEXT_LINES,
351  4, 5, // converse Up & Down button indexes
352  0, 148, // converse panel offsets
353  ARRAYSIZE(ITE_ConversePanelButtons),
354  ITE_ConversePanelButtons,
355 
356  8, 0, // save file index
357  8, // optionSaveFileVisible
358  8, 8, // option panel offsets
359  ARRAYSIZE(ITE_OptionPanelButtons_ZH),
360  ITE_OptionPanelButtons_ZH,
361 
362  64,54, // quit panel offsets
363  192,38, // quit panel width & height
364  ARRAYSIZE(ITE_QuitPanelButtons),
365  ITE_QuitPanelButtons,
366 
367  74, 53, // load panel offsets
368  172, 40, // load panel width & height
369  ARRAYSIZE(ITE_LoadPanelButtons),
370  ITE_LoadPanelButtons,
371 
372  2, // save edit index
373  74, 44, // save panel offsets
374  172, 58, // save panel width & height
375  ARRAYSIZE(ITE_SavePanelButtons),
376  ITE_SavePanelButtons,
377 
378  0, // protect edit index
379  74, 44, // protect panel offsets
380  172, 58, // protect panel width & height
381  ARRAYSIZE(ITE_ProtectPanelButtons),
382  ITE_ProtectPanelButtons
383 };
384 
385 #if defined(ENABLE_IHNM)
386 
387 // IHNM
388 #define IHNM_CONVERSE_MAX_TEXT_WIDTH (485 - 8)
389 #define IHNM_CONVERSE_TEXT_HEIGHT 10
390 #define IHNM_CONVERSE_TEXT_LINES 11
391 
392 static PanelButton IHNM_MainPanelButtons[] = {
393  {kPanelButtonVerb, 106,12, 114,30, kVerbIHNMWalk, kActionWalkTo, 0, 0, 1,0},
394  {kPanelButtonVerb, 106,44, 114,30, kVerbIHNMLookAt, kActionLookAt, 0, 2, 3,0},
395  {kPanelButtonVerb, 106,76, 114,30, kVerbIHNMTake, kActionTake, 0, 4, 5,0},
396  {kPanelButtonVerb, 106,108, 114,30, kVerbIHNMUse, kActionUse, 0, 6, 7,0},
397  {kPanelButtonVerb, 223,12, 114,30, kVerbIHNMTalkTo, kActionTalkTo, 0, 8, 9,0},
398  {kPanelButtonVerb, 223,44, 114,30, kVerbIHNMSwallow, kActionSwallow, 0, 10,11,0},
399  {kPanelButtonVerb, 223,76, 114,30, kVerbIHNMGive, kActionGive, 0, 12,13,0},
400  {kPanelButtonVerb, 223,108, 114,30, kVerbIHNMPush, kActionPush, 0, 14,15,0},
401  {kPanelButtonArrow, 606,22, 20,25, -1,'[',0, 2,3,4}, // TODO: IHNM needs more states hre
402  {kPanelButtonArrow, 606,108, 20,25, 1,']',0, 6,7,8},
403 
404  {kPanelButtonInventory, 357 + 64*0,18, 54,54, 0,'-',0, 0,0,0},
405  {kPanelButtonInventory, 357 + 64*1,18, 54,54, 1,'-',0, 0,0,0},
406  {kPanelButtonInventory, 357 + 64*2,18, 54,54, 2,'-',0, 0,0,0},
407  {kPanelButtonInventory, 357 + 64*3,18, 54,54, 3,'-',0, 0,0,0},
408 
409  {kPanelButtonInventory, 357 + 64*0,80, 54,54, 4,'-',0, 0,0,0},
410  {kPanelButtonInventory, 357 + 64*1,80, 54,54, 5,'-',0, 0,0,0},
411  {kPanelButtonInventory, 357 + 64*2,80, 54,54, 6,'-',0, 0,0,0},
412  {kPanelButtonInventory, 357 + 64*3,80, 54,54, 7,'-',0, 0,0,0}
413 };
414 
415 static PanelButton IHNM_ConversePanelButtons[] = {
416  {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 0, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 0,'1',0, 0,0,0},
417  {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 1, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 1,'2',0, 0,0,0},
418  {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 2, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 2,'3',0, 0,0,0},
419  {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 3, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 3,'4',0, 0,0,0},
420  {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 4, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 4,'5',0, 0,0,0},
421  {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 5, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 5,'6',0, 0,0,0},
422  {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 6, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 6,'7',0, 0,0,0},
423  {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 7, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 7,'8',0, 0,0,0},
424  {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 8, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 8,'9',0, 0,0,0},
425  {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 9, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 9,'10',0, 0,0,0},
426  {kPanelButtonConverseText, 117,18 + IHNM_CONVERSE_TEXT_HEIGHT * 10, IHNM_CONVERSE_MAX_TEXT_WIDTH,IHNM_CONVERSE_TEXT_HEIGHT, 10,'11',0, 0,0,0},
427  {kPanelButtonArrow, 606,22, 20,25, -1,'[',0, 2,3,4}, // TODO: IHNM needs more states hre
428  {kPanelButtonArrow, 606,108, 20,25, 1,']',0, 6,7,8},
429 };
430 
431 static PanelButton IHNM_OptionPanelButtons[] = {
432  {kPanelButtonOptionSlider, 421,16, 16,138, 0,'-',0, 0,0,0}, //slider-scroller
433  {kPanelButtonOptionText,11,30, 139,21, kTextReadingSpeed,'-',0, 0,0,0}, // text: read speed
434  {kPanelButtonOptionText,11,55, 139,21, kTextMusic,'-',0, 0,0,0}, // text: music
435  {kPanelButtonOptionText,11,80, 139,21, kTextSound,'-',0, 0,0,0}, // text: noise
436  {kPanelButtonOptionText,11,105, 139,21, kTextVoices,'-',0, 0,0,0}, // text: voices
437  {kPanelButtonOption, 154,30, 79,23, kTextReadingSpeed,kActionOptionReadingSpeed,0, 0,0,0}, //read speed
438  {kPanelButtonOption, 154,55, 79,23, kTextMusic,kActionOptionMusic,0, 0,0,0}, //music
439  {kPanelButtonOption, 154,80, 79,23, kTextSound,kActionOptionSound,0, 0,0,0}, //sound-noise
440  {kPanelButtonOption, 154,105,79,23, kTextVoices,kActionOptionVoices,0, 0,0,0}, //voices
441  {kPanelButtonOption, 20,150, 200,25, kTextQuitGame,kActionOptionQuitGame,0, 0,0,0}, //quit
442  {kPanelButtonOption, 20,178, 200,25, kTextContinuePlaying,kActionOptionContinue,0, 0,0,0}, //continue
443  {kPanelButtonOptionSaveFiles, 244,18, 170,138, 0,'-',0, 0,0,0}, //savefiles
444  {kPanelButtonOption, 243,163, 79,23, kTextLoad,kActionOptionLoad,0, 0,0,0}, //load
445  {kPanelButtonOption, 334,163, 79,23, kTextSave,kActionOptionSaveGame,0, 0,0,0}, //save
446 };
447 
448 static PanelButton IHNM_QuitPanelButtons[] = {
449  {kPanelButtonQuit, 26,80, 80,25, kTextQuit,kActionOptionQuit,0, 0,0,0},
450  {kPanelButtonQuit, 156,80, 80,25, kTextCancel,kActionOptionCancel,0, 0,0,0},
451  {kPanelButtonQuitText, -1,30, 0,0, kTextQuitTheGameQuestion,'-',0, 0,0,0},
452 };
453 
454 static PanelButton IHNM_LoadPanelButtons[] = {
455  {kPanelButtonLoad, 26,80, 80,25, kTextOK,kActionOptionOkay,0, 0,0,0},
456  {kPanelButtonLoad, 156,80, 80,25, kTextCancel,kActionOptionCancel,0, 0,0,0},
457  {kPanelButtonLoadText, -1,30, 0,0, kTextLoadSavedGame,'-',0, 0,0,0},
458 };
459 
460 static PanelButton IHNM_SavePanelButtons[] = {
461  {kPanelButtonSave, 25,79, 80,25, kTextSave,kActionOptionSave,0, 0,0,0},
462  {kPanelButtonSave, 155,79, 80,25, kTextCancel,kActionOptionCancel,0, 0,0,0},
463  {kPanelButtonSaveEdit, 22,56, 216,17, 0,'-',0, 0,0,0},
464  {kPanelButtonSaveText, -1,30, 0,0, kTextEnterSaveGameName,'-',0, 0,0,0},
465 };
466 
467 #endif
468 
469 #ifdef ENABLE_IHNM
470 
471 static const GameDisplayInfo IHNM_DisplayInfo = {
472  640, 480, // logical width&height
473 
474  0, // scene path y offset
475  304, // scene height
476 
477  0, // status x offset
478  304, // status y offset
479  616, // status width
480  24, // status height
481  8, // status text y offset
482  253, // status text color
483  250, // status BG color
484  616, 304, // save reminder pos
485  24, 24, // save reminder w&h
486  0, // save reminder first sprite number
487  16, // number of save reminder sprites
488 
489  11, 12, // left portrait x, y offset
490  -1, -1, // right portrait x, y offset
491 
492  8, 9, // inventory Up & Down button indexes
493  2, 4, // inventory rows, columns
494 
495  0, 328, // main panel offsets
496  ARRAYSIZE(IHNM_MainPanelButtons),
497  IHNM_MainPanelButtons,
498 
499  IHNM_CONVERSE_MAX_TEXT_WIDTH,
500  IHNM_CONVERSE_TEXT_HEIGHT,
501  IHNM_CONVERSE_TEXT_LINES,
502  11, 12, // converse Up & Down button indexes
503  0, 328, // converse panel offsets
504  ARRAYSIZE(IHNM_ConversePanelButtons),
505  IHNM_ConversePanelButtons,
506 
507  11, 0, // save file index
508  15, // optionSaveFileVisible
509  92, 46, // option panel offsets
510  ARRAYSIZE(IHNM_OptionPanelButtons),
511  IHNM_OptionPanelButtons,
512 
513  190,94, // quit panel offsets
514  260,115, // quit panel width & height
515  ARRAYSIZE(IHNM_QuitPanelButtons),
516  IHNM_QuitPanelButtons,
517 
518  190, 94, // load panel offsets
519  260, 115, // load panel width & height
520  ARRAYSIZE(IHNM_LoadPanelButtons),
521  IHNM_LoadPanelButtons,
522 
523  2, // save edit index
524  190, 94, // save panel offsets
525  260, 115, // save panel width & height
526  ARRAYSIZE(IHNM_SavePanelButtons),
527  IHNM_SavePanelButtons,
528 
529  // No protection panel in IHNM
530  -1, // protect edit index
531  0, 0, // protect panel offsets
532  0, 0, // protect panel width & height
533  ARRAYSIZE(IHNM_SavePanelButtons),
534  IHNM_SavePanelButtons
535 };
536 #endif
537 
538 } // End of namespace Saga
539 
540 #endif
#define ARRAYSIZE(x)
Definition: util.h:91
Definition: displayinfo.h:29
Definition: displayinfo.h:43
Definition: actor.h:34