Index: code/branches/sagerjFS16/src/modules/overlays/hud/HUDChargeBar.cc
===================================================================
--- code/branches/sagerjFS16/src/modules/overlays/hud/HUDChargeBar.cc	(revision 11185)
+++ code/branches/sagerjFS16/src/modules/overlays/hud/HUDChargeBar.cc	(revision 11189)
@@ -31,5 +31,4 @@
 #include "util/Convert.h"
 #include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
 #include "worldentities/pawns/Pawn.h"
 #include "overlays/OverlayGroup.h"
@@ -45,46 +44,8 @@
 
         this->owner_ = nullptr;
-        this->bUseBarColour_ = false;
-        this->textOffset_ = Vector2(0.0f, 0.0f);
-        this->textScale_ = 1.0f;
-        this->correspondingMode_ = nullptr;
-
-        this->setIconPosition(Vector2(0.05f,0.5f));
-        this->setIconDimensions(Vector2(0.1f,0.5f));
-
-        this->textoverlay_ = new OverlayText(this->getContext());
-
-        assert(this->textoverlay_.get());
-
-        this->textoverlay_->setCaption("");
-        this->textoverlay_->setAspectCorrection(false);
-
-        positionText();
+        this->correspondingMode_ = nullptr;             // usually no chargeable weapon equipped
     }
 
-    HUDChargeBar::~HUDChargeBar()
-    {
-        if (this->isInitialized())
-        {
-            this->textoverlay_->destroy();
-            this->textoverlay_ = nullptr;
-        }
-    }
-
-    void HUDChargeBar::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(HUDChargeBar, XMLPort, xmlelement, mode);
-
-        XMLPortParam(HUDChargeBar, "showtext",          setTextVisible,          getTextVisible,          xmlelement, mode).defaultValues(true);
-        XMLPortParam(HUDChargeBar, "textfont",          setTextFont,             getTextFont,             xmlelement, mode).defaultValues("Monofur");
-        XMLPortParam(HUDChargeBar, "textusebarcolour",  setTextUseBarColour,     getTextUseBarColour,     xmlelement, mode).defaultValues(false);
-        XMLPortParam(HUDChargeBar, "textcolour",        setTextColour,           getTextColour,           xmlelement, mode).defaultValues(ColourValue(1.0, 1.0, 1.0, 1.0));
-        XMLPortParam(HUDChargeBar, "textalign",         setTextAlignmentString,  getTextAlignmentString,  xmlelement, mode).defaultValues("left");
-        XMLPortParam(HUDChargeBar, "textoffset",        setTextOffset,           getTextOffset,           xmlelement, mode).defaultValues(Vector2::ZERO);
-        XMLPortParam(HUDChargeBar, "textscale",         setTextScale,            getTextScale,            xmlelement, mode).defaultValues(1.0f);
-        XMLPortParam(HUDChargeBar, "textpickpoint",     setTextPickPoint,        getTextPickPoint,        xmlelement, mode).defaultValues(Vector2::ZERO);
-        XMLPortParam(HUDChargeBar, "textrotation",      setTextRotation,         getTextRotation,         xmlelement, mode).defaultValues(0.0f);
-        XMLPortParam(HUDChargeBar, "textspacewidth",    setTextSpaceWidth,       getTextSpaceWidth,       xmlelement, mode).defaultValues(true);
-    }
+    HUDChargeBar::~HUDChargeBar() { }
 
     void HUDChargeBar::tick(float dt)
@@ -94,20 +55,21 @@
         if (this->owner_)
         {
-            if(correspondingMode_ != nullptr){
-                this->setValue( correspondingMode_->getCharges() * 1.0f / correspondingMode_->getMaxCharges() );
-                this->textoverlay_->setCaption(multi_cast<std::string>(static_cast<int>(this->owner_->getHealth())));
+            if(correspondingMode_ != nullptr)                                                                       // if there is a chargeable weapon equipped we want to show the charged amount with a HUDBar
+            {
+                this->setValue( correspondingMode_->getCharges() * 1.0f / correspondingMode_->getMaxCharges() );    // The Value of the HUDBar is the ratio of current Charges and the maximum Charges possible
+                
+                if(this->correspondingMode_->getCharges() > 0)                                                      // The HUDBar should only be visible when we are charging up
+                    this->setVisible(true);
+                }
+                else
+                {
+                    this->setVisible(false);
+                }
             }
-
-            
         }
         else
         {
             this->setValue(0);
-            this->textoverlay_->setCaption("0");
         }
-
-        if (this->bUseBarColour_)
-            this->textoverlay_->setColour(this->getCurrentBarColour());
-
 
     }
