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
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (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, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 *
21 */
22
23 #include "graphics/macgui/macwindowmanager.h"
24 #include "graphics/macgui/macmenu.h"
25
26 #include "pink/pink.h"
27 #include "pink/director.h"
28 #include "pink/objects/actors/lead_actor.h"
29
30 namespace Pink {
31
32 enum {
33 kNewGameAction = 0,
34 kLoadSave,
35 kSaveAction,
36 kSaveAsAction,
37 kSongsAction,
38 kSoundSettingsAction,
39 kLastSavesAction,
40 kPauseAction,
41 kExitAction
42 };
43
44 enum {
45 kShowContent = 9,
46 kShowGreece,
47 kShowIndonesia,
48 kShowIsrael,
49 kShowKenya,
50 kShowRussia
51 };
52
53 enum {
54 kShowPDAAction = 15,
55
56 kShowAustraliaArt = 16,
57 kShowAustraliaCloth,
58 kShowAustraliaFood,
59 kShowAustraliaHistory,
60 kShowAustraliaNature,
61 kShowAustraliaPeople,
62 kShowAustraliaPlaces,
63 kShowAustraliaReligion,
64
65 kShowBhutanArt = 24,
66 kShowBhutanCloth,
67 kShowBhutanFood,
68 kShowBhutanHistory,
69 kShowBhutanNature,
70 kShowBhutanPeople,
71 kShowBhutanPlaces,
72 kShowBhutanReligion,
73
74 kShowChinaArt = 32,
75 kShowChinaCloth,
76 kShowChinaFood,
77 kShowChinaHistory,
78 kShowChinaNature,
79 kShowChinaPeople,
80 kShowChinaPlaces,
81 kShowChinaReligion,
82
83 kShowEnglandArt = 40,
84 kShowEnglandCloth,
85 kShowEnglandFood,
86 kShowEnglandHistory,
87 kShowEnglandNature,
88 kShowEnglandPeople,
89 kShowEnglandPlaces,
90 kShowEnglandReligion,
91
92 kShowEgyptArt = 48,
93 kShowEgyptCloth,
94 kShowEgyptFood,
95 kShowEgyptHistory,
96 kShowEgyptNature,
97 kShowEgyptPeople,
98 kShowEgyptPlaces,
99 kShowEgyptReligion,
100
101 kShowIndiaArt = 56,
102 kShowIndiaCloth,
103 kShowIndiaFood,
104 kShowIndiaHistory,
105 kShowIndiaNature,
106 kShowIndiaPeople,
107 kShowIndiaPlaces,
108 kShowIndiaReligion
109 };
110
111 enum {
112 kShowGameWebPage = 64,
113 kShowTechSupport,
114 kShowWinnnerPage,
115 kShowWanderlustInteractive,
116 kShowMGM,
117 kShowDiagnostics,
118 kShowAbout
119 };
120
menuCommandsCallback(int action,Common::U32String &,void * data)121 static void menuCommandsCallback(int action, Common::U32String &, void *data) {
122 PinkEngine *engine = (PinkEngine *)data;
123 bool isPeril = engine->isPeril();
124 if (!isPeril && action > 14) {
125 action += 49;
126 } else if (isPeril && action >= 9) {
127 action += 6;
128 }
129 engine->executeMenuCommand(action);
130 }
131
initMenu(Common::PEResources & exeResources)132 void PinkEngine::initMenu(Common::PEResources &exeResources) {
133 _director->getWndManager().setEnginePauseCallback(this, &pauseEngine);
134
135 _menu = Graphics::MacMenu::createMenuFromPEexe(exeResources, &_director->getWndManager());
136 _menu->calcDimensions();
137 _menu->setCommandsCallback(&menuCommandsCallback, this);
138 }
139
executeMenuCommand(uint id)140 void PinkEngine::executeMenuCommand(uint id) {
141 switch (id) {
142 case kNewGameAction: {
143 const Common::String moduleName = _modules[0]->getName();
144 initModule(moduleName, "", nullptr);
145 break;
146 }
147 case kLoadSave:
148 case kSaveAction:
149 case kSaveAsAction:
150 case kSoundSettingsAction:
151 case kLastSavesAction:
152 case kPauseAction:
153 case kExitAction:
154 openMainMenuDialog();
155 break;
156 case kSongsAction:
157 initModule("Muzik", "", nullptr);
158 break;
159
160 case kShowPDAAction:
161 _actor->loadPDA(kNavigatePage);
162 break;
163
164 case kShowAustraliaArt:
165 _actor->loadPDA("AUSART");
166 break;
167 case kShowAustraliaCloth:
168 _actor->loadPDA("AUSCLO");
169 break;
170 case kShowAustraliaFood:
171 _actor->loadPDA("AUSFOO");
172 break;
173 case kShowAustraliaHistory:
174 _actor->loadPDA("AUSHIS");
175 break;
176 case kShowAustraliaNature:
177 _actor->loadPDA("AUSNAT");
178 break;
179 case kShowAustraliaPeople:
180 _actor->loadPDA("AUSPEO");
181 break;
182 case kShowAustraliaPlaces:
183 _actor->loadPDA("AUSPLA");
184 break;
185 case kShowAustraliaReligion:
186 _actor->loadPDA("AUSREL");
187 break;
188
189 case kShowBhutanArt:
190 _actor->loadPDA("BHUART");
191 break;
192 case kShowBhutanCloth:
193 _actor->loadPDA("BHUCLO");
194 break;
195 case kShowBhutanFood:
196 _actor->loadPDA("BHUFOO");
197 break;
198 case kShowBhutanHistory:
199 _actor->loadPDA("BHUHIS");
200 break;
201 case kShowBhutanNature:
202 _actor->loadPDA("BHUNAT");
203 break;
204 case kShowBhutanPeople:
205 _actor->loadPDA("BHUPEO");
206 break;
207 case kShowBhutanPlaces:
208 _actor->loadPDA("BHUPLA");
209 break;
210 case kShowBhutanReligion:
211 _actor->loadPDA("BHUREL");
212 break;
213
214 case kShowChinaArt:
215 _actor->loadPDA("CHIART");
216 break;
217 case kShowChinaCloth:
218 _actor->loadPDA("CHICLO");
219 break;
220 case kShowChinaFood:
221 _actor->loadPDA("CHIFOO");
222 break;
223 case kShowChinaHistory:
224 _actor->loadPDA("CHIHIS");
225 break;
226 case kShowChinaNature:
227 _actor->loadPDA("CHINAT");
228 break;
229 case kShowChinaPeople:
230 _actor->loadPDA("CHIPEO");
231 break;
232 case kShowChinaPlaces:
233 _actor->loadPDA("CHIPLA");
234 break;
235 case kShowChinaReligion:
236 _actor->loadPDA("CHIREL");
237 break;
238
239 case kShowEnglandArt:
240 _actor->loadPDA("BRIART");
241 break;
242 case kShowEnglandCloth:
243 _actor->loadPDA("BRICLO");
244 break;
245 case kShowEnglandFood:
246 _actor->loadPDA("BRIFOO");
247 break;
248 case kShowEnglandHistory:
249 _actor->loadPDA("BRIHIS");
250 break;
251 case kShowEnglandNature:
252 _actor->loadPDA("BRINAT");
253 break;
254 case kShowEnglandPeople:
255 _actor->loadPDA("BRIPEO");
256 break;
257 case kShowEnglandPlaces:
258 _actor->loadPDA("BRIPLA");
259 break;
260 case kShowEnglandReligion:
261 _actor->loadPDA("BRIREL");
262 break;
263
264 case kShowEgyptArt:
265 _actor->loadPDA("BRIART");
266 break;
267 case kShowEgyptCloth:
268 _actor->loadPDA("BRICLO");
269 break;
270 case kShowEgyptFood:
271 _actor->loadPDA("BRIFOO");
272 break;
273 case kShowEgyptHistory:
274 _actor->loadPDA("BRIHIS");
275 break;
276 case kShowEgyptNature:
277 _actor->loadPDA("BRINAT");
278 break;
279 case kShowEgyptPeople:
280 _actor->loadPDA("BRIPEO");
281 break;
282 case kShowEgyptPlaces:
283 _actor->loadPDA("BRIPLA");
284 break;
285 case kShowEgyptReligion:
286 _actor->loadPDA("BRIREL");
287 break;
288
289 case kShowIndiaArt:
290 _actor->loadPDA("INDART");
291 break;
292 case kShowIndiaCloth:
293 _actor->loadPDA("INDCLO");
294 break;
295 case kShowIndiaFood:
296 _actor->loadPDA("INDFOO");
297 break;
298 case kShowIndiaHistory:
299 _actor->loadPDA("INDHIS");
300 break;
301 case kShowIndiaNature:
302 _actor->loadPDA("INDNAT");
303 break;
304 case kShowIndiaPeople:
305 _actor->loadPDA("INDPEO");
306 break;
307 case kShowIndiaPlaces:
308 _actor->loadPDA("INDPLA");
309 break;
310 case kShowIndiaReligion:
311 _actor->loadPDA("INDREL");
312 break;
313
314 case kShowContent:
315 _actor->loadPDA("TOC");
316 break;
317 case kShowGreece:
318 _actor->loadPDA("GREOVER");
319 break;
320 case kShowIndonesia:
321 _actor->loadPDA("INDOVER");
322 break;
323 case kShowIsrael:
324 _actor->loadPDA("ISROVER");
325 break;
326 case kShowKenya:
327 _actor->loadPDA("KENOVER");
328 break;
329 case kShowRussia:
330 _actor->loadPDA("SIBOVER");
331 break;
332
333 default:
334 break;
335 }
336 }
337
338 } // End of namespace Pink
339