aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/worldofxeen/darkside_cutscenes.h
blob: aee27e89a59bcaaaf1344daf67672afa876c9982 (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
/* 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 XEEN_WORLDOFXEEN_DARKSIDE_CUTSCENES_H
#define XEEN_WORLDOFXEEN_DARKSIDE_CUTSCENES_H

#include "xeen/cutscenes.h"

namespace Xeen {

class XeenEngine;

namespace WorldOfXeen {

class DarkSideCutscenes : public Cutscenes {
private:
	Subtitles _subtitles;
	SpriteResource _ball, _claw, _dragon1;
private:
	/**
	 * Initial animation of the Dragon Pharoah moving his hands to the
	 * crystal ball, and then moving them back again
	 * @param fadeIn		If set, fades in screen after first frame
	 */
	bool rubCrystalBall(bool fadeIn = false);

	/**
	 * Animates the dragon pharoah
	 * @param frame		Animation frame number
	 * @param showBall	Flag whether to draw the crystal ball
	 */
	void animatePharoah(int frame, bool showBall = true);

	/**
	 * Shows the Dark Side of Xeen title screen
	 */
	bool showDarkSideTitle(bool seenIntro);

	/**
	 * Shows part 1 of the Dark Side intro - up to the point where
	 * Dragon Pharoah ends "contact the Queen"
	 */
	bool showDarkSideIntro1();

	/**
	 * Shows part 2 of the Dark Side intro
	 */
	bool showDarkSideIntro2();

	/**
	 * Shows part 3 of the Dark Side intro
	 */
	bool showDarkSideIntro3();

	/**
	 * Shows the World of Xeen logo from the end of the Dark Side intro
	 */
	bool showWorldOfXeenLogo();

	/**
	 * Shows part 1 of the Dark Side ending, everything up to Corak appearing
	 */
	bool showDarkSideEnding1();

	/**
	 * Shows part 2 of the Dark Side ending, exposition until start of fighting
	 */
	bool showDarkSideEnding2();

	/**
	 * Shows part 3 of the Dark Side ending, the fighting
	 */
	bool showDarkSideEnding3();

	/**
	 * Shows part 4 of the Dark Side ending, the self-destruct and castle explosion
	 */
	bool showDarkSideEnding4();

	/**
	 * Last part of the Dark Side ending, shows the final score and saves the game/
	 */
	 void showDarkSideScore(uint endingScore);

	/**
	 * Shows the Pharaoh ending screen where score text is shown
	 */
	 bool showPharaohEndTextInner(const char *msg1, const char *msg2, const char *msg3);
protected:
	/**
	 * Shows the Pharaoh ending screen where score text is shown
	 */
	bool showPharaohEndText(const char *msg1, const char *msg2 = nullptr, const char *msg3 = nullptr);
public:
	DarkSideCutscenes(XeenEngine *vm) : Cutscenes(vm) {}

	/**
	 * Shows the Dark Side of Xeen intro sequence
	 */
	bool showDarkSideIntro(bool seenIntro);

	/**
	 * Shows the Dark Side of Xeen ending sequence
	 */
	void showDarkSideEnding(uint endingScore);
};

} // End of namespace WorldOfXeen
} // End of namespace Xeen

#endif /* XEEN_WORLDOFXEEN_DARKSIDE_CUTSCENES_H */