Index: /trunk/src/lib/graphics/graphics_engine.cc
===================================================================
--- /trunk/src/lib/graphics/graphics_engine.cc	(revision 6440)
+++ /trunk/src/lib/graphics/graphics_engine.cc	(revision 6441)
@@ -19,4 +19,5 @@
 #include "resource_manager.h"
 #include "event_handler.h"
+#include "state.h"
 
 #include "world_entity.h"
@@ -298,4 +299,5 @@
   this->resolutionY = height;
   this->bitsPerPixel = bpp;
+  State::setResolution( width, height);
 
   if (this->screen != NULL)
Index: /trunk/src/util/hud.cc
===================================================================
--- /trunk/src/util/hud.cc	(revision 6440)
+++ /trunk/src/util/hud.cc	(revision 6441)
@@ -18,4 +18,6 @@
 #include "hud.h"
 
+#include "state.h"
+
 using namespace std;
 
@@ -29,8 +31,10 @@
   this->setClassID(CL_HUD, "Hud");
 
-
+  //this->setSize2D(
   this->energyWidget = NULL;
   this->shieldWidget = NULL;
   this->armorWidget = NULL;
+  this->resX = 1;
+  this->resY = 1;
 }
 
@@ -67,9 +71,7 @@
   {
     this->energyWidget->show();
-    this->energyWidget->setAbsCoor2D(10,80);
-    this->energyWidget->setSize2D(20,300);
   }
 
-
+  this->updateResolution();
 }
 
@@ -94,3 +96,26 @@
 }
 
-void setResolution(unsigned int resX, unsigned int resY);
+void Hud::updateResolution()
+{
+  this->resX = State::resX();
+  this->resY = State::resY();
+  if (this->energyWidget != NULL)
+  {
+    this->energyWidget->setAbsCoor2D(.02 * this->resX, .4 * this->resY);
+    this->energyWidget->setSize2D(.05 * this->resX, .55 * this->resY);
+  }
+}
+
+
+void Hud::tick(float dt)
+{
+  if (this->resY != State::resY() || this->resX != State::resY())
+    this->updateResolution();
+}
+
+void Hud::draw() const
+{
+  GLGuiWidget::draw();
+}
+
+
Index: /trunk/src/util/hud.h
===================================================================
--- /trunk/src/util/hud.h	(revision 6440)
+++ /trunk/src/util/hud.h	(revision 6441)
@@ -15,5 +15,5 @@
 
 //! A class that renders a HUD.
-class Hud : private GLGuiWidget
+class Hud : public GLGuiWidget
 {
 
@@ -21,4 +21,5 @@
   Hud();
   virtual ~Hud();
+
 
   void loadParams(const TiXmlElement* root);
@@ -32,9 +33,12 @@
   void removeWeaponWidget(GLGuiWidget* widget);
 
-  void setResolution(unsigned int resX, unsigned int resY);
+  void tick(float dt);
+  void draw() const;
 
+  private:
+    void updateResolution();
 private:
-  unsigned int             resX;          //!< The X-Resolution needed for resizing the Hud.
-  unsigned int             resY;          //!< The Y-Resolution needed for resizing the Hud.
+  unsigned int             resX;
+  unsigned int             resY;
 
   GLGuiWidget*             energyWidget;
Index: /trunk/src/util/state.cc
===================================================================
--- /trunk/src/util/state.cc	(revision 6440)
+++ /trunk/src/util/state.cc	(revision 6441)
@@ -31,4 +31,7 @@
 ObjectManager* State::objectManager = NULL;
 
+unsigned int State::_resX = 1;
+unsigned int State::_resY = 1;
+
 /**
  *  sets camera and target of the current Camera
Index: /trunk/src/util/state.h
===================================================================
--- /trunk/src/util/state.h	(revision 6440)
+++ /trunk/src/util/state.h	(revision 6441)
@@ -39,4 +39,8 @@
   static inline ObjectManager* getObjectManager() { return State::objectManager; };
 
+  static inline void setResolution(unsigned int resX, unsigned int resY) { State::_resX = resX; State::_resY = resY; };
+  static inline unsigned int resX() { return State::_resX; };
+  static inline unsigned int resY() { return State::_resY; };
+
   /////////////////////////
   /// WORLD_ENTITY_LIST ///
@@ -51,4 +55,6 @@
   static ObjectManager*         objectManager;      //!< A referenct to the current ObjectManager
 
+  static unsigned int           _resX;              //!< The X Resolution of the screen.
+  static unsigned int           _resY;              //!< The Y Resolution of the screen.
 };
 
Index: /trunk/src/world_entities/player.cc
===================================================================
--- /trunk/src/world_entities/player.cc	(revision 6440)
+++ /trunk/src/world_entities/player.cc	(revision 6441)
@@ -38,5 +38,5 @@
 
   this->controllable = NULL;
-  this->hud = new Hud();
+  this->hud.show();
 
   EventHandler::getInstance()->subscribe(this, ES_GAME, SDLK_l);
@@ -49,5 +49,4 @@
 Player::~Player ()
 {
-  delete this->hud;
 
 }
@@ -59,5 +58,5 @@
   {
       this->controllable = controllable;
-      this->hud->setEnergyWidget(this->controllable->getEnergyWidget());
+      this->hud.setEnergyWidget(this->controllable->getEnergyWidget());
       return true;
   }
@@ -73,5 +72,5 @@
    {
      this->controllable = NULL;
-     this->hud->setEnergyWidget(NULL);
+     this->hud.setEnergyWidget(NULL);
      return true;
    }
Index: /trunk/src/world_entities/player.h
===================================================================
--- /trunk/src/world_entities/player.h	(revision 6440)
+++ /trunk/src/world_entities/player.h	(revision 6441)
@@ -9,7 +9,9 @@
 #include "event_listener.h"
 
+#include "util/hud.h"
+
 /* Forward Declaration */
 class Playable;
-class Hud;
+
 
 //! Basic controllable WorldEntity
@@ -36,5 +38,5 @@
   private:
     Playable*         controllable;                  //!< The one we controll or NULL if none
-    Hud*              hud;                           //!< The HUD to be displayed.
+    Hud               hud;                           //!< The HUD to be displayed for this Player.
 };
 
