Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 21, 2008, 12:57:10 PM (16 years ago)
Author:
FelixSchulthess
Message:

removed some warnings caused by implicit conversion

File:
1 edited

Legend:

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

    r1283 r1342  
    2222*      Yuning Chai
    2323*   Co-authors:
    24 *      ...
     24*      Felix Schulthess
    2525*
    2626*/
     
    2929#include <OgreOverlayElement.h>
    3030#include <OgrePanelOverlayElement.h>
    31 
    32 
     31#include "GraphicsEngine.h"
    3332#include "BarOverlayElement.h"
    3433
     
    3736  using namespace Ogre;
    3837
    39 
    40     BarOverlayElement::BarOverlayElement(const String& name):Ogre::PanelOverlayElement(name){}
     38    BarOverlayElement::BarOverlayElement(const String& name):Ogre::PanelOverlayElement(name){
     39        name_ = name;
     40    }
    4141
    4242    BarOverlayElement::~BarOverlayElement(){}
    4343
    44     void BarOverlayElement::initialise(){
    45         PanelOverlayElement::initialise();
    46 /*      setDimensions(100,100);
    47         setPosition(10,10);
    48         setMaterialName("Orxonox/Green");
    49         setMetricsMode(Ogre::GMM_PIXELS);
    50 */  }
     44    void BarOverlayElement::init(Real leftRel, Real topRel, Real dimRel, 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        left2Right = false;     // default is right to left progress
     52        leftRel_ = leftRel;
     53        topRel_ = topRel;
     54        dimRel_ = dimRel;
     55       
     56        // create background...
     57        background_ = static_cast<OverlayContainer*>(om->createOverlayElement("Panel", name_+"container"));
     58        background_->show();
     59        container_->addChild(background_);
     60        background_->setMetricsMode(Ogre::GMM_PIXELS);
     61        background_->setMaterialName("Orxonox/BarBackground");
    5162
     63        // calculate absolute coordinates...
     64        resize();
    5265
    53     void BarOverlayElement::initBarOverlayElement(Real left, Real top, Real width, Real height,
    54        int dir,  int colour){
    55          setMetricsMode(Ogre::GMM_PIXELS);
    56          dir_ = dir;
    57          left_ = left;
    58          top_ = top;
    59          width_ = width;
    60          height_ = height;
    61          setPosition(left_,top_);
    62          setDimensions(width_,height_);
    63          setColour(colour);
     66        show();
     67        setMetricsMode(Ogre::GMM_PIXELS);
     68        setMaterialName("Orxonox/Green");
     69        background_->addChild(this);
    6470    }
    6571
    66 
    67    void BarOverlayElement::reset(int percentage){
    68       switch(dir_){
    69         case 1:
    70           setPosition(left_,top_);
    71           setDimensions(width_,height_*percentage/100);
    72           break;
    73         case 2:
    74           setPosition(left_+width_-width_*percentage/100,top_);
    75           setDimensions(width_*percentage/100,height_);
    76           break;
    77         case 3:
    78           setPosition(left_,top_+height_-height_*percentage/100);
    79           setDimensions(width_,height_*percentage/100);
    80           break;
    81         default:
    82           setPosition(left_,top_);
    83           setDimensions(width_*percentage/100,height_);
    84       }
    85     }
    86        
    87        
    88     void BarOverlayElement::setColour(int colour){
    89       switch(colour){
    90         case 0:
    91           setMaterialName("Orxonox/Red");
    92           break;
    93         case 1:
    94           setMaterialName("Orxonox/Yellow");
    95           break;
    96         case 2:
    97           setMaterialName("Orxonox/Green");
    98       }
     72    void BarOverlayElement::resize(){
     73        windowW_ = GraphicsEngine::getSingleton().getWindowWidth();
     74        windowH_ = GraphicsEngine::getSingleton().getWindowHeight();
     75        // calculate new absolute coordinates...
     76        left_ = (int) (leftRel_ * windowW_);
     77        top_ = (int) (topRel_ * windowH_);
     78        width_ = (int) (dimRel_ * windowW_);
     79        height_ = (int) (0.1*width_);   // the texture has dimensions height:length = 1:10
     80        // adapt background
     81        background_->setPosition(left_, top_);
     82        background_->setDimensions(width_, height_);
     83        // adapt bar
     84        setValue(value_);
    9985    }
    10086
    101 
    102     SmartBarOverlayElement::SmartBarOverlayElement(const String& name):BarOverlayElement(name){}
    103 
    104     SmartBarOverlayElement::~SmartBarOverlayElement(void){}
    105    
    106    
    107     void SmartBarOverlayElement::initialise(){
    108       PanelOverlayElement::initialise();
    109 /*      setDimensions(100,100);
    110       setPosition(10,10);
    111       setMaterialName("Orxonox/Green");
    112       setMetricsMode(Ogre::GMM_PIXELS);
    113 */  }
    114    
    115     void SmartBarOverlayElement::initSmartBarOverlayElement(Real left, Real top, Real width, Real height, int dir)
    116     {
    117       BarOverlayElement::initBarOverlayElement(left, top, width, height, dir, BarOverlayElement::GREEN);
     87    void BarOverlayElement::setValue(float value){
     88        value_ = value;
     89        // set color, if nescessary
     90        if(autoColor_){
     91            if (value_>0.5) {setColor(BarOverlayElement::GREEN);}
     92            else if (value_>0.25) {setColor(BarOverlayElement::YELLOW);}
     93            else setColor(BarOverlayElement::RED);
     94        }
     95        // set value
     96        if(left2Right){ // backward case
     97            setPosition(0+width_-width_*value_, 0);
     98            setDimensions(width_*value_,height_);
     99        }else{          // default case
     100            setPosition(0, 0);
     101            setDimensions(width_*value_,height_);
     102        }
     103        if(value_ != 0) setTiling(value_, 1.0);
    118104    }
    119105
    120 
    121     void SmartBarOverlayElement::reset(int percentage){
    122       if (percentage>50) {setColour(BarOverlayElement::GREEN);}
    123       else if (percentage>25) {setColour(BarOverlayElement::YELLOW);}
    124       else setColour(BarOverlayElement::RED);
    125       OverlayElementBar::reset(percentage);
     106    void BarOverlayElement::setColor(int color){
     107        color_ = color;
     108        switch(color){
     109        case 0:
     110            setMaterialName("Orxonox/Red");
     111            break;
     112        case 1:
     113            setMaterialName("Orxonox/Yellow");
     114            break;
     115        case 2:
     116            setMaterialName("Orxonox/Green");
     117        }
    126118    }
    127119
     120    float BarOverlayElement::getValue(){
     121        return(value_);
     122    }
     123
     124    int BarOverlayElement::getBarColor(){
     125        return(color_);
     126    }
    128127}
    129128
Note: See TracChangeset for help on using the changeset viewer.