ScummVM API documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
room303.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 M4_RIDDLE_ROOMS_SECTION3_ROOM303_H
23 #define M4_RIDDLE_ROOMS_SECTION3_ROOM303_H
24 
25 #include "m4/riddle/rooms/room.h"
26 
27 namespace M4 {
28 namespace Riddle {
29 namespace Rooms {
30 
31 class Room303 : public Room {
32 private:
33  bool _newExhibitsFlag = false;
34  bool _lonelyFlag = 0;
35  const char *_digiName1 = nullptr;
36  int _destTrigger = 0;
37  int _val5 = 0;
38  int _val6 = 0;
39  bool _meiLipsFlag = false;
40  int _val8 = 0;
41  //int _val9 = 0;
42  int _meiMode = 0;
43  int _meiShould = 0;
44  KernelTriggerType _val12 = KT_DAEMON;
45  bool _fengFlag = false;
46  int _fengMode = 0;
47  int _fengShould = 0;
48  int _ripleyShould = 0;
49  int _ripleyMode = 0;
50  int _val18 = 0;
51  KernelTriggerType _triggerMode1 = KT_DAEMON;
52  KernelTriggerType _triggerMode2 = KT_DAEMON;
53  machine *_door = nullptr;
54  int _mei1 = 0;
55  int _mei2 = 0;
56  int _mei3 = 0;
57  machine *_mei = nullptr;
58  int _feng1 = 0;
59  int _feng2 = 0;
60  int _feng3 = 0;
61  int _feng4 = 0;
62  machine *_shadow4 = nullptr;
63  machine *_shadow5 = nullptr;
64  machine *_fengLi = nullptr;
65  machine *_machine2 = nullptr;
66  machine *_ripley = nullptr;
67  machine *_ripPonders = nullptr;
68  int _gestTalk4 = 0;
69  int _ripBends = 0;
70  int _chinTalk4 = 0;
71  int _med1 = 0;
72  machine *_ripsh1 = nullptr;
73  machine *_ripsh2 = nullptr;
74  int _suit1 = 0;
75  int _suit2 = 0;
76  int _meiLips = 0;
77  int _ripGesture = 0;
78  machine *_priestTalk = nullptr;
79  int _suitTalk1 = 0;
80 
81  int _ctr1 = 0;
82 
83  static void escapePressed(void *, void *);
84 
85  void setupMei();
86  void loadFengLi();
87  void setFengActive(bool flag);
88  void setShadow4(bool active);
89  void setShadow5(bool active);
90  void setShadow5Alt(bool active);
91  void playSeries(bool cow = true);
92  void conv303a();
93  void conv303b();
94  static void priestTalkCallback(frac16 myMessage, machine *sender);
95  void priestTalk(bool flag, int trigger);
96  int getSize(const Common::String &assetName, int roomNum = -1);
97  void playSound(const Common::String &assetName, int trigger1, int trigger2);
98 
99 public:
100  Room303() : Room() {}
101  ~Room303() override {}
102 
103  void preload() override;
104  void init() override;
105  void daemon() override;
106  void pre_parser() override;
107  void parser() override;
108  void syncGame(Common::Serializer &s) override;
109 };
110 
111 } // namespace Rooms
112 } // namespace Riddle
113 } // namespace M4
114 
115 #endif
Definition: ws_machine.h:155
Definition: str.h:59
Definition: serializer.h:79
intptr frac16
Definition: m4_types.h:46
Definition: database.h:28
Definition: room.h:39
Definition: room303.h:31