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
|