Index: code/trunk/data/levels/jump.oxw
===================================================================
--- code/trunk/data/levels/jump.oxw	(revision 10259)
+++ code/trunk/data/levels/jump.oxw	(revision 10260)
@@ -243,5 +243,4 @@
             <Model position="0,0,-1000" mesh="JumpPlatform06.mesh" scale="1" />
             <Model position="0,0,-1000" mesh="JumpProjectile.mesh" scale="1" />
-            <Model position="0,0,-1000" mesh="JumpFigure.mesh" scale="1" />
             <Model position="0,0,-1000" mesh="JumpEnemy1.mesh" scale="1" />
             <Model position="0,0,-1000" mesh="JumpEnemy2.mesh" scale="1" />
@@ -250,4 +249,7 @@
             <Model position="0,0,-1000" mesh="JumpSpring.mesh" scale="1" />
             <Model position="0,0,-1000" mesh="JumpRocket.mesh" scale="1" />
+            <Model position="0,0,-1000" mesh="JumpPropeller.mesh" scale="1" />
+            <Model position="0,0,-1000" mesh="JumpBoots.mesh" scale="1" />
+            <Model position="0,0,-1000" mesh="JumpShield.mesh" scale="1" />
           </attached>
         </JumpCenterpoint>
Index: code/trunk/data/overlays/jumpHUD.oxo
===================================================================
--- code/trunk/data/overlays/jumpHUD.oxo	(revision 10259)
+++ code/trunk/data/overlays/jumpHUD.oxo	(revision 10260)
@@ -1,4 +1,5 @@
 <Template name="JumpHUD">
   <OverlayGroup name="JumpHUD" scale = "1, 1">
+
     <JumpScore
      position  = "0.5, 0.05"
@@ -9,4 +10,17 @@
      align     = "center"
      showScore = true
+     showFuel = false
+     showMessages = false
+    />
+
+    <JumpScore
+     position  = "0.1, 0.05"
+     pickpoint = "0.0, 0.0"
+     font      = "ShareTechMono"
+     textsize  = 0.05
+     colour    = "1.0, 0.5, 0.0, 1.0"
+     align     = "left"
+     showScore = false
+     showFuel = true
      showMessages = false
     />
@@ -21,7 +35,24 @@
      gameOverText = "GAME OVER"
      showScore = false
+     showFuel = false
      showMessages = true
     />    
 
+  <HUDBar
+     name          = "SpeedBar1"
+     background    = "Orxonox/BarBackground"
+     size          = "0.35, 0.05"
+     position      = "0.0 , 1.0 "
+     pickpoint     = "0, 1"
+     correctaspect = false
+
+     initialvalue = 50
+
+     >
+      <BarColour position = 0.0 colour = "0.7,0.5,0.2" />
+      <BarColour position = 0.5 colour = "0.2,0.7,0.2" />
+      <BarColour position = 1.0 colour = "0.7,0.2,0.2" />
+    </HUDBar>
+
   </OverlayGroup>
 </Template>
Index: code/trunk/src/modules/jump/Jump.cc
===================================================================
--- code/trunk/src/modules/jump/Jump.cc	(revision 10259)
+++ code/trunk/src/modules/jump/Jump.cc	(revision 10260)
@@ -1271,4 +1271,29 @@
     }
 
+    float Jump::getFuel() const
+    {
+        if (this->figure_ != NULL)
+        {
+            if (this->figure_->rocketActive_ != NULL)
+            {
+                return this->figure_->rocketActive_->getFuelState();
+            }
+            else if (this->figure_->propellerActive_ != NULL)
+            {
+                return this->figure_->propellerActive_->getFuelState();
+            }
+            else if (this->figure_->shieldActive_ != NULL)
+            {
+                return this->figure_->shieldActive_->getFuelState();
+            }
+            else if (this->figure_->bootsActive_ != NULL)
+            {
+                return this->figure_->bootsActive_->getFuelState();
+            }
+        }
+
+        return 0.0;
+    }
+
     bool Jump::getDead(PlayerInfo* player) const
     {
Index: code/trunk/src/modules/jump/Jump.h
===================================================================
--- code/trunk/src/modules/jump/Jump.h	(revision 10259)
+++ code/trunk/src/modules/jump/Jump.h	(revision 10260)
@@ -21,5 +21,5 @@
  *
  *   Author:
- *      Fabian 'x3n' Landau
+ *      Fabien Vultier
  *   Co-authors:
  *      ...
@@ -49,4 +49,5 @@
             virtual void spawnPlayer(PlayerInfo* player);
             int getScore(PlayerInfo* player) const;
+            float getFuel() const;
             bool getDead(PlayerInfo* player) const;
             void setCenterpoint(JumpCenterpoint* center)
Index: code/trunk/src/modules/jump/JumpBoots.cc
===================================================================
--- code/trunk/src/modules/jump/JumpBoots.cc	(revision 10259)
+++ code/trunk/src/modules/jump/JumpBoots.cc	(revision 10260)
@@ -52,5 +52,6 @@
         RegisterObject(JumpBoots);
 
-        fuel_ = 3.0;
+        initialFuel_ = 3.0;
+        fuel_ = initialFuel_;
         attachedToFigure_ = false;
 
@@ -102,3 +103,8 @@
         attachedToFigure_ = figure_->StartBoots(this);
     }
