Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/objecthierarchy2/src/orxonox/overlays/hud/HUDBar.h @ 2518

Last change on this file since 2518 was 2369, checked in by landauf, 16 years ago
  • Added a health bar
  • Some changes in CameraManager to handle the case when no camera exists after removing the last one, but this is still somehow buggy (freezes and later crashes reproducible but inexplicable after a few respawns)
  • Added PawnManager to handle destruction of Pawns without using delete within tick()
  • Property svn:eol-style set to native
File size: 3.8 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Yuning Chai
24 *   Co-authors:
25 *      Felix Schulthess
26 *      Fabian 'x3n' Landau
27 *      Reto Grieder
28 *
29 */
30
31#ifndef _HUDBar_H__
32#define _HUDBar_H__
33
34#include "OrxonoxPrereqs.h"
35
36#include <map>
37#include <OgrePrerequisites.h>
38#include "util/Math.h"
39#include "overlays/OrxonoxOverlay.h"
40
41namespace orxonox
42{
43    class _OrxonoxExport BarColour : public BaseObject
44    {
45    public:
46        BarColour(BaseObject* creator);
47        ~BarColour() { }
48
49        virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
50
51        void setColour(const ColourValue& colour) { this->colour_ = colour; }
52        const ColourValue& getColour() const { return this->colour_; }
53
54        void setPosition(float pos) { this->position_ = pos; }
55        float getPosition() const    { return this->position_; }
56
57    private:
58        ColourValue colour_;
59        float position_;
60    };
61
62
63    class _OrxonoxExport HUDBar : public OrxonoxOverlay
64    {
65    public:
66        HUDBar(BaseObject* creator);
67        virtual ~HUDBar();
68
69        virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
70
71        void clearColours();
72
73        inline void setRightToLeft(bool r2l)
74        {
75            if (r2l != this->right2Left_)
76            {
77                this->right2Left_ = r2l;
78                this->valueChanged();
79            }
80        }
81        inline bool getRightToLeft() const
82            { return this->right2Left_; }
83
84        inline void setValue(float value)
85        {
86            float temp = clamp(value, 0.0f, 1.0f);
87            if (temp != this->value_)
88            {
89                this->value_ = temp;
90                this->valueChanged();
91            }
92        }
93        inline float getValue() const
94            { return this->value_; }
95
96        inline void setAutoColour(bool val)
97        {
98            if (val != this->autoColour_)
99            {
100                this->autoColour_ = val;
101                this->valueChanged();
102
103                if (!val)
104                    this->currentColour_ = ColourValue::White;
105            }
106        }
107        inline bool getAutoColour() const
108            { return this->autoColour_; }
109
110        void setBarTexture(const std::string& texture);
111        const std::string& getBarTexture() const;
112
113        inline const ColourValue& getCurrentBarColour() const
114            { return this->currentColour_; }
115
116    protected:
117        virtual void valueChanged();
118
119    private:
120        void addColour(BarColour* colour);
121        BarColour* getColour(unsigned int index);
122
123        bool right2Left_;
124        bool autoColour_;                   //!< whether bar changes colour automatically
125        float value_;                       //!< progress of bar
126        ColourValue currentColour_;
127
128        Ogre::PanelOverlayElement* bar_;
129        Ogre::TextureUnitState* textureUnitState_;
130        std::map<float, ColourValue> colours_;
131        std::vector<BarColour*> barColours_;
132
133        static unsigned int materialcount_s;
134    };
135}
136#endif /* _HUDBar_H__ */
Note: See TracBrowser for help on using the repository browser.