Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/hud3/src/orxonox/hud/BarOverlayElement.cc @ 1315

Last change on this file since 1315 was 1314, checked in by FelixSchulthess, 16 years ago

added speedometer.

File size: 3.9 KB
Line 
1/*
2*   ORXONOX - the hottest 3D action shooter ever to exist
3*
4*
5*   License notice:
6*
7*   This program is free software; you can redistribute it and/or
8*   modify it under the terms of the GNU General Public License
9*   as published by the Free Software Foundation; either version 2
10*   of the License, or (at your option) any later version.
11*
12*   This program is distributed in the hope that it will be useful,
13*   but WITHOUT ANY WARRANTY; without even the implied warranty of
14*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*   GNU General Public License for more details.
16*
17*   You should have received a copy of the GNU General Public License
18*   along with this program; if not, write to the Free Software
19*   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
20*
21*   Author:
22*      Yuning Chai
23*   Co-authors:
24*      ...
25*
26*/
27
28#include <OgreOverlayManager.h>
29#include <OgreOverlayElement.h>
30#include <OgrePanelOverlayElement.h>
31#include "GraphicsEngine.h"
32#include "BarOverlayElement.h"
33
34namespace orxonox
35{
36  using namespace Ogre;
37
38
39    BarOverlayElement::BarOverlayElement(const String& name):Ogre::PanelOverlayElement(name){}
40
41    BarOverlayElement::~BarOverlayElement(){}
42
43    void BarOverlayElement::initialise(){
44        PanelOverlayElement::initialise();
45/*      setDimensions(100,100);
46        setPosition(10,10);
47        setMaterialName("Orxonox/Green");
48        setMetricsMode(Ogre::GMM_PIXELS);
49*/  }
50
51
52    void BarOverlayElement::initBarOverlayElement(Real leftRel, Real topRel, Real widthRel, Real heightRel, int dir,  int colour){
53        windowW_ = GraphicsEngine::getSingleton().getWindowWidth();
54        windowH_ = GraphicsEngine::getSingleton().getWindowHeight();
55
56        dir_ = dir;
57        leftRel_ = leftRel;
58        topRel_ = topRel;
59        widthRel_ = widthRel;
60        heightRel_ = heightRel;
61
62        left_ = leftRel_ * windowW_;
63        top_ = topRel_ * windowH_;
64        width_ = widthRel_ * windowW_;
65        height_ = heightRel_ * windowH_;
66
67        setMetricsMode(Ogre::GMM_PIXELS);
68        setPosition(left_,top_);
69        setDimensions(width_,height_);
70        setColour(colour);
71    }
72
73
74   void BarOverlayElement::reset(int percentage){
75        switch(dir_){
76        case 1:
77            setPosition(left_,top_);
78            setDimensions(width_,height_*percentage/100);
79            break;
80        case 2:
81            setPosition(left_+width_-width_*percentage/100,top_);
82            setDimensions(width_*percentage/100,height_);
83            break;
84        case 3:
85            setPosition(left_,top_+height_-height_*percentage/100);
86            setDimensions(width_,height_*percentage/100);
87            break;
88        default:
89            setPosition(left_,top_);
90            setDimensions(width_*percentage/100,height_);
91        }
92    }
93
94
95    void BarOverlayElement::setColour(int colour){
96        switch(colour){
97        case 0:
98            setMaterialName("Orxonox/Red");
99            break;
100        case 1:
101            setMaterialName("Orxonox/Yellow");
102            break;
103        case 2:
104            setMaterialName("Orxonox/Green");
105        }
106    }
107
108
109    SmartBarOverlayElement::SmartBarOverlayElement(const String& name):BarOverlayElement(name){}
110
111    SmartBarOverlayElement::~SmartBarOverlayElement(void){}
112
113
114    void SmartBarOverlayElement::initialise(){
115      PanelOverlayElement::initialise();
116/*      setDimensions(100,100);
117      setPosition(10,10);
118      setMaterialName("Orxonox/Green");
119      setMetricsMode(Ogre::GMM_PIXELS);
120*/  }
121
122    void SmartBarOverlayElement::initSmartBarOverlayElement(Real left, Real top, Real width, Real height, int dir)
123    {
124      BarOverlayElement::initBarOverlayElement(left, top, width, height, dir, BarOverlayElement::GREEN);
125    }
126
127
128    void SmartBarOverlayElement::reset(int percentage){
129      if (percentage>50) {setColour(BarOverlayElement::GREEN);}
130      else if (percentage>25) {setColour(BarOverlayElement::YELLOW);}
131      else setColour(BarOverlayElement::RED);
132      BarOverlayElement::reset(percentage);
133    }
134
135}
136
137
Note: See TracBrowser for help on using the repository browser.