+
+    float JumpBoots::getFuelState()
+    {
+        return fuel_/initialFuel_;
+    }
 }
Index: code/trunk/src/modules/jump/JumpBoots.h
===================================================================
--- code/trunk/src/modules/jump/JumpBoots.h	(revision 10259)
+++ code/trunk/src/modules/jump/JumpBoots.h	(revision 10260)
@@ -45,7 +45,9 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             virtual void touchFigure();
+            virtual float getFuelState();
         protected:
             float stretch_;
             float fuel_;
+            float initialFuel_;
     };
 }
Index: code/trunk/src/modules/jump/JumpFigure.cc
===================================================================
--- code/trunk/src/modules/jump/JumpFigure.cc	(revision 10259)
+++ code/trunk/src/modules/jump/JumpFigure.cc	(revision 10260)
@@ -70,8 +70,8 @@
         animateHands_ = false;
         turnUp_ = false;
-        rocketActive_ = false;
-        propellerActive_ = false;
-        bootsActive_ = false;
-        shieldActive_ = false;
+        rocketActive_ = NULL;
+        propellerActive_ = NULL;
+        bootsActive_ = NULL;
+        shieldActive_ = NULL;
         rocketSpeed_ = 0.0;
         propellerSpeed_ = 0.0;
@@ -106,9 +106,9 @@
             // Move up/down
             Vector3 velocity = getVelocity();
-            if (rocketActive_ == true)
+            if (rocketActive_ != NULL)
             {
                 velocity.z = rocketSpeed_;
             }
