Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 19, 2008, 9:39:23 PM (17 years ago)
Author:
FelixSchulthess
Message:

edited bar, removed smartbar and replaced functionality with a boolean autoColor to indicate whether the bar should change color automatically

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/hud3/src/orxonox/hud/BarOverlayElement.cc

    r1314 r1328  
    2222*      Yuning Chai
    2323*   Co-authors:
    24 *      ...
     24*      Felix Schulthess
    2525*
    2626*/
     
    3636  using namespace Ogre;
    3737
    38 
    39     BarOverlayElement::BarOverlayElement(const String& name):Ogre::PanelOverlayElement(name){}
     38    BarOverlayElement::BarOverlayElement(const String& name):Ogre::PanelOverlayElement(name){
     39        name_ = name;
     40    }
    4041
    4142    BarOverlayElement::~BarOverlayElement(){}
    4243
    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;
    5052
    51 
    52     void BarOverlayElement::initBarOverlayElement(Real leftRel, Real topRel, Real widthRel, Real heightRel, int dir,  int colour){
     53        // get window data...
    5354        windowW_ = GraphicsEngine::getSingleton().getWindowWidth();
    5455        windowH_ = GraphicsEngine::getSingleton().getWindowHeight();
    55 
    56         dir_ = dir;
    5756        leftRel_ = leftRel;
    5857        topRel_ = topRel;
     
    6059        heightRel_ = heightRel;
    6160
     61        // cálculate absolute coordinates...
    6262        left_ = leftRel_ * windowW_;
    6363        top_ = topRel_ * windowH_;
     
    6565        height_ = heightRel_ * windowH_;
    6666
    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
    6876        setPosition(left_,top_);
    6977        setDimensions(width_,height_);
    70         setColour(colour);
     78        setMetricsMode(Ogre::GMM_PIXELS);
     79        setMaterialName("Orxonox/BarBackground");
     80        setValue(value_);
    7181    }
    7282
    7383
    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
    7593        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_);
    7997            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_);
    83101            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_);
    87105            break;
    88106        default:
    89             setPosition(left_,top_);
    90             setDimensions(width_*percentage/100,height_);
     107            bar_->setPosition(left_,top_);
     108            bar_->setDimensions(width_*value_,height_);
     109            break;
    91110        }
    92111    }
    93112
     113    void BarOverlayElement::setDir(int dir){
     114    }
    94115
    95     void BarOverlayElement::setColour(int colour){
    96         switch(colour){
     116    void BarOverlayElement::setColor(int color){
     117        color_ = color;
     118        switch(color){
    97119        case 0:
    98             setMaterialName("Orxonox/Red");
     120            bar_->setMaterialName("Orxonox/Red");
    99121            break;
    100122        case 1:
    101             setMaterialName("Orxonox/Yellow");
     123            bar_->setMaterialName("Orxonox/Yellow");
    102124            break;
    103125        case 2:
    104             setMaterialName("Orxonox/Green");
     126            bar_->setMaterialName("Orxonox/Green");
    105127        }
    106128    }
    107129
    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_);
    125132    }
    126133
    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_);
    133136    }
    134 
    135137}
    136138
Note: See TracChangeset for help on using the changeset viewer.