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 #ifndef TSAGE_BLUEFORCE_SCENES8_H
24 #define TSAGE_BLUEFORCE_SCENES8_H
25 
26 #include "common/scummsys.h"
27 #include "tsage/blue_force/blueforce_logic.h"
28 #include "tsage/blue_force/blueforce_speakers.h"
29 #include "tsage/converse.h"
30 #include "tsage/events.h"
31 #include "tsage/core.h"
32 #include "tsage/scenes.h"
33 #include "tsage/globals.h"
34 #include "tsage/sound.h"
35 
36 namespace TsAGE {
37 
38 namespace BlueForce {
39 
40 using namespace TsAGE;
41 
42 class Scene800: public SceneExt {
43 	/* Actions */
44 	class Action1 : public Action {
45 	public:
46 		void signal() override;
47 	};
48 
49 	/* Items */
50 	class Item1: public SceneHotspot {
51 	public:
52 		bool startAction(CursorType action, Event &event) override;
53 	};
54 	class Item2: public SceneHotspot {
55 	public:
56 		bool startAction(CursorType action, Event &event) override;
57 	};
58 
59 	/* Objects */
60 	class Doorway: public NamedObject {
61 	public:
62 		bool startAction(CursorType action, Event &event) override;
63 	};
64 	class Car1: public NamedObject {
65 	public:
66 		bool startAction(CursorType action, Event &event) override;
67 	};
68 	class Motorcycle: public NamedObject {
69 	public:
70 		bool startAction(CursorType action, Event &event) override;
71 	};
72 	class Lyle: public NamedObject {
73 	public:
74 		bool startAction(CursorType action, Event &event) override;
75 	};
76 	class Car2: public NamedObject {
77 	public:
78 		bool startAction(CursorType action, Event &event) override;
79 	};
80 
81 public:
82 	Action1 _action1;
83 	SequenceManager _sequenceManager;
84 	SpeakerJakeJacket _jakeJacketSpeaker;
85 	SpeakerLyleHat _lyleHatSpeaker;
86 	SpeakerGameText _gameTextSpeaker;
87 	Doorway _doorway;
88 	Car1 _car1;
89 	Motorcycle _motorcycle;
90 	Lyle _lyle;
91 	Car2 _car2;
92 	NamedObject _object6;
93 	Item1 _item1;
94 	Item2 _item2;
95 	SceneText _text;
96 
97 	void postInit(SceneObjectList *OwnerList = NULL) override;
98 	void signal() override;
99 	void dispatch() override;
100 };
101 
102 class Scene810: public SceneExt {
103 	/* Actions */
104 	class Action1: public Action {
105 	public:
106 		void signal() override;
107 	};
108 	class Action2: public Action {
109 	public:
110 		void signal() override;
111 	};
112 
113 	/* Items */
114 	class Map: public SceneHotspot {
115 	public:
116 		bool startAction(CursorType action, Event &event) override;
117 	};
118 	class Window: public SceneHotspot {
119 	public:
120 		bool startAction(CursorType action, Event &event) override;
121 	};
122 	class Bookcase: public SceneHotspot {
123 	public:
124 		bool startAction(CursorType action, Event &event) override;
125 	};
126 	class FaxMachine: public SceneHotspot {
127 	public:
128 		bool startAction(CursorType action, Event &event) override;
129 	};
130 	class GarbageCan: public SceneHotspot {
131 	public:
132 		bool startAction(CursorType action, Event &event) override;
133 	};
134 	class FileCabinets: public SceneHotspot {
135 	public:
136 		bool startAction(CursorType action, Event &event) override;
137 	};
138 	class CoffeeMaker: public SceneHotspot {
139 	public:
140 		bool startAction(CursorType action, Event &event) override;
141 	};
142 	class Shelves: public SceneHotspot {
143 	public:
144 		bool startAction(CursorType action, Event &event) override;
145 	};
146 	class MicroficheReader: public SceneHotspot {
147 	public:
148 		bool startAction(CursorType action, Event &event) override;
149 	};
150 	class Item10: public SceneHotspot {
151 	public:
152 		bool startAction(CursorType action, Event &event) override;
153 	};
154 	class Pictures: public SceneHotspot {
155 	public:
156 		bool startAction(CursorType action, Event &event) override;
157 	};
158 	class Item12: public SceneHotspot {
159 	public:
160 		bool startAction(CursorType action, Event &event) override;
161 	};
162 	class Background: public SceneHotspot {
163 	public:
164 		bool startAction(CursorType action, Event &event) override;
165 	};
166 	class Desk: public SceneHotspot {
167 	public:
168 		bool startAction(CursorType action, Event &event) override;
169 	};
170 	class Exit: public NamedHotspot {
171 	public:
172 		bool startAction(CursorType action, Event &event) override;
173 	};
174 
175 	/* Objects */
176 	class Lyle: public NamedObjectExt {
177 	public:
178 		bool startAction(CursorType action, Event &event) override;
179 	};
180 	class Chair: public NamedObject {
181 	public:
182 		bool startAction(CursorType action, Event &event) override;
183 	};
184 	class Object3: public NamedObject {
185 	public:
186 		bool startAction(CursorType action, Event &event) override;
187 	};
188 	class FaxMachineInset: public FocusObject {
189 	public:
190 		bool startAction(CursorType action, Event &event) override;
191 	};
192 	class Object5: public NamedObject {
193 	public:
194 		bool startAction(CursorType action, Event &event) override;
195 	};
196 	class Object7: public NamedObject {
197 	public:
198 		bool startAction(CursorType action, Event &event) override;
199 	};
200 public:
201 	Action1 _action1;
202 	Action2 _action2;
203 	SequenceManager _sequenceManager1, _sequenceManager2;
204 	SpeakerGameText _gameTextSpeaker;
205 	SpeakerJakeJacket _jakeJacketSpeaker;
206 	SpeakerJakeUniform _jakeUniformSpeaker;
207 	SpeakerLyleHat _lyleHatSpeaker;
208 	Lyle _lyle;
209 	Chair _chair;
210 	Object3 _object3;
211 	FaxMachineInset _faxMachineInset;
212 	Object5 _object5;
213 	NamedObject _object6;
214 	Object7 _object7;
215 	Map _map;
216 	Window _window;
217 	Bookcase _bookcase;
218 	FaxMachine _faxMachine;
219 	GarbageCan _garbageCan;
220 	FileCabinets _fileCabinets;
221 	CoffeeMaker _coffeeMaker;
222 	Shelves _shelves;
223 	MicroficheReader _microficheReader;
224 	Item10 _item10;
225 	Pictures _pictures;
226 	Item12 _item12;
227 	Background _background;
228 	Desk _desk;
229 	Exit _exit;
230 	ASoundExt _sound1;
231 	Rect _rect1, _rect2, _rect3;
232 	int _fieldA70, _fieldA74;
233 
234 	Scene810();
235 	void synchronize(Serializer &s) override;
236 	void postInit(SceneObjectList *OwnerList = NULL) override;
237 	void signal() override;
238 	void process(Event &event) override;
239 	void dispatch() override;
240 };
241 
242 class Scene820: public SceneExt {
243 	/* Objects */
244 	class PowerButton: public NamedObject {
245 	public:
246 		bool startAction(CursorType action, Event &event) override;
247 	};
248 	class ForwardButton: public NamedObject {
249 	public:
250 		bool startAction(CursorType action, Event &event) override;
251 	};
252 	class BackButton: public NamedObject {
253 	public:
254 		bool startAction(CursorType action, Event &event) override;
255 	};
256 public:
257 	SequenceManager _sequenceManager;
258 	ASoundExt _sound1;
259 	SpeakerGameText _gameTextSpeaker;
260 	PowerButton _powerButton;
261 	BackButton _backButton;
262 	ForwardButton _forwardButton;
263 	NamedObject _object4, _object5;
264 	NamedHotspot _item1;
265 	int _pageNumber;
266 
267 	Scene820();
268 	void synchronize(Serializer &s) override;
269 	void postInit(SceneObjectList *OwnerList = NULL) override;
270 	void signal() override;
271 };
272 
273 class Scene830: public PalettedScene {
274 	/* Items */
275 	class SouthEastExit: public NamedHotspot {
276 	public:
277 		bool startAction(CursorType action, Event &event) override;
278 	};
279 	class NoteBoard: public NamedHotspot {
280 	public:
281 		bool startAction(CursorType action, Event &event) override;
282 	};
283 
284 	/* Objects */
285 	class Lyle: public NamedObject {
286 	public:
287 		bool startAction(CursorType action, Event &event) override;
288 	};
289 	class Door: public NamedObject {
290 	public:
291 		bool startAction(CursorType action, Event &event) override;
292 	};
293 	class RentalBoat: public NamedObject {
294 	public:
295 		bool startAction(CursorType action, Event &event) override;
296 	};
297 	class Object5: public NamedObject {
298 	public:
299 		bool startAction(CursorType action, Event &event) override;
300 	};
301 
302 public:
303 	SequenceManager _sequenceManager;
304 	SpeakerGameText _gameTextSpeaker;
305 	SpeakerJakeJacket _jakeJacketSpeaker;
306 	SpeakerLyleHat _lyleHatSpeaker;
307 	NamedObject _object1, _lyle, _object6;
308 	Door _door;
309 	RentalBoat _rentalBoat;
310 	Object5 _object5;
311 	SouthEastExit _seExit;
312 	NoteBoard _noteBoard;
313 	NamedHotspot _item2, _item4, _item5;
314 	NamedHotspot _item6, _item7, _item8;
315 	ASoundExt _sound1;
316 	int _field18A4, _field18A6, _field18A8, _field18AA, _field18AC;
317 
318 	Scene830();
319 	void synchronize(Serializer &s) override;
320 	void postInit(SceneObjectList *OwnerList = NULL) override;
321 	void remove() override;
322 	void signal() override;
323 	void process(Event &event) override;
324 	void dispatch() override;
325 };
326 
327 class Scene840: public PalettedScene {
328 	/* Items */
329 	class Coins: public NamedHotspot {
330 	public:
331 		bool startAction(CursorType action, Event &event) override;
332 	};
333 	class Exit: public NamedHotspot {
334 	public:
335 		bool startAction(CursorType action, Event &event) override;
336 	};
337 
338 	/* Objects */
339 	class BoatKeysInset: public FocusObject {
340 		class RentalKeys: public NamedObject {
341 		public:
342 			bool startAction(CursorType action, Event &event) override;
343 		};
344 		class WaveKeys: public NamedObject {
345 		public:
346 			bool startAction(CursorType action, Event &event) override;
347 		};
348 	public:
349 		RentalKeys _rentalKeys;
350 		WaveKeys _waveKeys;
351 		bool _usedRentalKeys,_usedWaveKeys;
352 
353 		void synchronize(Serializer &s) override;
354 		void postInit(SceneObjectList *OwnerList = NULL) override;
355 		void remove() override;
356 		void process(Event &event) override;
357 		bool startAction(CursorType action, Event &event) override;
358 	};
359 	class BoatKeys: public NamedObject {
360 	public:
361 		bool startAction(CursorType action, Event &event) override;
362 	};
363 	class Carter: public NamedObject {
364 	public:
365 		bool startAction(CursorType action, Event &event) override;
366 	};
367 
368 public:
369 	SequenceManager _sequenceManager1, _sequenceManager2;
370 	NamedObject _object1;
371 	BoatKeysInset _boatKeysInset;
372 	NamedObject _doors;
373 	BoatKeys _boatKeys;
374 	Carter _carter;
375 	NamedObject _lyle;
376 	Coins _coins;
377 	NamedHotspot _item2, _item3, _item4, _item5, _item6;
378 	NamedHotspot _item7, _item8, _item9, _item10, _item11;
379 	NamedHotspot _item12, _item13, _item14, _item15;
380 	NamedHotspot _item16, _item17, _item18;
381 	Exit _exit;
382 	SpeakerGameText _gameTextSpeaker;
383 	SpeakerJakeJacket _jakeJacketSpeaker;
384 	SpeakerJakeUniform _jakeUniformSpeaker;
385 	SpeakerCarter _carterSpeaker;
386 	int _field1ABA, _field1ABC, _field1ABE, _field1AC0;
387 	int _field1AC2, _field1AC4, _field1AC6;
388 
389 	Scene840();
390 	void synchronize(Serializer &s) override;
391 	void postInit(SceneObjectList *OwnerList = NULL) override;
392 	void signal() override;
393 	void process(Event &event) override;
394 	void dispatch() override;
395 };
396 
397 class Scene850: public SceneExt {
398 	/* Timers */
399 	class Timer1: public Timer {
400 	public:
401 		void signal() override;
402 	};
403 public:
404 	SequenceManager _sequenceManager;
405 	Timer1 _timer;
406 	NamedObject _object1;
407 	ASoundExt _sound1;
408 
409 	void postInit(SceneObjectList *OwnerList = NULL) override;
410 	void remove() override;
411 	void signal() override;
412 };
413 
414 class Scene860: public SceneExt {
415 	/* Actions */
416 	class Action1: public Action {
417 	public:
418 		void signal() override;
419 	};
420 public:
421 	SequenceManager _sequenceManager;
422 	NamedObject _deadBody, _object2;
423 	NamedHotspot _item1;
424 	Action1 _action1;
425 	Rect _swRect, _neRect, _yachtRect;
426 	ASoundExt _sound1;
427 	int _field87E, _field880, _field886, _field888;
428 	Common::Point _destPos;
429 
430 	Scene860();
431 	void synchronize(Serializer &s) override;
432 	void postInit(SceneObjectList *OwnerList = NULL) override;
433 	void signal() override;
434 	void process(Event &event) override;
435 	void dispatch() override;
436 };
437 
438 class Scene870: public SceneExt {
439 	/* Actions */
440 	class Action1: public Action {
441 	public:
442 		void signal() override;
443 	};
444 
445 	/* Objects */
446 	class Lyle: public NamedObjectExt {
447 	public:
448 		bool startAction(CursorType action, Event &event) override;
449 	};
450 	class Green: public NamedObjectExt {
451 	public:
452 		bool startAction(CursorType action, Event &event) override;
453 	};
454 	class CrateInset: public FocusObject {
455 		class Jar: public NamedObjectExt {
456 		public:
457 			bool startAction(CursorType action, Event &event) override;
458 		};
459 		class Rags: public NamedObjectExt {
460 		public:
461 			bool startAction(CursorType action, Event &event) override;
462 		};
463 	private:
464 		void initContents();
465 	public:
466 		Jar _jar;
467 		Rags _rags;
468 
469 		void postInit(SceneObjectList *OwnerList = NULL) override;
470 		void remove() override;
471 		bool startAction(CursorType action, Event &event) override;
472 	};
473 
474 	/* Items */
475 	class Boat: public NamedHotspot {
476 	public:
477 		bool startAction(CursorType action, Event &event) override;
478 	};
479 	class Crate: public NamedHotspot {
480 	public:
481 		bool startAction(CursorType action, Event &event) override;
482 	};
483 	class Exit: public NamedHotspot {
484 	public:
485 		bool startAction(CursorType action, Event &event) override;
486 	};
487 public:
488 	SequenceManager _sequenceManager;
489 	SpeakerGameText _gameTextSpeaker;
490 	SpeakerJakeJacket _jakeJacketSpeaker;
491 	SpeakerLyleHat _lyleHatSpeaker;
492 	SpeakerGreen _greenSpeaker;
493 	Boat _boat;
494 	Crate _crate;
495 	Exit _exit;
496 	NamedObject _yacht;
497 	Lyle _lyle;
498 	Green _green;
499 	NamedObject _object4, _object5, _object6;
500 	CrateInset _crateInset;
501 	NamedHotspot _lumber, _firePit, _water, _boulders;
502 	NamedHotspot _palmTrees, _sand, _farShore, _item11;
503 	Action1 _action1;
504 	int _field1662, _field1664;
505 
506 	Scene870();
507 	void synchronize(Serializer &s) override;
508 	void postInit(SceneObjectList *OwnerList = NULL) override;
509 	void remove() override;
510 	void signal() override;
511 	void process(Event &event) override;
512 	void dispatch() override;
513 
514 	void startStrip(int stripNumber);
515 };
516 
517 class Scene880: public SceneExt {
518 	/* Actions */
519 	class Action1: public Action {
520 	private:
521 		static void SequenceManager_callbackProc(int v1, int v2);
522 	public:
523 		void signal() override;
524 	};
525 
526 	/* Objects */
527 	class Object4: public NamedObjectExt {
528 	public:
529 		bool startAction(CursorType action, Event &event) override;
530 	};
531 
532 	/* Items */
533 	class NorthExit: public NamedHotspot {
534 	public:
535 		bool startAction(CursorType action, Event &event) override;
536 	};
537 	class SouthEastExit: public NamedHotspot {
538 	public:
539 		bool startAction(CursorType action, Event &event) override;
540 	};
541 private:
542 	static void handleAction(Action *action);
543 public:
544 	SequenceManager _sequenceManager1, _sequenceManager2, _sequenceManager3;
545 	SpeakerGameText _gameTextSpeaker;
546 	SpeakerJakeJacket _jakeJacketSpeaker;
547 	SpeakerLyleHat _lyleHatSpeaker;
548 	Action1 _action1;
549 	NamedObject _object1, _object2, _object3;
550 	Object4 _object4;
551 	NamedObject _object5, _object6, _object7;
552 	NamedHotspot _background;
553 	NorthExit _northExit;
554 	SouthEastExit _seExit;
555 	int _seqNumber;
556 
557 	Scene880();
558 	void synchronize(Serializer &s) override;
559 	void postInit(SceneObjectList *OwnerList = NULL) override;
560 	void signal() override;
561 	void process(Event &event) override;
562 	void dispatch() override;
563 };
564 
565 } // End of namespace BlueForce
566 
567 } // End of namespace TsAGE
568 
569 #endif
570