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 MADS_NEBULAR_SCENES7_H
24 #define MADS_NEBULAR_SCENES7_H
25 
26 #include "common/scummsys.h"
27 #include "mads/game.h"
28 #include "mads/scene.h"
29 #include "mads/nebular/nebular_scenes.h"
30 
31 namespace MADS {
32 
33 namespace Nebular {
34 
35 class Scene7xx : public NebularScene {
36 protected:
37 	/**
38 	 * Plays an appropriate sound when entering a scene
39 	 */
40 	void setAAName();
41 
42 	/**
43 	 * Updates the prefix used for getting player sprites for the scene
44 	 */
45 	void setPlayerSpritesPrefix();
46 
47 	void sceneEntrySound();
48 
49 public:
Scene7xx(MADSEngine * vm)50 	Scene7xx(MADSEngine *vm) : NebularScene(vm) {}
51 };
52 
53 class Scene701 : public Scene7xx {
54 private:
55 	int _fishingLineId;
56 
57 public:
58 	Scene701(MADSEngine *vm);
59 	void synchronize(Common::Serializer &s) override;
60 
61 	void setup() override;
62 	void enter() override;
63 	void preActions() override;
64 	void actions() override;
65 	void step() override;
66 };
67 
68 class Scene702 : public Scene7xx {
69 public:
Scene702(MADSEngine * vm)70 	Scene702(MADSEngine *vm) : Scene7xx(vm) {}
71 
72 	void setup() override;
73 	void enter() override;
74 	void preActions() override;
75 	void actions() override;
76 };
77 
78 class Scene703 : public Scene7xx{
79 private:
80 	int _monsterMode;
81 	int _boatFrame;
82 	int _curSequence;
83 	int _boatDir;
84 
85 	bool _useBomb;
86 	bool _startMonsterTimer;
87 	bool _rexDeathFl;
88 	bool _restartTrigger70Fl;
89 
90 	uint32 _lastFrameTime;
91 	uint32 _monsterTime;
92 
93 	Conversation _dialog1;
94 
95 	void handleBottleInterface();
96 	void setBottleSequence();
97 	void handleFillBottle(int quote);
98 
99 public:
100 	Scene703(MADSEngine *vm);
101 	void synchronize(Common::Serializer &s) override;
102 
103 	void setup() override;
104 	void enter() override;
105 	void step() override;
106 	void actions() override;
107 };
108 
109 class Scene704 : public Scene7xx{
110 private:
111 	int _bottleHotspotId;
112 	int _boatCurrentFrame;
113 	int _animationMode;
114 	int _boatDirection;
115 
116 	bool _takeBottleFl;
117 
118 	Conversation _dialog1;
119 
120 	void handleFillBottle(int quote);
121 	void setBottleSequence();
122 	void handleBottleInterface();
123 
124 public:
125 	Scene704(MADSEngine *vm);
126 	void synchronize(Common::Serializer &s) override;
127 
128 	void setup() override;
129 	void enter() override;
130 	void step() override;
131 	void actions() override;
132 };
133 
134 class Scene705 : public Scene7xx{
135 private:
136 	Conversation _dialog1;
137 
138 	void handleFillBottle(int quote);
139 	void setBottleSequence();
140 	void handleBottleInterface();
141 
142 public:
Scene705(MADSEngine * vm)143 	Scene705(MADSEngine *vm) : Scene7xx(vm) {}
144 	void synchronize(Common::Serializer &s) override;
145 
146 	void setup() override;
147 	void enter() override;
148 	void step() override;
149 	void actions() override;
150 };
151 
152 class Scene706 : public Scene7xx{
153 private:
154 	int _vaseHotspotId;
155 	int _vaseMode;
156 	int _animationMode;
157 	int _animationFrame;
158 
159 	bool _emptyPedestral;
160 
161 	void handleTakeVase();
162 	void handleRexDeath();
163 
164 public:
165 	Scene706(MADSEngine *vm);
166 	void synchronize(Common::Serializer &s) override;
167 
168 	void setup() override;
169 	void enter() override;
170 	void step() override;
171 	void preActions() override;
172 	void actions() override;
173 };
174 
175 class Scene707 : public SceneTeleporter {
176 public:
Scene707(MADSEngine * vm)177 	Scene707(MADSEngine *vm) : SceneTeleporter(vm) {}
178 
179 	void setup() override;
180 	void enter() override;
181 	void step() override;
182 	void actions() override;
183 };
184 
185 class Scene710 : public Scene7xx {
186 public:
Scene710(MADSEngine * vm)187 	Scene710(MADSEngine *vm) : Scene7xx(vm) {}
188 
189 	void setup() override;
190 	void enter() override;
191 	void step() override;
192 	void actions() override;
193 };
194 
195 class Scene711 : public SceneTeleporter {
196 public:
Scene711(MADSEngine * vm)197 	Scene711(MADSEngine *vm) : SceneTeleporter(vm) {}
198 
199 	void setup() override;
200 	void enter() override;
201 	void step() override;
202 	void actions() override;
203 };
204 
205 class Scene751 : public Scene7xx{
206 private:
207 	bool _rexHandingLine;
208 
209 public:
210 	Scene751(MADSEngine *vm);
211 	void synchronize(Common::Serializer &s) override;
212 
213 	void setup() override;
214 	void enter() override;
215 	void step() override;
216 	void preActions() override;
217 	void actions() override;
218 };
219 
220 class Scene752 : public Scene7xx {
221 private:
222 	int _cardId;
223 
224 public:
225 	Scene752(MADSEngine *vm);
226 	void synchronize(Common::Serializer &s) override;
227 
228 	void setup() override;
229 	void enter() override;
230 	void step() override;
231 	void preActions() override;
232 	void actions() override;
233 };
234 
235 } // End of namespace Nebular
236 } // End of namespace MADS
237 
238 #endif /* MADS_NEBULAR_SCENES7_H */
239