File: DeathMenu.h

package info (click to toggle)
scummvm 2.9.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 450,580 kB
  • sloc: cpp: 4,299,825; asm: 28,322; python: 12,901; sh: 11,302; java: 9,289; xml: 7,895; perl: 2,639; ansic: 2,465; yacc: 1,670; javascript: 1,020; makefile: 933; lex: 578; awk: 275; objc: 82; sed: 11; php: 1
file content (147 lines) | stat: -rw-r--r-- 3,333 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
/* 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/>.
 *
 */

/*
 * Copyright (C) 2006-2010 - Frictional Games
 *
 * This file is part of Penumbra Overture.
 */

#ifndef GAME_DEATH_MENU_H
#define GAME_DEATH_MENU_H

#include "hpl1/engine/engine.h"

#include "hpl1/penumbra-overture/GameTypes.h"

using namespace hpl;

class cInit;

//---------------------------
class cDeathMenuButton {
public:
	cDeathMenuButton(cInit *apInit, cVector2f avPos, const tWString &asText);
	virtual ~cDeathMenuButton();

	void OnUpdate(float afTimeStep);

	void OnDraw();

	virtual void OnMouseDown() = 0;
	virtual void OnMouseUp() = 0;

	void OnMouseOver(bool abOver);

	const cRect2f &GetRect() { return mRect; }

protected:
	float mfAlpha;

	cInit *mpInit;
	cGraphicsDrawer *mpDrawer;

	cVector3f mvPositon;
	cRect2f mRect;

	FontData *mpFont;

	cVector2f mvFontSize;
	tWString msText;

	bool mbOver;
};

//---------------------------------------------

class cDeathMenuButton_Continue : public cDeathMenuButton {
public:
	cDeathMenuButton_Continue(cInit *apInit, cVector2f avPos, const tWString &asText) : cDeathMenuButton(apInit, avPos, asText) {}

	void OnMouseDown();
	void OnMouseUp();
};

//---------------------------------------------

class cDeathMenuButton_BackToMain : public cDeathMenuButton {
public:
	cDeathMenuButton_BackToMain(cInit *apInit, cVector2f avPos, const tWString &asText) : cDeathMenuButton(apInit, avPos, asText) {}

	void OnMouseDown();
	void OnMouseUp();
};

//---------------------------------------------

typedef Common::List<cDeathMenuButton *> tDeathMenuButtonList;
typedef tDeathMenuButtonList::iterator tDeathMenuButtonListIt;

//---------------------------------------------

class cDeathMenu : public iUpdateable {
	friend class cDeathMenuButton;

public:
	cDeathMenu(cInit *apInit);
	~cDeathMenu();

	void Reset();

	void OnDraw();

	void Update(float afTimeStep);

	void SetMousePos(const cVector2f &avPos);
	void AddMousePos(const cVector2f &avRel);
	cVector2f GetMousePos() { return mvMousePos; }

	void OnMouseDown(eMButton aButton);
	void OnMouseUp(eMButton aButton);

	void SetActive(bool abX);
	bool IsActive() { return mbActive; }

	void OnExit();

private:
	cInit *mpInit;
	cGraphicsDrawer *mpDrawer;

	cGfxObject *mpGfxBackground;

	bool mbMouseIsDown;

	bool mbActive;
	float mfAlpha;

	FontData *mpFont;

	cVector2f mvMousePos;

	eCrossHairState mLastCrossHairState;

	tDeathMenuButtonList mlstButtons;
};

//---------------------------------------------

#endif // GAME_DEATH_MENU_H