Index: code/branches/miniprojects/src/orxonox/objects/infos/HumanPlayer.cc
===================================================================
--- code/branches/miniprojects/src/orxonox/objects/infos/HumanPlayer.cc	(revision 2818)
+++ code/branches/miniprojects/src/orxonox/objects/infos/HumanPlayer.cc	(revision 2819)
@@ -54,4 +54,5 @@
 
         this->humanHud_ = 0;
+        this->gametypeHud_ = 0;
 
         this->setConfigValues();
@@ -61,6 +62,12 @@
     HumanPlayer::~HumanPlayer()
     {
-        if (this->BaseObject::isInitialized() && this->humanHud_)
-            delete this->humanHud_;
+        if (this->BaseObject::isInitialized())
+        {
+            if (this->humanHud_)
+                delete this->humanHud_;
+
+            if (this->gametypeHud_)
+                delete this->gametypeHud_;
+        }
     }
 
@@ -115,4 +122,5 @@
 
             this->createController();
+            this->updateHumanHUD();
         }
     }
@@ -150,4 +158,13 @@
     }
 
+    void HumanPlayer::changedGametype()
+    {
+        PlayerInfo::changedGametype();
+
+        if (this->isInitialized() && this->isLocalPlayer())
+            if (this->getGametype()->getHUDTemplate() != "")
+                this->setGametypeHUDTemplate(this->getGametype()->getHUDTemplate());
+    }
+
     void HumanPlayer::changedControllableEntity()
     {
@@ -156,4 +173,7 @@
         if (this->humanHud_)
             this->humanHud_->setOwner(this->getControllableEntity());
+
+        if (this->gametypeHud_)
+            this->gametypeHud_->setOwner(this->getControllableEntity());
     }
 
@@ -166,5 +186,5 @@
         }
 
-        if (this->humanHudTemplate_ != "")
+        if (this->isLocalPlayer() && this->humanHudTemplate_ != "")
         {
             this->humanHud_ = new OverlayGroup(this);
@@ -173,3 +193,19 @@
         }
     }
+
+    void HumanPlayer::updateGametypeHUD()
+    {
+        if (this->gametypeHud_)
+        {
+            delete this->gametypeHud_;
+            this->gametypeHud_ = 0;
+        }
+
+        if (this->isLocalPlayer() && this->gametypeHudTemplate_ != "")
+        {
+            this->gametypeHud_ = new OverlayGroup(this);
+            this->gametypeHud_->addTemplate(this->gametypeHudTemplate_);
+            this->gametypeHud_->setOwner(this->getControllableEntity());
+        }
+    }
 }
Index: code/branches/miniprojects/src/orxonox/objects/infos/HumanPlayer.h
===================================================================
--- code/branches/miniprojects/src/orxonox/objects/infos/HumanPlayer.h	(revision 2818)
+++ code/branches/miniprojects/src/orxonox/objects/infos/HumanPlayer.h	(revision 2819)
@@ -51,4 +51,5 @@
             void setClientID(unsigned int clientID);
 
+            virtual void changedGametype();
             virtual void changedControllableEntity();
 
@@ -63,7 +64,19 @@
             inline const std::string& getHumanHUDTemplate() const
                 { return this->humanHudTemplate_; }
-
             inline OverlayGroup* getHumanHUD() const
                 { return this->humanHud_; }
+
+            inline void setGametypeHUDTemplate(const std::string& name)
+            {
+                if (name != this->gametypeHudTemplate_)
+                {
+                    this->gametypeHudTemplate_ = name;
+                    this->updateGametypeHUD();
+                }
+            }
+            inline const std::string& getGametypeHUDTemplate() const
+                { return this->gametypeHudTemplate_; }
+            inline OverlayGroup* getGametypeHUD() const
+                { return this->gametypeHud_; }
 
         protected:
@@ -76,4 +89,5 @@
 
             void updateHumanHUD();
+            void updateGametypeHUD();
 
             std::string nick_;