-            else if (propellerActive_ == true)
+            else if (propellerActive_ != NULL)
             {
                 velocity.z = propellerSpeed_;
@@ -207,7 +207,13 @@
         {
             Vector3 velocity = getVelocity();
-            velocity.z = (bootsActive_ ? 1.2f*jumpSpeed_ : jumpSpeed_);
+            if (bootsActive_ == NULL)
+            {
+                velocity.z = 1.2f*jumpSpeed_;
+            }
+            else
+            {
+                velocity.z = jumpSpeed_;
+            }
             setVelocity(velocity);
-
             animateHands_ = true;
             handAngle_ = 0.0;
@@ -228,5 +234,5 @@
     void JumpFigure::CollisionWithEnemy(JumpEnemy* enemy)
     {
-        if (rocketActive_ == false && propellerActive_ == false && shieldActive_ == false)
+        if (rocketActive_ == NULL && propellerActive_ == NULL && shieldActive_ == NULL)
         {
             dead_ = true;
@@ -236,10 +242,10 @@
     bool JumpFigure::StartRocket(JumpRocket* rocket)
     {
-        if (rocketActive_ == false && propellerActive_ == false && bootsActive_ == false)
+        if (rocketActive_ == NULL && propellerActive_ == NULL && bootsActive_ == NULL)
         {
             attach(rocket);
             rocket->setPosition(0.0, rocketPos_, 0.0);
             rocket->setVelocity(0.0, 0.0, 0.0);
-            rocketActive_ = true;
+            rocketActive_ = rocket;
 
             return true;
@@ -255,15 +261,15 @@
         detach(rocket);
         rocket->destroy();
-        rocketActive_ = false;
+        rocketActive_ = NULL;
     }
 
     bool JumpFigure::StartPropeller(JumpPropeller* propeller)
     {
-        if (rocketActive_ == false && propellerActive_ == false && bootsActive_ == false)
+        if (rocketActive_ == NULL && propellerActive_ == NULL && bootsActive_ == NULL)
         {
             attach(propeller);
             propeller->setPosition(0.0, 0.0, propellerPos_);
             propeller->setVelocity(0.0, 0.0, 0.0);
-            propellerActive_ = true;
+            propellerActive_ = propeller;
 
             return true;
@@ -279,15 +285,15 @@
         detach(propeller);
         propeller->destroy();
-        propellerActive_ = false;
+        propellerActive_ = NULL;
     }
 
     bool JumpFigure::StartBoots(JumpBoots* boots)
     {
-        if (rocketActive_ == false && propellerActive_ == false && bootsActive_ == false)
+        if (rocketActive_ == NULL && propellerActive_ == NULL && bootsActive_ == NULL)
         {
             attach(boots);
             boots->setPosition(0.0, 0.0, bootsPos_);
             boots->setVelocity(0.0, 0.0, 0.0);
-            bootsActive_ = true;
+            bootsActive_ = boots;
 
             return true;
@@ -303,5 +309,5 @@
         detach(boots);
         boots->destroy();
-        bootsActive_ = false;
+        bootsActive_ = NULL;
     }
 
@@ -313,5 +319,5 @@
             shield->setPosition(0.0, 0.0, propellerPos_);
             shield->setVelocity(0.0, 0.0, 0.0);
-            shieldActive_ = true;
+            shieldActive_ = shield;
 
             return true;
@@ -327,5 +333,5 @@
         detach(shield);
         shield->destroy();
-        shieldActive_ = false;
+        shieldActive_ = NULL;
     }
 
Index: code/trunk/src/modules/jump/JumpFigure.h
===================================================================
--- code/trunk/src/modules/jump/JumpFigure.h	(revision 10259)
+++ code/trunk/src/modules/jump/JumpFigure.h	(revision 10260)
@@ -31,5 +31,4 @@
 
 #include "jump/JumpPrereqs.h"
-
 #include "worldentities/ControllableEntity.h"
 
@@ -119,7 +118,10 @@
 
             bool fireSignal_;
-            bool rocketActive_;
-            bool propellerActive_;
             bool dead_;
+
+            JumpRocket* rocketActive_;
+            JumpPropeller* propellerActive_;
+            JumpBoots* bootsActive_;
+            JumpShield* shieldActive_;
         private:
             std::string modelLeftHand_;
@@ -149,6 +151,4 @@
             bool animateHands_;
             bool turnUp_;
-            bool bootsActive_;
-            bool shieldActive_;
             float rocketSpeed_;
             float propellerSpeed_;
Index: code/trunk/src/modules/jump/JumpItem.h
===================================================================
--- code/trunk/src/modules/jump/JumpItem.h	(revision 10259)
+++ code/trunk/src/modules/jump/JumpItem.h	(revision 10260)
@@ -53,5 +53,5 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             virtual void setProperties(float newLeftBoundary, float newRightBoundary, float newLowerBoundary, float newUpperBoundary, float newHSpeed, float newVSpeed);
-            virtual void setFigure(WeakPtr<JumpFigure> bats); //!< Set the bats for the ball.
+            virtual void setFigure(WeakPtr<JumpFigure> bats);
             virtual void touchFigure();
 
@@ -74,7 +74,7 @@
 
         protected:
-            float fieldWidth_; //!< The width of the playing field.
-            float fieldHeight_; //!< The height of the playing field.
-            WeakPtr<JumpFigure> figure_; //!< An array with the two bats.
+            float fieldWidth_;
+            float fieldHeight_;
+            WeakPtr<JumpFigure> figure_;
             float height_;
             float width_;
Index: code/trunk/src/modules/jump/JumpPropeller.cc
===================================================================
--- code/trunk/src/modules/jump/JumpPropeller.cc	(revision 10259)
+++ code/trunk/src/modules/jump/JumpPropeller.cc	(revision 10260)
@@ -52,5 +52,6 @@
         RegisterObject(JumpPropeller);
 
-        fuel_ = 3.0;
+        initialFuel_ = 3.0;
+        fuel_ = initialFuel_;
         attachedToFigure_ = false;
 
@@ -106,3 +107,8 @@
         }
     }
+
+    float JumpPropeller::getFuelState()
+    {
+        return fuel_/initialFuel_;
+    }
 }
Index: code/trunk/src/modules/jump/JumpPropeller.h
===================================================================
--- code/trunk/src/modules/jump/JumpPropeller.h	(revision 10259)
+++ code/trunk/src/modules/jump/JumpPropeller.h	(revision 10260)
@@ -47,7 +47,9 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             virtual void touchFigure();
+            virtual float getFuelState();
         protected:
             float stretch_;
             float fuel_;
+            float initialFuel_;
     };
 }
Index: code/trunk/src/modules/jump/JumpRocket.cc
===================================================================
--- code/trunk/src/modules/jump/JumpRocket.cc	(revision 10259)
+++ code/trunk/src/modules/jump/JumpRocket.cc	(revision 10260)
@@ -49,5 +49,6 @@
         RegisterObject(JumpRocket);
 
-        fuel_ = 3.0;
+        initialFuel_ = 3.0;
+        fuel_ = initialFuel_;
         attachedToFigure_ = false;
 
@@ -99,3 +100,8 @@
         attachedToFigure_ = figure_->StartRocket(this);
     }
