Changeset 1328 for code/branches/hud3/src/orxonox/hud/BarOverlayElement.cc
- Timestamp:
- May 19, 2008, 9:39:23 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/hud3/src/orxonox/hud/BarOverlayElement.cc
r1314 r1328 22 22 * Yuning Chai 23 23 * Co-authors: 24 * ...24 * Felix Schulthess 25 25 * 26 26 */ … … 36 36 using namespace Ogre; 37 37 38 39 BarOverlayElement::BarOverlayElement(const String& name):Ogre::PanelOverlayElement(name){} 38 BarOverlayElement::BarOverlayElement(const String& name):Ogre::PanelOverlayElement(name){ 39 name_ = name; 40 } 40 41 41 42 BarOverlayElement::~BarOverlayElement(){} 42 43 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 */ } 44 void BarOverlayElement::init(Real leftRel, Real topRel, Real widthRel, Real heightRel, Ogre::OverlayContainer* container){ 45 // init some values... 46 container_ = container; 47 om = &Ogre::OverlayManager::getSingleton(); 48 value_ = 0; 49 color_ = 2; 50 autoColor_ = true; 51 dir_ = BarOverlayElement::RIGHT; 50 52 51 52 void BarOverlayElement::initBarOverlayElement(Real leftRel, Real topRel, Real widthRel, Real heightRel, int dir, int colour){ 53 // get window data... 53 54 windowW_ = GraphicsEngine::getSingleton().getWindowWidth(); 54 55 windowH_ = GraphicsEngine::getSingleton().getWindowHeight(); 55 56 dir_ = dir;57 56 leftRel_ = leftRel; 58 57 topRel_ = topRel; … … 60 59 heightRel_ = heightRel; 61 60 61 // cálculate absolute coordinates... 62 62 left_ = leftRel_ * windowW_; 63 63 top_ = topRel_ * windowH_; … … 65 65 height_ = heightRel_ * windowH_; 66 66 67 setMetricsMode(Ogre::GMM_PIXELS); 67 // create background... 68 bar_ = static_cast<PanelOverlayElement*>(om->createOverlayElement("Panel", name_+"Bar")); 69 bar_->show(); 70 container_->addChild(bar_); 71 bar_->setPosition(left_, top_); 72 bar_->setDimensions(width_, height_); 73 bar_->setMetricsMode(Ogre::GMM_PIXELS); 74 bar_->setMaterialName("Orxonox/Green"); 75 68 76 setPosition(left_,top_); 69 77 setDimensions(width_,height_); 70 setColour(colour); 78 setMetricsMode(Ogre::GMM_PIXELS); 79 setMaterialName("Orxonox/BarBackground"); 80 setValue(value_); 71 81 } 72 82 73 83 74 void BarOverlayElement::reset(int percentage){ 84 void BarOverlayElement::setValue(float value){ 85 value_ = value; 86 // set color, if nescessary 87 if(autoColor_){ 88 if (value_>0.5) {setColor(BarOverlayElement::GREEN);} 89 else if (value_>0.25) {setColor(BarOverlayElement::YELLOW);} 90 else setColor(BarOverlayElement::RED); 91 } 92 // set value 75 93 switch(dir_){ 76 case 1:77 setPosition(left_,top_);78 setDimensions(width_,height_*percentage/100);94 case BarOverlayElement::DOWN: 95 bar_->setPosition(left_,top_); 96 bar_->setDimensions(width_,height_*value_); 79 97 break; 80 case 2:81 setPosition(left_+width_-width_*percentage/100,top_);82 setDimensions(width_*percentage/100,height_);98 case BarOverlayElement::LEFT: 99 bar_->setPosition(left_+width_-width_*value_,top_); 100 bar_->setDimensions(width_*value_,height_); 83 101 break; 84 case 3:85 setPosition(left_,top_+height_-height_*percentage/100);86 setDimensions(width_,height_*percentage/100);102 case BarOverlayElement::UP: 103 bar_->setPosition(left_,top_+height_-height_*value_); 104 bar_->setDimensions(width_,height_*value_); 87 105 break; 88 106 default: 89 setPosition(left_,top_); 90 setDimensions(width_*percentage/100,height_); 107 bar_->setPosition(left_,top_); 108 bar_->setDimensions(width_*value_,height_); 109 break; 91 110 } 92 111 } 93 112 113 void BarOverlayElement::setDir(int dir){ 114 } 94 115 95 void BarOverlayElement::setColour(int colour){ 96 switch(colour){ 116 void BarOverlayElement::setColor(int color){ 117 color_ = color; 118 switch(color){ 97 119 case 0: 98 setMaterialName("Orxonox/Red");120 bar_->setMaterialName("Orxonox/Red"); 99 121 break; 100 122 case 1: 101 setMaterialName("Orxonox/Yellow");123 bar_->setMaterialName("Orxonox/Yellow"); 102 124 break; 103 125 case 2: 104 setMaterialName("Orxonox/Green");126 bar_->setMaterialName("Orxonox/Green"); 105 127 } 106 128 } 107 129 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); 130 float BarOverlayElement::getValue(){ 131 return(value_); 125 132 } 126 133 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); 134 int BarOverlayElement::getBarColor(){ 135 return(color_); 133 136 } 134 135 137 } 136 138
Note: See TracChangeset
for help on using the changeset viewer.