Index: /code/branches/objecthierarchy/src/orxonox/CMakeLists.txt
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/CMakeLists.txt	(revision 2011)
+++ /code/branches/objecthierarchy/src/orxonox/CMakeLists.txt	(revision 2012)
@@ -69,5 +69,5 @@
 
   objects/infos/Info.cc
-  objects/infos/LevelInfo.cc
+  objects/infos/Level.cc
   objects/infos/PlayerInfo.cc
 
Index: /code/branches/objecthierarchy/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/OrxonoxPrereqs.h	(revision 2011)
+++ /code/branches/objecthierarchy/src/orxonox/OrxonoxPrereqs.h	(revision 2012)
@@ -98,5 +98,5 @@
 
     class Info;
-    class LevelInfo;
+    class Level;
     class PlayerInfo;
 
Index: /code/branches/objecthierarchy/src/orxonox/objects/infos/Level.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/infos/Level.cc	(revision 2012)
+++ /code/branches/objecthierarchy/src/orxonox/objects/infos/Level.cc	(revision 2012)
@@ -0,0 +1,208 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "OrxonoxStableHeaders.h"
+#include "Level.h"
+
+#include <OgreSceneManager.h>
+#include <OgreLight.h>
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "core/Core.h"
+#include "core/ConsoleCommand.h"
+#include "core/Loader.h"
+#include "core/XMLFile.h"
+#include "core/Template.h"
+
+#include "GraphicsEngine.h"
+#include "Settings.h"
+#include "PlayerInfo.h"
+
+#include "util/Math.h"
+
+namespace orxonox
+{
+    SetConsoleCommand(Level, listPlayers, true);
+
+    CreateFactory(Level);
+
+    Level::Level()
+    {
+        RegisterObject(Level);
+
+        this->rootGametype_ = 0;
+        this->registerVariables();
+
+        // test test test
+        {
+            Ogre::Light* light;
+            light = GraphicsEngine::getInstance().getLevelSceneManager()->createLight("Light0");
+            light->setType(Ogre::Light::LT_DIRECTIONAL);
+            light->setDiffuseColour(ColourValue(1.0, 0.9, 0.6, 1.0));
+            light->setSpecularColour(ColourValue(1.0, 0.9, 0.6, 1.0));
+            light->setDirection(1, -0.2, 0.2);
+        }
+        // test test test
+
+        COUT(0) << "created Level" << std::endl;
+    }
+
+    Level* Level::getActiveLevel()
+    {
+        for (ObjectList<Level>::iterator it = ObjectList<Level>::begin(); it != ObjectList<Level>::end(); ++it)
+            if (it->isActive())
+                return (*it);
+
+        return 0;
+    }
+
+    PlayerInfo* Level::getClient(unsigned int clientID)
+    {
+        Level* level = Level::getActiveLevel();
+
+        if (level)
+        {
+            std::map<unsigned int, PlayerInfo*>::const_iterator it = level->clients_.find(clientID);
+            if (it != level->clients_.end())
+                return it->second;
+        }
+        else
+        {
+            for (ObjectList<PlayerInfo>::iterator it = ObjectList<PlayerInfo>::begin(); it != ObjectList<PlayerInfo>::end(); ++it)
+                if (it->getClientID() == clientID)
+                    return (*it);
+        }
+        return 0;
+    }
+
+    void Level::listPlayers()
+    {
+        Level* level = Level::getActiveLevel();
+
+        if (level->getGametype())
+        {
+            for (std::set<PlayerInfo*>::const_iterator it = level->getGametype()->getPlayers().begin(); it != level->getGametype()->getPlayers().end(); ++it)
+                COUT(0) << "ID: " << (*it)->getClientID() << ", Name: " << (*it)->getName() << std::endl;
+        }
+        else
+        {
+            for (ObjectList<PlayerInfo>::iterator it = ObjectList<PlayerInfo>::begin(); it != ObjectList<PlayerInfo>::end(); ++it)
+                COUT(0) << "ID: " << (*it)->getClientID() << ", Name: " << (*it)->getName() << std::endl;
+        }
+    }
+
+    void Level::clientConnected(unsigned int clientID)
+    {
+        COUT(0) << "client connected" << std::endl;
+
+        // create new PlayerInfo instance
+        PlayerInfo* player = new PlayerInfo();
+        player->setGametype(this->getGametype());
+        player->setClientID(clientID);
+
+        // add to clients-map
+        assert(!this->clients_[clientID]);
+        this->clients_[clientID] = player;
+    }
+
+    void Level::clientDisconnected(unsigned int clientID)
+    {
+        COUT(0) << "client disconnected" << std::endl;
+
+        // remove from clients-map
+        PlayerInfo* player = this->clients_[clientID];
+        this->clients_.erase(clientID);
+
+        // delete PlayerInfo instance
+        delete player;
+    }
+
+    void Level::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(Level, XMLPort, xmlelement, mode);
+
+        XMLPortParam(Level, "description", setDescription, getDescription, xmlelement, mode);
+        XMLPortParam(Level, "gametype", setGametypeString, getGametypeString, xmlelement, mode).defaultValues("Gametype");
+        XMLPortParam(Level, "skybox", setSkybox, getSkybox, xmlelement, mode);
+        XMLPortParam(Level, "ambientlight", setAmbientLight, getAmbientLight, xmlelement, mode).defaultValues(ColourValue(0.2, 0.2, 0.2, 1));
+
+        this->xmlfile_ = this->getFilename();
+    }
+
+    void Level::registerVariables()
+    {
+        REGISTERSTRING(this->xmlfile_,     network::direction::toclient, new network::NetworkCallback<Level>(this, &Level::networkcallback_applyXMLFile));
+        REGISTERSTRING(this->name_,        network::direction::toclient, new network::NetworkCallback<Level>(this, &Level::changedName));
+        REGISTERSTRING(this->description_, network::direction::toclient);
+        REGISTERSTRING(this->skybox_,      network::direction::toclient, new network::NetworkCallback<Level>(this, &Level::networkcallback_applySkybox));
+        REGISTERDATA(this->ambientLight_,  network::direction::toclient, new network::NetworkCallback<Level>(this, &Level::networkcallback_applyAmbientLight));
+    }
+
+    void Level::networkcallback_applyXMLFile()
+    {
+        COUT(0) << "Loading level \"" << this->xmlfile_ << "\"..." << std::endl;
+
+        ClassTreeMask mask;
+        mask.exclude(Class(BaseObject));
+        mask.include(Class(Template));
+
+        XMLFile* file = new XMLFile(Settings::getDataPath() + this->xmlfile_, mask);
+
+        Loader::open(file);
+    }
+
+    void Level::setSkybox(const std::string& skybox)
+    {
+        if (Core::showsGraphics())
+            if (GraphicsEngine::getInstance().getLevelSceneManager())
+                GraphicsEngine::getInstance().getLevelSceneManager()->setSkyBox(true, skybox);
+
+        this->skybox_ = skybox;
+    }
+
+    void Level::setAmbientLight(const ColourValue& colour)
+    {
+        if (Core::showsGraphics())
+            GraphicsEngine::getInstance().getLevelSceneManager()->setAmbientLight(colour);
+
+        this->ambientLight_ = colour;
+    }
+
+    void Level::setGametypeString(const std::string& gametype)
+    {
+        Identifier* identifier = ClassByString(gametype);
+        if (identifier)
+        {
+            this->gametype_ = gametype;
+            this->gametypeIdentifier_ = identifier;
+            this->rootGametype_ = this->gametypeIdentifier_.fabricate();
+            this->getConnectedClients();
+        }
+    }
+}
Index: /code/branches/objecthierarchy/src/orxonox/objects/infos/Level.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/infos/Level.h	(revision 2012)
+++ /code/branches/objecthierarchy/src/orxonox/objects/infos/Level.h	(revision 2012)
@@ -0,0 +1,100 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _Level_H__
+#define _Level_H__
+
+#include "OrxonoxPrereqs.h"
+
+#include "Info.h"
+#include "util/Math.h"
+#include "core/Identifier.h"
+
+#include "objects/gametypes/Gametype.h"
+#include "network/ClientConnectionListener.h"
+
+namespace orxonox
+{
+    class _OrxonoxExport Level : public Info, public network::ClientConnectionListener
+    {
+        public:
+            Level();
+            virtual ~Level() {}
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            void registerVariables();
+
+            inline const std::map<unsigned int, PlayerInfo*>& getClients() const
+                { return this->clients_; }
+
+            inline void setDescription(const std::string& description)
+                { this->description_ = description; }
+            inline const std::string& getDescription() const
+                { return this->description_; }
+
+            void setSkybox(const std::string& skybox);
+            inline const std::string& getSkybox() const
+                { return this->skybox_; }
+
+            void setAmbientLight(const ColourValue& colour);
+            inline const ColourValue& getAmbientLight() const
+                { return this->ambientLight_; }
+
+            void setGametypeString(const std::string& gametype);
+            inline const std::string& getGametypeString() const
+                { return this->gametype_; }
+            inline Gametype* getGametype() const
+                { return this->rootGametype_; }
+
+            static Level* getActiveLevel();
+            static void listPlayers();
+            static PlayerInfo* getClient(unsigned int clientID);
+
+        private:
+            virtual void clientConnected(unsigned int clientID);
+            virtual void clientDisconnected(unsigned int clientID);
+
+            void networkcallback_applyXMLFile();
+
+            void networkcallback_applySkybox()
+                { this->setSkybox(this->skybox_); }
+            void networkcallback_applyAmbientLight()
+                { this->setAmbientLight(this->ambientLight_); }
+
+            std::map<unsigned int, PlayerInfo*> clients_;
+            std::string description_;
+            std::string skybox_;
+            ColourValue ambientLight_;
+            std::string gametype_;
+            SubclassIdentifier<Gametype> gametypeIdentifier_;
+            Gametype* rootGametype_;
+            std::string xmlfile_;
+    };
+}
+
+#endif /* _Level_H__ */
Index: de/branches/objecthierarchy/src/orxonox/objects/infos/LevelInfo.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/infos/LevelInfo.cc	(revision 2011)
+++ 	(revision )
@@ -1,208 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-#include "OrxonoxStableHeaders.h"
-#include "LevelInfo.h"
-
-#include <OgreSceneManager.h>
-#include <OgreLight.h>
-
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "core/Core.h"
-#include "core/ConsoleCommand.h"
-#include "core/Loader.h"
-#include "core/XMLFile.h"
-#include "core/Template.h"
-
-#include "GraphicsEngine.h"
-#include "Settings.h"
-#include "PlayerInfo.h"
-
-#include "util/Math.h"
-
-namespace orxonox
-{
-    SetConsoleCommand(LevelInfo, listPlayers, true);
-
-    CreateFactory(LevelInfo);
-
-    LevelInfo::LevelInfo()
-    {
-        RegisterObject(LevelInfo);
-
-        this->rootGametype_ = 0;
-        this->registerVariables();
-
-        // test test test
-        {
-            Ogre::Light* light;
-            light = GraphicsEngine::getInstance().getLevelSceneManager()->createLight("Light0");
-            light->setType(Ogre::Light::LT_DIRECTIONAL);
-            light->setDiffuseColour(ColourValue(1.0, 0.9, 0.6, 1.0));
-            light->setSpecularColour(ColourValue(1.0, 0.9, 0.6, 1.0));
-            light->setDirection(1, -0.2, 0.2);
-        }
-        // test test test
-
-        COUT(0) << "created LevelInfo" << std::endl;
-    }
-
-    LevelInfo* LevelInfo::getActiveLevelInfo()
-    {
-        for (ObjectList<LevelInfo>::iterator it = ObjectList<LevelInfo>::begin(); it != ObjectList<LevelInfo>::end(); ++it)
-            if (it->isActive())
-                return (*it);
-
-        return 0;
-    }
-
-    PlayerInfo* LevelInfo::getClient(unsigned int clientID)
-    {
-        LevelInfo* levelinfo = LevelInfo::getActiveLevelInfo();
-
-        if (levelinfo)
-        {
-            std::map<unsigned int, PlayerInfo*>::const_iterator it = levelinfo->clients_.find(clientID);
-            if (it != levelinfo->clients_.end())
-                return it->second;
-        }
-        else
-        {
-            for (ObjectList<PlayerInfo>::iterator it = ObjectList<PlayerInfo>::begin(); it != ObjectList<PlayerInfo>::end(); ++it)
-                if (it->getClientID() == clientID)
-                    return (*it);
-        }
-        return 0;
-    }
-
-    void LevelInfo::listPlayers()
-    {
-        LevelInfo* levelinfo = LevelInfo::getActiveLevelInfo();
-
-        if (levelinfo->getGametype())
-        {
-            for (std::set<PlayerInfo*>::const_iterator it = levelinfo->getGametype()->getPlayers().begin(); it != levelinfo->getGametype()->getPlayers().end(); ++it)
-                COUT(0) << "ID: " << (*it)->getClientID() << ", Name: " << (*it)->getName() << std::endl;
-        }
-        else
-        {
-            for (ObjectList<PlayerInfo>::iterator it = ObjectList<PlayerInfo>::begin(); it != ObjectList<PlayerInfo>::end(); ++it)
-                COUT(0) << "ID: " << (*it)->getClientID() << ", Name: " << (*it)->getName() << std::endl;
-        }
-    }
-
-    void LevelInfo::clientConnected(unsigned int clientID)
-    {
-        COUT(0) << "client connected" << std::endl;
-
-        // create new PlayerInfo instance
-        PlayerInfo* player = new PlayerInfo();
-        player->setGametype(this->getGametype());
-        player->setClientID(clientID);
-
-        // add to clients-map
-        assert(!this->clients_[clientID]);
-        this->clients_[clientID] = player;
-    }
-
-    void LevelInfo::clientDisconnected(unsigned int clientID)
-    {
-        COUT(0) << "client disconnected" << std::endl;
-
-        // remove from clients-map
-        PlayerInfo* player = this->clients_[clientID];
-        this->clients_.erase(clientID);
-
-        // delete PlayerInfo instance
-        delete player;
-    }
-
-    void LevelInfo::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(LevelInfo, XMLPort, xmlelement, mode);
-
-        XMLPortParam(LevelInfo, "description", setDescription, getDescription, xmlelement, mode);
-        XMLPortParam(LevelInfo, "gametype", setGametypeString, getGametypeString, xmlelement, mode).defaultValues("Gametype");
-        XMLPortParam(LevelInfo, "skybox", setSkybox, getSkybox, xmlelement, mode);
-        XMLPortParam(LevelInfo, "ambientlight", setAmbientLight, getAmbientLight, xmlelement, mode).defaultValues(ColourValue(0.2, 0.2, 0.2, 1));
-
-        this->xmlfile_ = this->getFilename();
-    }
-
-    void LevelInfo::registerVariables()
-    {
-        REGISTERSTRING(this->xmlfile_,     network::direction::toclient, new network::NetworkCallback<LevelInfo>(this, &LevelInfo::applyXMLFile));
-        REGISTERSTRING(this->name_,        network::direction::toclient, new network::NetworkCallback<LevelInfo>(this, &LevelInfo::changedName));
-        REGISTERSTRING(this->description_, network::direction::toclient);
-        REGISTERSTRING(this->skybox_,      network::direction::toclient, new network::NetworkCallback<LevelInfo>(this, &LevelInfo::applySkybox));
-        REGISTERDATA(this->ambientLight_,  network::direction::toclient, new network::NetworkCallback<LevelInfo>(this, &LevelInfo::applyAmbientLight));
-    }
-
-    void LevelInfo::applyXMLFile()
-    {
-        COUT(0) << "Loading level \"" << this->xmlfile_ << "\"..." << std::endl;
-
-        ClassTreeMask mask;
-        mask.exclude(Class(BaseObject));
-        mask.include(Class(Template));
-
-        XMLFile* file = new XMLFile(Settings::getDataPath() + this->xmlfile_, mask);
-
-        Loader::open(file);
-    }
-
-    void LevelInfo::setSkybox(const std::string& skybox)
-    {
-        if (Core::showsGraphics())
-            if (GraphicsEngine::getInstance().getLevelSceneManager())
-                GraphicsEngine::getInstance().getLevelSceneManager()->setSkyBox(true, skybox);
-
-        this->skybox_ = skybox;
-    }
-
-    void LevelInfo::setAmbientLight(const ColourValue& colour)
-    {
-        if (Core::showsGraphics())
-            GraphicsEngine::getInstance().getLevelSceneManager()->setAmbientLight(colour);
-
-        this->ambientLight_ = colour;
-    }
-
-    void LevelInfo::setGametypeString(const std::string& gametype)
-    {
-        Identifier* identifier = ClassByString(gametype);
-        if (identifier)
-        {
-            this->gametype_ = gametype;
-            this->gametypeIdentifier_ = identifier;
-            this->rootGametype_ = this->gametypeIdentifier_.fabricate();
-            this->getConnectedClients();
-        }
-    }
-}
Index: de/branches/objecthierarchy/src/orxonox/objects/infos/LevelInfo.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/infos/LevelInfo.h	(revision 2011)
+++ 	(revision )
@@ -1,100 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-#ifndef _LevelInfo_H__
-#define _LevelInfo_H__
-
-#include "OrxonoxPrereqs.h"
-
-#include "Info.h"
-#include "util/Math.h"
-#include "core/Identifier.h"
-
-#include "objects/gametypes/Gametype.h"
-#include "network/ClientConnectionListener.h"
-
-namespace orxonox
-{
-    class _OrxonoxExport LevelInfo : public Info, public network::ClientConnectionListener
-    {
-        public:
-            LevelInfo();
-            virtual ~LevelInfo() {}
-
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            void registerVariables();
-
-            inline const std::map<unsigned int, PlayerInfo*>& getClients() const
-                { return this->clients_; }
-
-            inline void setDescription(const std::string& description)
-                { this->description_ = description; }
-            inline const std::string& getDescription() const
-                { return this->description_; }
-
-            void setSkybox(const std::string& skybox);
-            inline const std::string& getSkybox() const
-                { return this->skybox_; }
-
-            void setAmbientLight(const ColourValue& colour);
-            inline const ColourValue& getAmbientLight() const
-                { return this->ambientLight_; }
-
-            void setGametypeString(const std::string& gametype);
-            inline const std::string& getGametypeString() const
-                { return this->gametype_; }
-            inline Gametype* getGametype() const
-                { return this->rootGametype_; }
-
-            static LevelInfo* getActiveLevelInfo();
-            static void listPlayers();
-            static PlayerInfo* getClient(unsigned int clientID);
-
-        private:
-            virtual void clientConnected(unsigned int clientID);
-            virtual void clientDisconnected(unsigned int clientID);
-
-            void applyXMLFile();
-
-            void applySkybox()
-                { this->setSkybox(this->skybox_); }
-            void applyAmbientLight()
-                { this->setAmbientLight(this->ambientLight_); }
-
-            std::map<unsigned int, PlayerInfo*> clients_;
-            std::string description_;
-            std::string skybox_;
-            ColourValue ambientLight_;
-            std::string gametype_;
-            SubclassIdentifier<Gametype> gametypeIdentifier_;
-            Gametype* rootGametype_;
-            std::string xmlfile_;
-    };
-}
-
-#endif /* _LevelInfo_H__ */
Index: /code/branches/objecthierarchy/src/orxonox/overlays/hud/ChatOverlay.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/overlays/hud/ChatOverlay.cc	(revision 2011)
+++ /code/branches/objecthierarchy/src/orxonox/overlays/hud/ChatOverlay.cc	(revision 2012)
@@ -39,5 +39,5 @@
 
 #include "GraphicsEngine.h"
-#include "objects/infos/LevelInfo.h"
+#include "objects/infos/Level.h"
 #include "objects/infos/PlayerInfo.h"
 #include "overlays/console/InGameConsole.h"
@@ -76,5 +76,5 @@
             std::string name = "unknown";
 
-            PlayerInfo* player = LevelInfo::getClient(senderID);
+            PlayerInfo* player = Level::getClient(senderID);
             if (player)
                 name = player->getName();