+
+    float JumpRocket::getFuelState()
+    {
+        return fuel_/initialFuel_;
+    }
 }
Index: code/trunk/src/modules/jump/JumpRocket.h
===================================================================
--- code/trunk/src/modules/jump/JumpRocket.h	(revision 10259)
+++ code/trunk/src/modules/jump/JumpRocket.h	(revision 10260)
@@ -44,7 +44,9 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             virtual void touchFigure();
+            virtual float getFuelState();
         protected:
             float stretch_;
             float fuel_;
+            float initialFuel_;
     };
 }
Index: code/trunk/src/modules/jump/JumpScore.cc
===================================================================
--- code/trunk/src/modules/jump/JumpScore.cc	(revision 10259)
+++ code/trunk/src/modules/jump/JumpScore.cc	(revision 10260)
@@ -50,4 +50,5 @@
         owner_ = NULL;
         showScore_ = false;
+        showFuel_ = false;
         showMessages_ = false;
     }
@@ -63,4 +64,5 @@
 
         XMLPortParam(JumpScore, "showScore", setShowScore, getShowScore, xmlelement, mode);
+        XMLPortParam(JumpScore, "showFuel", setShowFuel, getShowFuel, xmlelement, mode);
         XMLPortParam(JumpScore, "showMessages", setShowMessages, getShowMessages, xmlelement, mode);
         XMLPortParam(JumpScore, "gameOverText", setGameOverText, getGameOverText, xmlelement, mode);
@@ -86,7 +88,22 @@
                         setCaption(str);
                     }
+                    else if (showFuel_ == true)
+                    {
+                        float fuel = owner_->getFuel();
+                        orxout() <<  fuel << endl;
+                        std::string str;
+
+                        if (fuel <= 0.0)
+                        {
+                            str = "";
+                        }
+                        else
+                        {
+                            str = multi_cast<std::string>(fuel);
+                        }
+                        setCaption(str);
+                    }
                     else if (showMessages_ == true)
                     {
-
                         setCaption(owner_->getDead(player_) == true ? gameOverText_ : "");
                     }
Index: code/trunk/src/modules/jump/JumpScore.h
===================================================================
--- code/trunk/src/modules/jump/JumpScore.h	(revision 10259)
+++ code/trunk/src/modules/jump/JumpScore.h	(revision 10260)
@@ -54,4 +54,10 @@
                 { return showScore_; }
 
+            void setShowFuel(const bool showFuel)
+                { showFuel_ = showFuel; }
+
+            const bool getShowFuel() const
+                { return showFuel_; }
+
             void setShowMessages(const bool showMessages)
                 { showMessages_ = showMessages; }
@@ -71,4 +77,5 @@
             WorldSound* scoreSound_;
             bool showScore_;
+            bool showFuel_;
             bool showMessages_;
             std::string gameOverText_;
Index: code/trunk/src/modules/jump/JumpShield.cc
===================================================================
--- code/trunk/src/modules/jump/JumpShield.cc	(revision 10259)
+++ code/trunk/src/modules/jump/JumpShield.cc	(revision 10260)
@@ -52,5 +52,6 @@
         RegisterObject(JumpShield);
 
-        fuel_ = 7.0;
+        initialFuel_ = 7.0;
+        fuel_ = initialFuel_;
         attachedToFigure_ = false;
 
@@ -102,3 +103,8 @@
         attachedToFigure_ = figure_->StartShield(this);
     }
+
+    float JumpShield::getFuelState()
+    {
+        return fuel_/initialFuel_;
+    }
 }
Index: code/trunk/src/modules/jump/JumpShield.h
===================================================================
--- code/trunk/src/modules/jump/JumpShield.h	(revision 10259)
+++ code/trunk/src/modules/jump/JumpShield.h	(revision 10260)
@@ -47,7 +47,9 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             virtual void touchFigure();
+            virtual float getFuelState();
         protected:
             float stretch_;
             float fuel_;
+            float initialFuel_;
     };
 }
