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_SCENES0_H
24 #define TSAGE_BLUEFORCE_SCENES0_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 Scene20 : public SceneExt {
43 	/* Actions */
44 	class Action1 : public Action {
45 	private:
46 		ASoundExt _sound;
47 	public:
48 		virtual void signal();
49 	};
50 public:
51 	Action1 _action1;
52 	ScenePalette _scenePalette;
53 	SceneObject _tsunamiWave, _letterT, _letterS, _letterU;
54 	SceneObject _letterN, _letterA, _letterM, _letterI;
55 
56 	virtual void postInit(SceneObjectList *OwnerList = NULL);
57 };
58 
59 class Scene50: public SceneExt {
60 	class Tooltip: public SavedObject {
61 	public:
62 		Rect _bounds;
63 		Common::String _msg;
64 		int _newSceneNumber;
65 		int _locationId;
66 	public:
67 		Tooltip();
68 		void set(const Rect &bounds, int sceneNum, const Common::String &msg, int locationId);
69 		void update();
70 		void highlight(bool btnDown);
71 
getClassName()72 		virtual Common::String getClassName() { return "Scene50_Tooltip"; }
73 		virtual void synchronize(Serializer &s);
74 	};
75 	class Tooltip2: public Action {
76 	public:
Tooltip2()77 		Tooltip2(): Action() {}
78 
getClassName()79 		virtual Common::String getClassName() { return "Scene50_Tooltip2"; }
80 		virtual void signal();
81 		virtual void dispatch();
82 	};
83 public:
84 	int _sceneNumber;
85 	SceneText _text;
86 	SceneItemType2 _item;
87 	Tooltip _location1, _location2, _location3, _location4, _location5;
88 	Tooltip _location6, _location7, _location8, _location9;
89 	Timer _timer;
90 public:
91 	Scene50();
92 
getClassName()93 	virtual Common::String getClassName() { return "Scene50"; }
94 	virtual void synchronize(Serializer &s);
95 
96 	virtual void postInit(SceneObjectList *OwnerList = NULL);
97 	virtual void remove();
98 	virtual void signal();
99 	virtual void process(Event &event);
100 };
101 
102 class Scene60 : public SceneExt {
103 	/* Items */
104 	class Ignition: public NamedHotspot {
105 	private:
106 		bool check1();
107 		bool check2();
108 	public:
109 		virtual bool startAction(CursorType action, Event &event);
110 	};
111 	class Item3: public NamedHotspot {
112 	public:
113 		virtual bool startAction(CursorType action, Event &event);
114 	};
115 	class Radio: public NamedHotspot {
116 	public:
117 		virtual bool startAction(CursorType action, Event &event);
118 	};
119 	class Compartment: public NamedHotspot {
120 	public:
121 		virtual bool startAction(CursorType action, Event &event);
122 	};
123 
124 	/* Objects */
125 	class MirandaCard: public NamedObject {
126 	public:
127 		virtual bool startAction(CursorType action, Event &event);
128 	};
129 	class TicketBook: public NamedObject {
130 	public:
131 		virtual bool startAction(CursorType action, Event &event);
132 	};
133 	class CompartmentDoor: public NamedObject {
134 	public:
135 		bool _flag;
136 		virtual bool startAction(CursorType action, Event &event);
137 	};
138 
139 	/* Actions */
140 	class Action1: public ActionExt {
141 	private:
142 		int useRadio();
143 	public:
144 		virtual void signal();
145 	};
146 	class Action2: public Action {
147 	public:
148 		virtual void signal();
149 	};
150 	class Action3: public Action {
151 	public:
152 		virtual void signal();
153 	};
154 public:
155 	SequenceManager _sequenceManager;
156 	Action1 _action1;
157 	Action2 _action2;
158 	Action3 _action3;
159 	NamedObject _object1;
160 	MirandaCard _mirandaCard;
161 	TicketBook _ticketBook;
162 	CompartmentDoor _compartmentDoor;
163 	SceneObject _dashboard;
164 	BackgroundSceneObject _car;
165 	NamedHotspot _item1;
166 	Ignition _ignition;
167 	Item3 _item3;
168 	Radio _radio;
169 	Compartment _compartment;
170 	SpeakerGameText _gameTextSpeaker;
171 	SpeakerJakeRadio _jakeRadioSpeaker;
172 	ASound _sound;
173 	int _newScene;
174 	int _sceneNumber;
175 	int _visage;
176 	CursorType _cursorId;
177 
178 	Scene60();
179 	virtual void synchronize(Serializer &s);
180 	virtual void postInit(SceneObjectList *OwnerList = NULL);
181 	virtual void remove();
182 	virtual void signal();
183 	virtual void dispatch();
184 };
185 
186 
187 } // End of namespace BlueForce
188 
189 } // End of namespace TsAGE
190 
191 #endif
192