@@ -116,4 +78,7 @@
     {
         SUPER(HUDChargeBar, changedOwner);
+
+        this->setVisible(false);
+        this->correspondingMode_ = nullptr;
 
         this->owner_ = orxonox_cast<Pawn*>(this->getOwner());
@@ -141,56 +106,3 @@
         }
     }
-
-    void HUDChargeBar::changedOverlayGroup()
-    {
-        SUPER(HUDChargeBar, changedOverlayGroup);
-
-        this->getOverlayGroup()->addElement(this->textoverlay_.get());
-    }
-
-    void HUDChargeBar::changedVisibility()
-    {
-        SUPER(HUDChargeBar, changedVisibility);
-
-        this->textoverlay_->setVisible(this->isVisible());
-    }
-
-    void HUDChargeBar::changedName()
-    {
-        SUPER(HUDChargeBar, changedName);
-
-        this->textoverlay_->setName(this->getName() + "text");
-    }
-
-    void HUDChargeBar::setTextColour(const ColourValue& colour)
-    {
-        this->textColour_ = colour;
-        if (!this->bUseBarColour_)
-            this->textoverlay_->setColour(colour);
-    }
-
-    void HUDChargeBar::setTextUseBarColour(bool bUseBarColour)
-    {
-        this->bUseBarColour_ = bUseBarColour;
-        if (!bUseBarColour)
-            this->textoverlay_->setColour(this->textColour_);
-    }
-
-    void HUDChargeBar::positionText()
-    {
-        this->textoverlay_->setPosition(this->getPosition() + this->textOffset_*this->getActualSize());
-        this->textoverlay_->setTextSize(this->getActualSize().y*this->textScale_);
-    }
-
-    void HUDChargeBar::positionChanged()
-    {
-        HUDBar::positionChanged();
-        positionText();
-    }
-
-    void HUDChargeBar::sizeChanged()
-    {
-        HUDBar::sizeChanged();
-        positionText();
-    }    
 }
Index: code/branches/sagerjFS16/src/modules/overlays/hud/HUDChargeBar.h
===================================================================
--- code/branches/sagerjFS16/src/modules/overlays/hud/HUDChargeBar.h	(revision 11185)
+++ code/branches/sagerjFS16/src/modules/overlays/hud/HUDChargeBar.h	(revision 11189)
@@ -22,5 +22,5 @@
  *
  *   Author:
- *      Fabian 'x3n' Landau
+ *      Johannes Sager
  *   Co-authors:
  *      ...
@@ -28,13 +28,13 @@
  */
 
-#ifndef _HUDHealthBar_H__
-#define _HUDHealthBar_H__
+#ifndef _HUDChargeBar_H__
+#define _HUDChargeBar_H__
 
 #include "overlays/OverlaysPrereqs.h"
-
 #include "util/Math.h"
 #include "tools/interfaces/Tickable.h"
 #include "overlays/OverlayText.h"
 #include "HUDBar.h"
+
 #include "weaponsystem/WeaponSystem.h"
 #include "weaponsystem/WeaponPack.h"