@@ -85,4 +99,6 @@
             std::string humanHudTemplate_;
             OverlayGroup* humanHud_;
+            std::string gametypeHudTemplate_;
+            OverlayGroup* gametypeHud_;
     };
 }
Index: code/branches/miniprojects/src/orxonox/objects/infos/PlayerInfo.cc
===================================================================
--- code/branches/miniprojects/src/orxonox/objects/infos/PlayerInfo.cc	(revision 2818)
+++ code/branches/miniprojects/src/orxonox/objects/infos/PlayerInfo.cc	(revision 2819)
@@ -35,5 +35,4 @@
 #include "network/ClientInformation.h"
 #include "objects/gametypes/Gametype.h"
-#include "overlays/OverlayGroup.h"
 
 namespace orxonox
@@ -51,5 +50,4 @@
         this->controllableEntity_ = 0;
         this->controllableEntityID_ = CLIENTID_UNKNOWN;
-        this->gametypeHud_ = 0;
 
         this->registerVariables();
@@ -70,7 +68,4 @@
             if (this->getGametype())
                 this->getGametype()->playerLeft(this);
-
-            if (this->BaseObject::isInitialized() && this->gametypeHud_)
-                delete this->gametypeHud_;
         }
     }
@@ -109,8 +104,4 @@
                 else
                     this->getGametype()->playerEntered(this);
-
-                if (this->isLocalPlayer() && this->isHumanPlayer())
-                    if (this->getGametype()->getHUDTemplate() != "")
-                        this->setGametypeHUDTemplate(this->getGametype()->getHUDTemplate());
             }
         }
@@ -185,25 +176,3 @@
         }
     }
-
-    void PlayerInfo::changedControllableEntity()
-    {
-        if (this->gametypeHud_)
-            this->gametypeHud_->setOwner(this->getControllableEntity());
-    }
-
-    void PlayerInfo::updateGametypeHUD()
-    {
-        if (this->gametypeHud_)
-        {
-            delete this->gametypeHud_;
-            this->gametypeHud_ = 0;
-        }
-
-        if (this->isLocalPlayer() && this->isHumanPlayer() && this->gametypeHudTemplate_ != "")
-        {
-            this->gametypeHud_ = new OverlayGroup(this);
-            this->gametypeHud_->addTemplate(this->gametypeHudTemplate_);
-            this->gametypeHud_->setOwner(this->getControllableEntity());
-        }
-    }
 }
Index: code/branches/miniprojects/src/orxonox/objects/infos/PlayerInfo.h
===================================================================
--- code/branches/miniprojects/src/orxonox/objects/infos/PlayerInfo.h	(revision 2818)
+++ code/branches/miniprojects/src/orxonox/objects/infos/PlayerInfo.h	(revision 2819)
@@ -50,5 +50,5 @@
 
             virtual void changedController() {}
-            virtual void changedControllableEntity();
+            virtual void changedControllableEntity() {}
 
             inline bool isHumanPlayer() const
@@ -77,18 +77,4 @@
                 { return this->controller_; }
 
-            inline void setGametypeHUDTemplate(const std::string& name)
-            {
-                if (name != this->gametypeHudTemplate_)
-                {
-                    this->gametypeHudTemplate_ = name;
-                    this->updateGametypeHUD();
-                }
-            }
-            inline const std::string& getGametypeHUDTemplate() const
-                { return this->gametypeHudTemplate_; }
-
-            inline OverlayGroup* getGametypeHUD() const
-                { return this->gametypeHud_; }
-
         protected:
             void createController();
@@ -102,5 +88,4 @@
         private:
             void networkcallback_changedcontrollableentityID();
-            void updateGametypeHUD();
 
             bool bReadyToSpawn_;
@@ -108,6 +93,4 @@
             ControllableEntity* controllableEntity_;
             unsigned int controllableEntityID_;
-            std::string gametypeHudTemplate_;
-            OverlayGroup* gametypeHud_;
     };
 }
