aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/module2700.h
blob: f1ef3f5727084ffd52f19029c63c3972590a1a2e (plain)
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
/* 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 2
 * 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, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 */

#ifndef NEVERHOOD_MODULE2700_H
#define NEVERHOOD_MODULE2700_H

#include "neverhood/neverhood.h"
#include "neverhood/module.h"
#include "neverhood/scene.h"
#include "neverhood/module1600.h"

namespace Neverhood {

// Module2700

class Module2700 : public Module {
public:
	Module2700(NeverhoodEngine *vm, Module *parentModule, int which);
	virtual ~Module2700();
protected:
	SoundResource _soundResource1;
	SoundResource _soundResource2;
	SoundResource _soundResource3;
	SoundResource _soundResource4;
	int _soundIndex;
	bool _flag1;
	uint32 _scene2711StaticSprites[6];
	uint32 _musicFileHash;
	void createScene(int sceneNum, int which);
	void updateScene();
	void update();
	uint32 handleMessage(int messageNum, const MessageParam &param, Entity *sender);
	void createScene2703(int which, uint32 sceneInfoId, const uint32 *staticSprites = NULL, const NRect *clipRect = NULL);
	void createScene2704(int which, uint32 sceneInfoId, int16 value, const uint32 *staticSprites = NULL, const NRect *clipRect = NULL);
};

class Class437 : public StaticSprite {
public:
	Class437(NeverhoodEngine *vm, uint32 fileHash);
};

class Scene2701 : public Scene {
public:
	Scene2701(NeverhoodEngine *vm, Module *parentModule, int which);
protected:
	Class521 *_class521;
	Sprite *_class437;
	Sprite *_class517;
	Sprite *_class520;
	Sprite *_class519;
	Sprite *_class518;
	Sprite *_sprite1;
	int _which1, _which2;
	NPointArray *_trackPoints;
	uint32 handleMessage42F500(int messageNum, const MessageParam &param, Entity *sender);
	uint32 handleMessage42F600(int messageNum, const MessageParam &param, Entity *sender);
};

class Scene2702 : public Scene {
public:
	Scene2702(NeverhoodEngine *vm, Module *parentModule, int which);
protected:
	Class521 *_class521;
	Sprite *_class437;
	Sprite *_class517;
	Sprite *_class520;
	Sprite *_class519;
	int16 _newTrackDestX;
	int _currTrackIndex, _newTrackIndex;
	int _count;
	bool _flag1;
	SceneInfo2700 *_sceneInfos[2][3];
	SceneInfo2700 **_currSceneInfos;
	NPointArray *_trackPoints;
	void update();
	uint32 handleMessage(int messageNum, const MessageParam &param, Entity *sender);
	void findClosestTrack(NPoint pt);
	void changeTrack();
};

class Scene2704 : public Scene {
public:
	Scene2704(NeverhoodEngine *vm, Module *parentModule, int which, uint32 sceneInfoId, int16 value,
		const uint32 *staticSprites = NULL, const NRect *clipRect = NULL);
protected:
	Class521 *_class521;
	Sprite *_class437;
	int _which1, _which2;
	NPointArray *_trackPoints;
	NRectArray *_rectList;
	void update();
	uint32 handleMessage(int messageNum, const MessageParam &param, Entity *sender);
};

class Scene2706 : public Scene {
public:
	Scene2706(NeverhoodEngine *vm, Module *parentModule, int which);
protected:
	Class521 *_class521;
	Sprite *_class437;
	Sprite *_class517;
	Sprite *_class518;
	Sprite *_class520;
	Sprite *_class519;
	int16 _newTrackDestX;
	int _currTrackIndex, _newTrackIndex;
	NPointArray *_trackPoints;
	uint32 handleMessage(int messageNum, const MessageParam &param, Entity *sender);
	void findClosestTrack(NPoint pt);
	void changeTrack();
};

} // End of namespace Neverhood

#endif /* NEVERHOOD_MODULE2700_H */