ScummVM API documentation
phantom_scenes5.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 MADS_PHANTOM_SCENES5_H
23 #define MADS_PHANTOM_SCENES5_H
24 
25 #include "common/serializer.h"
26 #include "mads/phantom/phantom_scenes.h"
27 
28 namespace MADS {
29 namespace Phantom {
30 
31 class Scene5xx : public PhantomScene {
32 protected:
36  void sceneEntrySound();
37 
41  void setAAName();
42 
47 public:
48  Scene5xx(MADSEngine *vm) : PhantomScene(vm) {}
49 };
50 
51 class Scene501 : public Scene5xx {
52 private:
53  bool _anim0ActvFl;
54  bool _skipFl;
55 
56 public:
57  Scene501(MADSEngine *vm);
58  void synchronize(Common::Serializer &s) override;
59 
60  void setup() override;
61  void enter() override;
62  void step() override;
63  void preActions() override;
64  void actions() override;
65 };
66 
67 class Scene502 : public Scene5xx {
68 private:
69  bool _fire1ActiveFl;
70  bool _fire2ActiveFl;
71  bool _fire3ActiveFl;
72  bool _fire4ActiveFl;
73  bool _panelTurningFl;
74  bool _trapDoorHotspotEnabled;
75  bool _acceleratedFireActivationFl;
76 
77  int _panelPushedNum;
78  int _puzzlePictures[16];
79  int _puzzleSprites[16];
80  int _puzzleSequences[16];
81  int _messageLevel;
82  int _cycleStage;
83 
84  Common::Point _nextPos;
85 
86  uint32 _lastFrameTime;
87  uint32 _timer;
88  uint32 _deathTimer;
89 
90  byte *_cyclePointer;
91 
92  void room_502_initialize_panels();
93  void loadCyclingInfo();
94  void animateFireBursts();
95  void setPaletteCycle();
96  void handlePanelAnimation();
97  void getPanelInfo(Common::Point *walkToPos, int *panel, Common::Point mousePos, Common::Point *interimPos);
98 
99 public:
100  Scene502(MADSEngine *vm);
101  ~Scene502() override;
102 
103  void synchronize(Common::Serializer &s) override;
104 
105  void setup() override;
106  void enter() override;
107  void step() override;
108  void preActions() override;
109  void actions() override;
110 };
111 
112 class Scene504 : public Scene5xx {
113 private:
114  bool _anim0ActvFl;
115  bool _anim1ActvFl;
116  bool _anim2ActvFl;
117  bool _anim3ActvFl;
118  bool _anim4ActvFl;
119  bool _anim5ActvFl;
120  bool _playingMusicFl;
121  bool _chairDialogDoneFl;
122  bool _fireBreathFl;
123 
124  int _songNum;
125  int _input3Count;
126  int _playCount;
127  int _listenStatus;
128  int _listenFrame;
129  int _chairStatus;
130  int _chairFrame;
131  int _playStatus;
132  int _playFrame;
133  int _phantomStatus;
134  int _phantomFrame;
135  int _christineTalkCount;
136  int _deathCounter;
137 
138  void handleListenAnimation();
139  void handleOrganAnimation();
140  void handleChairAnimation();
141  void handlePhantomAnimation1();
142  void handlePhantomAnimation2();
143  void handlePhantomAnimation3();
144  void handleListenConversation();
145  void handlePlayConversation();
146  void handleFightConversation();
147 
148 public:
149  Scene504(MADSEngine *vm);
150  void synchronize(Common::Serializer &s) override;
151 
152  void setup() override;
153  void enter() override;
154  void step() override;
155  void preActions() override;
156  void actions() override;
157 };
158 
159 class Scene505 : public Scene5xx {
160 private:
161  bool _anim0ActvFl;
162  bool _anim1ActvFl;
163  bool _anim2ActvFl;
164  bool _checkFrame106;
165  bool _leaveRoomFl;
166  bool _partedFl;
167 
168  int _raoulStatus;
169  int _raoulFrame;
170  int _raoulCount;
171  int _bothStatus;
172  int _bothFrame;
173  int _bothCount;
174  int _partStatus;
175  int _partFrame;
176  int _partCount;
177 
178  void handleRaoulAnimation();
179  void handleBothanimation();
180  void handlePartedAnimation();
181  void handleCoffinDialog();
182 
183 public:
184  Scene505(MADSEngine *vm);
185  void synchronize(Common::Serializer &s) override;
186 
187  void setup() override;
188  void enter() override;
189  void step() override;
190  void preActions() override;
191  void actions() override;
192 };
193 
194 class Scene506 : public Scene5xx {
195 private:
196  bool _anim0ActvFl;
197  bool _skipFl;
198  bool _ascendingFl;
199 
200 public:
201  Scene506(MADSEngine *vm);
202  void synchronize(Common::Serializer &s) override;
203 
204  void setup() override;
205  void enter() override;
206  void step() override;
207  void preActions() override;
208  void actions() override;
209 };
210 
211 } // End of namespace Phantom
212 } // End of namespace MADS
213 
214 #endif
virtual void synchronize(Common::Serializer &s)
Definition: scene_data.h:126
virtual void actions()=0
virtual void preActions()
Definition: scene_data.h:106
Definition: phantom_scenes5.h:67
Definition: phantom_scenes.h:445
PhantomScene(MADSEngine *vm)
virtual void enter()=0
Definition: serializer.h:79
virtual void setup()=0
Definition: phantom_scenes5.h:31
Definition: phantom_scenes5.h:194
Definition: phantom_scenes5.h:51
Definition: phantom_scenes5.h:159
Definition: rect.h:144
Definition: mads.h:79
Definition: action.h:28
Definition: phantom_scenes5.h:112
virtual void step()
Definition: scene_data.h:101