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