@@ -44,4 +44,10 @@
 namespace orxonox
 {
+    /**
+    @brief
+        The HUDChargeBar displays the amount of charges of its owner (a @ref Pawn).
+        The length of the bar is given by the ratio of the current charges and the maximal charges of the @ref Pawn.
+    */
+
     class _OverlaysExport HUDChargeBar : public HUDBar, public Tickable
     {
@@ -50,82 +56,13 @@
             virtual ~HUDChargeBar();
 
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             virtual void tick(float dt) override;
             virtual void changedOwner() override;
-            virtual void changedOverlayGroup() override;
-            virtual void changedVisibility() override;
-            virtual void changedName() override;
-
-            inline void setTextFont(const std::string& font)
-                { if (!font.empty()) { this->textoverlay_->setFont(font); } }
-            inline const std::string& getTextFont() const
-                { return this->textoverlay_->getFont(); }
-
-            void setTextColour(const ColourValue& colour);
-            inline const ColourValue& getTextColour() const
-                { return this->textoverlay_->getColour(); }
-
-            void setTextUseBarColour(bool bUseBarColour);
-            inline bool getTextUseBarColour() const
-                { return this->bUseBarColour_; }
-
-            inline void setTextAlignment(OverlayText::Alignment alignment)
-                { this->textoverlay_->setAlignment(alignment); }
-            inline OverlayText::Alignment getTextAlignment() const
-                { return this->textoverlay_->getAlignment(); }
-
-            void setTextAlignmentString(const std::string& alignment)
-                { this->textoverlay_->setAlignmentString(alignment); }
-            std::string getTextAlignmentString() const
-                { return this->textoverlay_->getAlignmentString(); }
-
-            inline void setTextVisible(bool bVisible)
-                { this->textoverlay_->setVisible(bVisible); }
-            inline bool getTextVisible() const
-                { return this->textoverlay_->isVisible(); }
-
-            inline void setTextScale(float scale)
-                { this->textScale_ = scale;
-                  positionText();
-                }
-            inline float getTextScale() const
-                { return this->textScale_; }
-
-            inline void setTextPickPoint(const Vector2& pickpoint)
-                { this->textoverlay_->setPickPoint(pickpoint); }
-            inline Vector2 getTextPickPoint() const
-                { return this->textoverlay_->getPickPoint(); }
-
-            inline void setTextOffset(const Vector2& position)
-                { this->textOffset_ = position;
-                  this->positionText();
-                }
-            inline Vector2 getTextOffset() const
-                { return this->textOffset_; }
-
-            inline void setTextRotation(const Degree& angle)
-                { this->textoverlay_->setRotation(angle); }
-            inline const Degree& getTextRotation() const
-                { return this->textoverlay_->getRotation(); }
-
-            inline void setTextSpaceWidth(float width)
-                { this->textoverlay_->setSpaceWidth(width); }
-            inline float getTextSpaceWidth() const
-                { return this->textoverlay_->getSpaceWidth(); }
 
             inline void setHealthBarOwner(Pawn* owner)
                 { this->owner_ = owner; }
-        protected:
-            virtual void positionChanged() override;
-            virtual void sizeChanged() override;
+        
         private:
-            WeaponMode* correspondingMode_;
-            void positionText();
+            WeaponMode* correspondingMode_;         // pointer on the chargeable weaponmode (=nullptr if no chargeable weapons equipped)
             WeakPtr<Pawn> owner_;
-            StrongPtr<OverlayText> textoverlay_;
-            bool bUseBarColour_;
-            ColourValue textColour_;
-            Vector2 textOffset_;
-            float textScale_;
     };
 }
Index: code/branches/sagerjFS16/src/modules/weapons/weaponmodes/Discharger.cc
===================================================================
--- code/branches/sagerjFS16/src/modules/weapons/weaponmodes/Discharger.cc	(revision 11185)
+++ code/branches/sagerjFS16/src/modules/weapons/weaponmodes/Discharger.cc	(revision 11189)
@@ -21,5 +21,5 @@
  *
  *   Author:
- *      God of everything
+ *      Johannes Sager
  *   Co-authors:
  *    
@@ -51,8 +51,8 @@
         RegisterObject(Discharger);
 
-        this->reloadTime_ = 3.14159f;
-        this->damage_ = 0.0f;
-        this->speed_ = 100.0f;
-        this->chargeable_ = true;
+        this->reloadTime_ = 3.14159f;           // how long you cannot charge after fire
+        this->damage_ = 0.0f;                   // if 0.0f then it uses weaponsettings.oxi
+        this->speed_ = 100.0f;                  // base projectile speed
+        this->chargeable_ = true;               // true if weapon chargeable
 
         this->setMunitionName("LaserMunition");
@@ -70,11 +70,10 @@
         projectile->setOrientation(this->getMuzzleOrientation());
         projectile->setPosition(this->getMuzzlePosition());
-        projectile->setVelocity(this->getMuzzleDirection() * this->speed_ * this->charges_ / 5);
-
+        projectile->setVelocity(this->getMuzzleDirection() * this->speed_ * this->charges_ / 5);// we scale the projectile speed with the current charges / 5
         projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
         projectile->setDamage(this->getDamage() * this->charges_);
-        projectile->setShieldDamage(this->getShieldDamage() * this->charges_);
-        projectile->setHealthDamage(this->getHealthDamage() * this->charges_);
-        this->charges_ = 0;
+        projectile->setShieldDamage(this->getShieldDamage() * this->charges_);                  // we scale both types of damage with the current charges as
+        projectile->setHealthDamage(this->getHealthDamage() * this->charges_);                  // well since this is the whole purpose of a chareable weapon
+        this->charges_ = 0;                                                                     // firing "consumes" the current charges (reset after fire)
     }
 }
Index: code/branches/sagerjFS16/src/modules/weapons/weaponmodes/Discharger.h
===================================================================
--- code/branches/sagerjFS16/src/modules/weapons/weaponmodes/Discharger.h	(revision 11185)
+++ code/branches/sagerjFS16/src/modules/weapons/weaponmodes/Discharger.h	(revision 11189)
@@ -21,5 +21,5 @@
  *
  *   Author:
- *       God of everything
+ *       Johannes Sager
  *   Co-authors:
  *      
