File: ringworld2_vampire.h

package info (click to toggle)
scummvm 2.9.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 450,268 kB
  • sloc: cpp: 4,297,604; asm: 28,322; python: 12,901; sh: 11,219; java: 8,477; xml: 7,843; perl: 2,633; ansic: 2,465; yacc: 1,670; javascript: 1,020; makefile: 933; lex: 578; awk: 275; objc: 82; sed: 11; php: 1
file content (178 lines) | stat: -rw-r--r-- 4,296 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
/* ScummVM - Graphic Adventure Engine
 *
 * ScummVM is the legal property of its developers, whose names
 * are too numerous to list here. Please refer to the COPYRIGHT
 * file distributed with this source distribution.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#ifndef TSAGE_RINGWORLD2_VAMPIRE_H
#define TSAGE_RINGWORLD2_VAMPIRE_H

#include "tsage/events.h"
#include "tsage/core.h"
#include "tsage/scenes.h"
#include "tsage/globals.h"
#include "tsage/sound.h"
#include "tsage/ringworld2/ringworld2_logic.h"

namespace TsAGE {

namespace Ringworld2 {

using namespace TsAGE;

class Scene1950 : public SceneExt {
	/* Windows */
	class KeypadWindow: public ModalWindow {
	public:
		class KeypadButton : public SceneActor {
		public:
			int _buttonIndex;
			bool _pressed;
			bool _toggled;

			KeypadButton();
			void synchronize(Serializer &s) override;

			void init(int indx);
			void process(Event &event) override;
			bool startAction(CursorType action, Event &event) override;
		};

		SceneActor _areaActor;
		KeypadButton _buttons[16];

		int _buttonIndex;

		KeypadWindow();
		void synchronize(Serializer &s) override;
		void remove() override;
		void setup2(int visage, int stripFrameNum, int frameNum, int posX, int posY) override;
		void setup3(int resNum, int lookLineNum, int talkLineNum, int useLineNum) override;
	};

	class Keypad : public NamedHotspot {
	public:
		bool startAction(CursorType action, Event &event) override;
	};

	/* Actors */
	class Door : public SceneActor {
	public:
		bool startAction(CursorType action, Event &event) override;
	};
	class Scrolls : public SceneActor {
	public:
		bool startAction(CursorType action, Event &event) override;
	};
	class Gem : public SceneActor {
	public:
		bool startAction(CursorType action, Event &event) override;
	};
	class Vampire : public SceneActor {
	public:
		Common::Point _deadPosition;
		int _deltaX;
		int _deltaY;
		int _vampireMode;

		Vampire();
		void synchronize(Serializer &s) override;

		void signal() override;
		bool startAction(CursorType action, Event &event) override;
	};

	/* Exits */
	class NorthExit : public SceneExit {
	public:
		void changeScene() override;
	};
	class UpExit : public SceneExit {
	public:
		void changeScene() override;
	};
	class EastExit : public SceneExit {
	public:
		void changeScene() override;
	};
	class DownExit : public SceneExit {
	public:
		void changeScene() override;
	};
	class SouthExit : public SceneExit {
	public:
		void changeScene() override;
	};
	class WestExit : public SceneExit {
	public:
		void changeScene() override;
	};
	class ShaftExit : public SceneExit {
	public:
		void changeScene() override;
	};
	class DoorExit : public SceneExit {
	public:
		void changeScene() override;
	};
private:
	void initArea();
	void enterArea();
	void doButtonPress(int indx);
public:
	NamedHotspot _background;
	Keypad _keypad;
	SceneActor _southDoorway;
	SceneObject _northDoorway;
	Door _door;
	Scrolls _scrolls;
	SceneActor _containmentField;
	Gem _gem;
	SceneActor _cube;
	SceneActor _pulsingLights;
	Vampire _vampire;
	KeypadWindow _KeypadWindow;
	NorthExit _northExit;
	UpExit _upExit;
	EastExit _eastExit;
	DownExit _downExit;
	SouthExit _southExit;
	WestExit _westExit;
	ShaftExit _shaftExit;
	DoorExit _doorExit;
	SequenceManager _sequenceManager;

	bool _upExitStyle;
	bool _removeFlag;
	bool _vampireActive;
	Common::Point _vampireDestPos;
	int _vampireIndex;

	Scene1950();
	void synchronize(Serializer &s) override;

	void postInit(SceneObjectList *OwnerList = NULL) override;
	void remove() override;
	void signal() override;
	void process(Event &event) override;
};

} // End of namespace Ringworld2
} // End of namespace TsAGE

#endif