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_SCENES4_H
24 #define TSAGE_BLUEFORCE_SCENES4_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 Scene410: public SceneExt {
43 	/* Actions */
44 	class Action1: public Action {
45 	public:
46 		void signal() override;
47 	};
48 	class Action2: public Action {
49 	public:
50 		void signal() override;
51 	};
52 	class Action3: public Action {
53 	public:
54 		void signal() override;
55 	};
56 	class Action4: public Action {
57 	public:
58 		void signal() override;
59 	};
60 	class Action5: public Action {
61 	public:
62 		void signal() override;
63 	};
64 	class Action6: public Action {
65 	public:
66 		void signal() override;
67 	};
68 	class Action7: public Action {
69 	public:
70 		void signal() override;
71 	};
72 
73 	/* Objects */
74 	class Driver: public NamedObject {
75 	public:
76 		bool startAction(CursorType action, Event &event) override;
77 	};
78 	class Passenger: public NamedObject {
79 	public:
80 		bool startAction(CursorType action, Event &event) override;
81 	};
82 	class Harrison: public NamedObject {
83 	public:
84 		bool startAction(CursorType action, Event &event) override;
85 	};
86 
87 	/* Items */
88 	class Motorcycle: public NamedHotspot {
89 	public:
90 		bool startAction(CursorType action, Event &event) override;
91 	};
92 	class TruckFront: public NamedHotspot {
93 	public:
94 		bool startAction(CursorType action, Event &event) override;
95 	};
96 public:
97 	SequenceManager _sequenceManager1, _sequenceManager2, _sequenceManager3;
98 	Driver _driver;
99 	Passenger _passenger;
100 	Harrison _harrison;
101 	NamedObject _patrolCar, _object5, _object6;
102 	NamedHotspot _background;
103 	Motorcycle _motorcycle;
104 	NamedHotspot _truckBack;
105 	TruckFront _truckFront;
106 	Action1 _action1;
107 	Action2 _action2;
108 	Action3 _action3;
109 	Action4 _action4;
110 	Action5 _action5;
111 	Action6 _action6;
112 	Action7 _action7;
113 	SpeakerGameText _gameTextSpeaker;
114 	SpeakerJakeUniform _jakeUniformSpeaker;
115 	SpeakerHarrison _harrisonSpeaker;
116 	SpeakerDriver _driverSpeaker;
117 	SpeakerShooter _shooterSpeaker;
118 	ASoundExt _sound1;
119 	int _action1Count, _talkCount;
120 	bool _harrissonTalkFl;
121 	bool _cuffedDriverFl;
122 	bool _cuffedPassengerFl;
123 	bool _getDriverFl;
124 	bool _driverOutOfTruckFl, _harrisonMovedFl;
125 
126 	Scene410();
127 	void postInit(SceneObjectList *OwnerList = NULL) override;
128 	void synchronize(Serializer &s) override;
129 	void signal() override;
130 	void process(Event &event) override;
131 	void dispatch() override;
132 };
133 
134 class Scene415: public SceneExt {
135 	/* Objects */
136 	class GunInset: public FocusObject {
137 	public:
138 		bool startAction(CursorType action, Event &event) override;
139 		void remove() override;
140 	};
141 	class GunAndWig: public NamedObject {
142 	public:
143 		bool startAction(CursorType action, Event &event) override;
144 	};
145 	class BulletsInset: public FocusObject {
146 	public:
147 		bool startAction(CursorType action, Event &event) override;
148 		void remove() override;
149 	};
150 	class DashDrawer: public NamedObject {
151 	public:
152 		bool startAction(CursorType action, Event &event) override;
153 	};
154 	class TheBullets: public NamedObject {
155 	public:
156 		bool startAction(CursorType action, Event &event) override;
157 	};
158 
159 	/* Items */
160 	class Lever: public NamedHotspot {
161 	public:
162 		bool startAction(CursorType action, Event &event) override;
163 	};
164 private:
165 	void showBullets();
166 	void showGunAndWig();
167 public:
168 	SequenceManager _sequenceManager;
169 	GunInset _gunInset;
170 	GunAndWig _gunAndWig;
171 	BulletsInset _bulletsInset;
172 	DashDrawer _dashDrawer;
173 	TheBullets _theBullets;
174 	NamedObject _animatedSeat;
175 	NamedHotspot _item1, _steeringWheel, _horn, _dashboard;
176 	NamedHotspot _seat, _windowLever, _item7, _seatBelt;
177 	Lever _lever;
178 	SpeakerJakeRadio _jakeRadioSpeaker;
179 	bool _scoreWigRapFlag, _scoreBulletRapFlag;
180 
181 	Scene415();
182 	void postInit(SceneObjectList *OwnerList = NULL) override;
183 	void synchronize(Serializer &s) override;
184 	void signal() override;
185 	void dispatch() override;
186 };
187 
188 class Scene440: public SceneExt {
189 	/* Objects */
190 	class Doorway: public NamedObject {
191 	public:
192 		bool startAction(CursorType action, Event &event) override;
193 	};
194 	class Vechile: public NamedObject {
195 	public:
196 		bool startAction(CursorType action, Event &event) override;
197 	};
198 	class Lyle: public NamedObject {
199 	public:
200 		bool startAction(CursorType action, Event &event) override;
201 	};
202 
203 	/* Items */
204 	class Item1: public NamedHotspot {
205 	public:
206 		bool startAction(CursorType action, Event &event) override;
207 	};
208 public:
209 	SequenceManager _sequenceManager;
210 	SpeakerGameText _gameTextSpeaker;
211 	Doorway _doorway;
212 	Vechile _vechile;
213 	Lyle _lyle;
214 	Item1 _item1;
215 
216 	void postInit(SceneObjectList *OwnerList = NULL) override;
217 	void signal() override;
218 };
219 
220 class Scene450: public SceneExt {
221 	/* Objects */
222 	class Weasel: public NamedObjectExt {
223 	public:
224 		bool startAction(CursorType action, Event &event) override;
225 	};
226 	class Object2: public NamedObject {
227 	public:
228 		bool startAction(CursorType action, Event &event) override;
229 	};
230 	class PinBoy: public NamedObject {
231 	public:
232 		bool startAction(CursorType action, Event &event) override;
233 	};
234 	class Manager: public NamedObject {
235 	public:
236 		bool startAction(CursorType action, Event &event) override;
237 	};
238 
239 	/* Items */
240 	class Exit: public NamedHotspot {
241 	public:
242 		bool startAction(CursorType action, Event &event) override;
243 	};
244 public:
245 	SequenceManager _sequenceManager;
246 	SpeakerGameText _gameTextSpeaker;
247 	SpeakerLyleHat _lyleHatSpeaker;
248 	SpeakerJakeJacket _jakeJacketSpeaker;
249 	SpeakerJakeUniform _jakeUniformSpeaker;
250 	SpeakerEugene _eugeneSpeaker;
251 	SpeakerWeasel _weaselSpeaker;
252 	SpeakerBilly _billySpeaker;
253 	Weasel _weasel;
254 	NamedObject _object2;
255 	PinBoy _pinBoy;
256 	Manager _manager;
257 	NamedObject _door, _counterDoor;
258 	Exit _exit;
259 	NamedHotspot _interior, _shelf, _counter;
260 	bool _managerCallsWeaselFl;
261 	bool _talkManagerFl;
262 
263 	Scene450();
264 	void synchronize(Serializer &s) override;
265 	void postInit(SceneObjectList *OwnerList = NULL) override;
266 	void signal() override;
267 	void process(Event &event) override;
268 };
269 
270 } // End of namespace BlueForce
271 
272 } // End of namespace TsAGE
273 
274 #endif
275