-
Notifications
You must be signed in to change notification settings - Fork 105
/
DeathMenu.h
144 lines (100 loc) · 3.03 KB
/
DeathMenu.h
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
/*
* Copyright (C) 2006-2010 - Frictional Games
*
* This file is part of Penumbra Overture.
*
* Penumbra Overture 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.
*
* Penumbra Overture 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 Penumbra Overture. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GAME_DEATH_MENU_H
#define GAME_DEATH_MENU_H
#include "StdAfx.h"
#include "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;
iFontData *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 std::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;
iFontData *mpFont;
cVector2f mvMousePos;
eCrossHairState mLastCrossHairState;
tDeathMenuButtonList mlstButtons;
};
//---------------------------------------------
#endif // GAME_DEATH_MENU_H