Index: /branches/playability/src/util/hud.cc
===================================================================
--- /branches/playability/src/util/hud.cc	(revision 10277)
+++ /branches/playability/src/util/hud.cc	(revision 10278)
@@ -197,4 +197,7 @@
 void Hud::setWeaponManager(WeaponManager* weaponMan, WeaponManager* weaponManSec)
 {
+  //clearWeaponManager();
+
+  //Hide all widgets
   if (this->weaponManager != NULL)
   {
@@ -205,5 +208,5 @@
       {
         weapon->getEnergyWidget()->hide();
-        this->weaponsWidgetsPrim.remove(dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (weapon->getEnergyWidget()));
+        //this->weaponsWidgetsPrim.remove(dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (weapon->getEnergyWidget()));
       }
     }
@@ -218,5 +221,5 @@
       {
         weapon->getEnergyWidget()->hide();
-        this->weaponsWidgetsSec.remove(dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (weapon->getEnergyWidget()));
+        //this->weaponsWidgetsSec.remove(dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (weapon->getEnergyWidget()));
       }
     }
@@ -224,5 +227,5 @@
 
   this->weaponManager = weaponMan;
-  this->weaponManagerSecondary = weaponManSec;
+  this->weaponManagerSecondary = weaponManSec; 
 
   this->updateWeaponManager();
@@ -230,7 +233,43 @@
 }
 
+/*
+void Hud::clearWeaponManager()
+{
+  //Hide all widgets
+  if (this->weaponManager != NULL)
+  {
+    for (unsigned int i = 0; i < this->weaponManager->getSlotCount(); i++)
+    {
+      Weapon* weapon = this->weaponManager->getWeapon(i);
+      if (weapon != NULL)
+      {
+        weapon->getEnergyWidget()->hide();
+        //this->weaponsWidgetsPrim.remove(dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (weapon->getEnergyWidget()));
+      }
+    }
+  }
+
+  if (this->weaponManagerSecondary != NULL)
+  {
+    for (unsigned int i = 0; i < this->weaponManagerSecondary->getSlotCount(); i++)
+    {
+      Weapon* weapon = this->weaponManagerSecondary->getWeapon(i);
+      if (weapon != NULL)
+      {
+        weapon->getEnergyWidget()->hide();
+        //this->weaponsWidgetsSec.remove(dynamic_cast<OrxGui::GLGuiEnergyWidgetVertical*> (weapon->getEnergyWidget()));
+      }
+    }
+  }
+
+  //this->weaponsWidgetsPrim.clear();
+  //this->weaponsWidgetsSec.clear();
+}
+*/
+
 void Hud::updateWeaponManager()
 {
   // hide all the Widgets
+  
   std::list<OrxGui::GLGuiEnergyWidgetVertical*>::iterator weaponWidget;
   for (weaponWidget = this->weaponsWidgetsPrim.begin(); weaponWidget != this->weaponsWidgetsPrim.end(); weaponWidget++)
@@ -245,6 +284,8 @@
   }
   this->weaponsWidgetsSec.clear();
+  
 
   // add all that we need again.
+
   if (this->weaponManager != NULL)
     for (unsigned int i = 0; i < this->weaponManager->getSlotCount(); i++)
@@ -365,6 +406,6 @@
 
   std::list<OrxGui::GLGuiEnergyWidgetVertical*>::iterator weaponWidget;
-  Vector2D pos(overlayWidth, 0.5*this->resY);
-
+  Vector2D pos = Vector2D(overlayWidth + this->rightRect->getAbsCoor2D().x, 0.5*this->resY);
+  PRINTF(0)("Cur Pos: %f,%f\n",pos.x,pos.y);
   // out of reasons i can't get behind, this version is segfaulting when calling getSizeX2D or getSizeY2D. the other
   // element2D- related function works tough.. :s
@@ -374,5 +415,5 @@
     if (pos.x < overlayWidth*0.2)
     {
-      pos.x = overlayWidth;
+      pos.x = overlayWidth + this->rightRect->getAbsCoor2D().x;
       pos.y += (*weaponWidget)->getSizeX2D();
     }
@@ -385,10 +426,10 @@
 
   pos.y += 160;
-  pos.x = overlayWidth;
+  pos.x = overlayWidth + this->rightRect->getAbsCoor2D().x;
   for (weaponWidget = this->weaponsWidgetsSec.begin(); weaponWidget != this->weaponsWidgetsSec.end(); weaponWidget++)
   {
     if (pos.x < overlayWidth*0.2)
     {
-      pos.x = overlayWidth;
+      pos.x = overlayWidth + this->rightRect->getAbsCoor2D().x;
       pos.y += (*weaponWidget)->getSizeX2D();
     }
Index: /branches/playability/src/util/hud.h
===================================================================
--- /branches/playability/src/util/hud.h	(revision 10277)
+++ /branches/playability/src/util/hud.h	(revision 10278)
@@ -54,4 +54,5 @@
 
   void updateWeaponManager();
+  //void clearWeaponManager();
 
   inline void setOverlayPercentage(int perc) 
Index: /branches/playability/src/world_entities/player.cc
===================================================================
--- /branches/playability/src/world_entities/player.cc	(revision 10277)
+++ /branches/playability/src/world_entities/player.cc	(revision 10278)
@@ -98,5 +98,10 @@
 void Player::weaponConfigChanged()
 {
-  this->_hud.updateWeaponManager();
+  //this->_hud.updateWeaponManager();
+
+  if (dynamic_cast<SpaceShip*>(this->playable) != 0)
+      this->_hud.setWeaponManager(&this->playable->getWeaponManager(), &dynamic_cast<SpaceShip*>(this->playable)->getWeaponManagerSecondary());
+    else
+      this->_hud.setWeaponManager(&this->playable->getWeaponManager());
 }
 
Index: /branches/playability/src/world_entities/weapons/weapon.cc
===================================================================
--- /branches/playability/src/world_entities/weapons/weapon.cc	(revision 10277)
+++ /branches/playability/src/world_entities/weapons/weapon.cc	(revision 10278)
@@ -392,5 +392,5 @@
 OrxGui::GLGuiWidget* Weapon::getEnergyWidget()
 {
-  if (this->energyWidget == NULL)
+  if ( this->energyWidget == NULL)
   {
     this->energyWidget = new OrxGui::GLGuiEnergyWidgetVertical();
