ScummVM API documentation
group0.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 #ifndef GNAP_GROUP0_H
23 #define GNAP_GROUP0_H
24 
25 #include "gnap/debugger.h"
26 
27 namespace Gnap {
28 
29 enum {
30  kHS01Platypus = 0,
31  kHS01ExitTruck = 1,
32  kHS01Mud = 2,
33  kHS01Pigs = 3,
34  kHS01Spaceship = 4,
35  kHS01Device = 5,
36  kHS01WalkArea1 = 6,
37  kHS01WalkArea2 = 7,
38  kHS01WalkArea3 = 8,
39  kHS01WalkArea4 = 9,
40  kHS01WalkArea5 = 10,
41  kHS01WalkArea6 = 11,
42  kHS01WalkArea7 = 12,
43  kHS01WalkArea8 = 13
44 };
45 
46 enum {
47  kHS02Platypus = 0,
48  kHS02Chicken = 1,
49  kHS02Truck1 = 2,
50  kHS02Truck2 = 3,
51  kHS02TruckGrill = 4,
52  kHS02Device = 5,
53  kHS02ExitHouse = 6,
54  kHS02ExitBarn = 7,
55  kHS02ExitCreek = 8,
56  kHS02ExitPigpen = 9,
57  kHS02WalkArea1 = 10,
58  kHS02WalkArea2 = 11,
59  kHS02WalkArea3 = 12,
60  kHS02WalkArea4 = 13
61 };
62 
63 enum {
64  kHS03Platypus = 0,
65  kHS03Grass = 1,
66  kHS03ExitTruck = 2,
67  kHS03Creek = 3,
68  kHS03TrappedPlatypus = 4,
69  kHS03Device = 5,
70  kHS03WalkAreas1 = 6,
71  kHS03WalkAreas2 = 7,
72  kHS03PlatypusWalkArea = 8,
73  kHS03WalkAreas3 = 9
74 };
75 
76 enum {
77  kHS04Platypus = 0,
78  kHS04Twig = 1,
79  kHS04Dog = 2,
80  kHS04Axe = 3,
81  kHS04Door = 4,
82  kHS04ExitTruck = 5,
83  kHS04Device = 6,
84  kHS04Window = 7,
85  kHS04ExitBarn = 8,
86  kHS04WalkArea1 = 9,
87  kHS04WalkArea2 = 10
88 };
89 
90 enum {
91  kHS05Platypus = 0,
92  kHS05Haystack = 1,
93  kHS05Padlock = 2,
94  kHS05Ladder = 3,
95  kHS05ExitHouse = 4,
96  kHS05Chicken = 5,
97  kHS05Device = 6,
98  kHS05WalkArea1 = 7,
99  kHS05WalkArea2 = 8,
100  kHS05WalkArea3 = 9
101 };
102 
103 enum {
104  kHS06Platypus = 0,
105  kHS06Gas = 1,
106  kHS06Ladder = 2,
107  kHS06Horse = 3,
108  kHS06ExitOutsideBarn = 4,
109  kHS06Device = 5,
110  kHS06WalkArea1 = 6,
111  kHS06WalkArea2 = 7,
112  kHS06WalkArea3 = 8,
113  kHS06WalkArea4 = 9,
114  kHS06WalkArea5 = 10
115 };
116 
117 enum {
118  kHS07Platypus = 0,
119  kHS07ExitHouse = 1,
120  kHS07Dice = 2,
121  kHS07Device = 3,
122  kHS07WalkArea1 = 4,
123  kHS07WalkArea2 = 5,
124  kHS07WalkArea3 = 6
125 };
126 
127 enum {
128  kH08SPlatypus = 0,
129  kHS08ExitBackdoor = 1,
130  kHS08ExitCrash = 2,
131  kHS08Man = 3,
132  kHS08Door = 4,
133  kHS08Meat = 5,
134  kHS08Bone = 6,
135  kHS08Toy = 7,
136  kHS08WalkArea1 = 8,
137  kHS08Device = 9,
138  kHS08WalkArea2 = 10
139 };
140 
141 enum {
142  kHS09Platypus = 0,
143  kHS09ExitKitchen = 1,
144  kHS09ExitHouse = 2,
145  kHS09Trash = 3,
146  kHS09Device = 4,
147  kHS09WalkArea1 = 5,
148  kHS09WalkArea2 = 6,
149  kHS09WalkArea3 = 7
150 };
151 
152 enum {
153  kAS01LookSpaceship = 1,
154  kAS01LookSpaceshipDone = 2,
155  kAS01LeaveScene = 3,
156  kAS01TakeMud = 5,
157  kAS01LookPigs = 6,
158  kAS01UsePigs = 7
159 };
160 
161 enum {
162  kAS02UseTruckNoKeys = 0,
163  kAS02UseGasWithTruck = 1,
164  kAS02UseTruckGas = 2,
165  kAS02UseTruckNoGas = 3,
166  kAS02GrabTruckGrill = 5,
167  kAS02LeaveScene = 6,
168  kAS02TalkChicken = 7,
169  kAS02GrabChicken = 8,
170  kAS02GrabChickenDone = 9,
171  kAS02UseTruckNoKeysDone = 11,
172  kAS02UseGasWithTruckDone = 12,
173  kAS02UseTwigWithChicken = 16
174 };
175 
176 enum {
177  kAS03LeaveScene = 0,
178  kAS03FreePlatypus = 1,
179  kAS03HypnotizePlat = 2,
180  kAS03HypnotizeScaredPlat= 3,
181  kAS03FreePlatypusDone = 4,
182  kAS03GrabPlatypus = 5,
183  kAS03GrabCreek = 6,
184  kAS03GrabCreekDone = 7,
185  kAS03GrabScaredPlatypus = 8
186 };
187 
188 enum {
189  kAS04OpenDoor = 1,
190  kAS04GetKeyFirst = 2,
191  kAS04GetKeyAnother = 3,
192  kAS04LeaveScene = 4,
193  kAS04GetKeyFirstDone = 6,
194  kAS04GetKeyFirst2 = 7,
195  kAS04GetKeyAnother2 = 8,
196  kAS04GetKeyAnotherDone = 9,
197  kAS04OpenDoorDone = 10,
198  kAS04GrabDog = 12,
199  kAS04GrabAxe = 13
200 };
201 
202 enum {
203  kAS05PlatSearchHaystack = 0,
204  kAS05TryPickPadlock = 1,
205  kAS05PickPadlock = 2,
206  kAS05TalkChicken = 3,
207  kAS05GrabChicken = 4,
208  kAS05GrabLadder = 5,
209  kAS05EnterBarn = 6,
210  kAS05UseTwigWithChicken = 11,
211  kAS05LeaveScene = 12
212 };
213 
214 enum {
215  kAS06TryToGetGas = 0,
216  kAS06TryToClimbLadder = 1,
217  kAS06TryToClimbLadderDone = 2,
218  kAS06TalkToHorse = 3,
219  kAS06UseTwigOnHorse = 4,
220  kAS06LeaveScene = 5
221 };
222 
223 enum {
224  kAS07Wait = 0,
225  kAS07LeaveScene = 1
226 };
227 
228 enum {
229  kAS08LeaveScene = 0,
230  kAS08TalkMan = 1,
231  kAS08LookMan = 2,
232  kAS08LookDog = 3,
233  kAS08GrabDog = 4,
234  kAS08TalkDog = 5,
235  kAS08PlatWithMan = 6,
236  kAS08PlatWithDog = 7
237 };
238 
239 enum {
240  kAS09LeaveScene = 0,
241  kAS09SearchTrash = 1,
242  kAS09SearchTrashDone = 2
243 };
244 
245 /*****************************************************************************/
246 
247 class GnapEngine;
248 class CutScene;
249 
250 class Scene01: public Scene {
251 public:
252  Scene01(GnapEngine *vm);
253  ~Scene01() override;
254 
255  int init() override;
256  void updateHotspots() override;
257  void run() override;
258  void updateAnimations() override;
259  void updateAnimationsCb() override {}
260 
261 private:
262  int _pigsIdCtr;
263  int _smokeIdCtr;
264  Graphics::Surface *_spaceshipSurface;
265 };
266 
267 class Scene02: public Scene {
268 public:
269  Scene02(GnapEngine *vm);
270  ~Scene02() override {}
271 
272  int init() override;
273  void updateHotspots() override;
274  void run() override;
275  void updateAnimations() override;
276  void updateAnimationsCb() override {}
277 
278 private:
279  int _truckGrillCtr;
280  int _nextChickenSequenceId;
281  int _currChickenSequenceId;
282  int _gnapTruckSequenceId;
283 };
284 
285 class Scene03: public Scene {
286 public:
287  Scene03(GnapEngine *vm);
288  ~Scene03() override {}
289 
290  int init() override;
291  void updateHotspots() override;
292  void run() override;
293  void updateAnimations() override;
294  void updateAnimationsCb() override {}
295 
296 private:
297  bool _platypusHypnotized;
298  bool _platypusScared;
299  int _nextPlatSequenceId;
300  int _nextFrogSequenceId;
301  int _currFrogSequenceId;
302 };
303 
304 class Scene04: public Scene {
305 public:
306  Scene04(GnapEngine *vm);
307  ~Scene04() override {}
308 
309  int init() override;
310  void updateHotspots() override;
311  void run() override;
312  void updateAnimations() override;
313  void updateAnimationsCb() override {}
314 
315 private:
316  bool _triedWindow;
317  int _dogIdCtr;
318  int _nextDogSequenceId;
319  int _currDogSequenceId;
320 };
321 
322 class Scene05: public Scene {
323 public:
324  Scene05(GnapEngine *vm);
325  ~Scene05() override {}
326 
327  int init() override;
328  void updateHotspots() override;
329  void run() override;
330  void updateAnimations() override;
331  void updateAnimationsCb() override {}
332 
333 private:
334  int _nextChickenSequenceId;
335  int _currChickenSequenceId;
336 };
337 
338 class Scene06: public Scene {
339 public:
340  Scene06(GnapEngine *vm);
341  ~Scene06() override {}
342 
343  int init() override;
344  void updateHotspots() override;
345  void run() override;
346  void updateAnimations() override;
347  void updateAnimationsCb() override {}
348 
349 private:
350  bool _horseTurnedBack;
351  int _nextPlatSequenceId;
352  int _nextHorseSequenceId;
353  int _currHorseSequenceId;
354 };
355 
356 class Scene07: public Scene {
357 public:
358  Scene07(GnapEngine *vm);
359  ~Scene07() override {}
360 
361  int init() override;
362  void updateHotspots() override;
363  void run() override;
364  void updateAnimations() override;
365  void updateAnimationsCb() override {}
366 };
367 
368 class Scene08: public Scene {
369 public:
370  Scene08(GnapEngine *vm);
371  ~Scene08() override {}
372 
373  int init() override;
374  void updateHotspots() override;
375  void run() override;
376  void updateAnimations() override;
377  void updateAnimationsCb() override;
378 
379 private:
380  int _nextDogSequenceId;
381  int _currDogSequenceId;
382  int _nextManSequenceId;
383  int _currManSequenceId;
384 };
385 
386 class Scene09: public Scene {
387 public:
388  Scene09(GnapEngine *vm);
389  ~Scene09() override {}
390 
391  int init() override;
392  void updateHotspots() override;
393  void run() override;
394  void updateAnimations() override;
395  void updateAnimationsCb() override {}
396 };
397 
398 } // End of namespace Gnap
399 
400 #endif // GNAP_GROUP0_H
Definition: surface.h:67
Definition: group0.h:250
Definition: group0.h:285
Definition: group0.h:356
Definition: group0.h:267
Definition: group0.h:304
Definition: group0.h:368
Definition: group0.h:322
Definition: character.h:25
Definition: gnap.h:222
Definition: group0.h:386
Definition: scenecore.h:31
Definition: group0.h:338