Index: /branches/network/src/Makefile.am
===================================================================
--- /branches/network/src/Makefile.am	(revision 6403)
+++ /branches/network/src/Makefile.am	(revision 6404)
@@ -52,5 +52,7 @@
                   story_entities/game_world_data.cc \
                   story_entities/single_player_world.cc \
+                  story_entities/single_player_world_data.cc \
                   story_entities/multi_player_world.cc \
+                  story_entities/multi_player_world_data.cc \
                   world_entities/world_entity.cc \
                   world_entities/camera.cc \
@@ -103,5 +105,7 @@
                  story_entities/game_world_data.h \
                  story_entities/single_player_world.h \
+                 story_entities/single_player_world_data.h \
                  story_entities/multi_player_world.h \
+                 story_entities/multi_player_world_data.h \
                  world_entities/world_entity.h \
                  world_entities/camera.h \
Index: /branches/network/src/lib/Makefile.am
===================================================================
--- /branches/network/src/lib/Makefile.am	(revision 6403)
+++ /branches/network/src/lib/Makefile.am	(revision 6404)
@@ -36,4 +36,5 @@
                         lang/base_object.cc \
                         lang/class_list.cc \
+                        data/data_tank.cc \
                         util/substring.cc \
                         util/color.cc \
@@ -47,4 +48,5 @@
 noinst_HEADERS =        coord/p_node.h \
                         lang/base_object.h \
+                        data/data_tank.h \
                         graphics/render2D/element_2d.h \
                         graphics/render2D/render_2d.h \
@@ -70,5 +72,5 @@
           particles \
           collision_detection \
-	  network \
+	        network \
           parser \
           shell \
Index: /branches/network/src/lib/data/data_tank.h
===================================================================
--- /branches/network/src/lib/data/data_tank.h	(revision 6404)
+++ /branches/network/src/lib/data/data_tank.h	(revision 6404)
@@ -0,0 +1,33 @@
+/*!
+ * @file data_tank.h
+ *  container for all data and data loadings. Its absolutily abstract and therefore generic.
+ *  if there is something to load, this class will serve as a good base class since it
+ *  gives you a basic structure for data loading
+ */
+
+#ifndef _DATA_TANK_H
+#define _DATA_TANK_H
+
+
+#include "base_object.h"
+#include "error.h"
+
+
+//! The DataTank
+class DataTank : public BaseObject
+{
+
+  public:
+    DataTank() {}
+    virtual ~DataTank() {}
+
+    /** initializes the DataTank to be able to load the data */
+    virtual ErrorMessage init() {}
+    /** loads the data into the DataTank @param root is the xml root parameter for for loadParams() connection */
+    virtual ErrorMessage loadData(TiXmlElement* root = NULL) {}
+    /** unloads the data again from the DataTank */
+    virtual ErrorMessage unloadData() {}
+};
+
+
+#endif /* _DATA_TANK_H */
Index: /branches/network/src/story_entities/campaign_data.cc
===================================================================
--- /branches/network/src/story_entities/campaign_data.cc	(revision 6403)
+++ /branches/network/src/story_entities/campaign_data.cc	(revision 6404)
@@ -58,9 +58,8 @@
  * @param root: The XML-element to load from
  */
-void CampaignData::loadParams(const TiXmlElement* root)
+void CampaignData::loadData(const TiXmlElement* root)
 {
   LoadParamXML(root, "WorldList", this, CampaignData, loadParamsWorldList)
       .describe("A List of Worlds to be loaded in this Campaign");
-
 }
 
Index: /branches/network/src/story_entities/campaign_data.h
===================================================================
--- /branches/network/src/story_entities/campaign_data.h	(revision 6403)
+++ /branches/network/src/story_entities/campaign_data.h	(revision 6404)
@@ -8,5 +8,5 @@
 
 
-#include "base_object.h"
+#include "data_tank.h"
 #include <list>
 
@@ -14,5 +14,5 @@
 
 //! A class that contains the data of the Campaign object
-class CampaignData : public BaseObject
+class CampaignData : public DataTank
 {
 
@@ -21,5 +21,5 @@
     virtual ~CampaignData();
 
-    void loadParams(const TiXmlElement* root);
+    void loadData(const TiXmlElement* root);
 
     void addStoryEntity(StoryEntity* se);
Index: /branches/network/src/story_entities/game_world.cc
===================================================================
--- /branches/network/src/story_entities/game_world.cc	(revision 6403)
+++ /branches/network/src/story_entities/game_world.cc	(revision 6404)
@@ -20,7 +20,10 @@
 #include "game_world_data.h"
 
-#include "shell_command.h"
 #include "resource_manager.h"
 #include "state.h"
+#include "class_list.h"
+#include "substring.h"
+
+#include "game_loader.h"
 
 #include "p_node.h"
@@ -30,43 +33,38 @@
 #include "environment.h"
 #include "terrain.h"
-
 #include "test_entity.h"
 #include "terrain.h"
+#include "md2Model.h"
+#include "weapons/projectile.h"
+#include "npcs/npc_test1.h"
+#include "playable.h"
+
 #include "light.h"
+
+#include "factory.h"
+#include "fast_factory.h"
 #include "load_param.h"
-#include "shell.h"
-
-#include "fast_factory.h"
-#include "animation_player.h"
+#include "shell_command.h"
+
 #include "particle_engine.h"
 #include "graphics_engine.h"
+#include "event_handler.h"
+#include "sound_engine.h"
+#include "cd_engine.h"
+#include "network_manager.h"
 #include "physics_engine.h"
 #include "fields.h"
 
-#include "md2Model.h"
-
 #include "glmenu_imagescreen.h"
-#include "game_loader.h"
-
+#include "shell.h"
+
+#include "animation_player.h"
 #include "animation3d.h"
 
-#include "substring.h"
-
-#include "factory.h"
-
-#include "weapons/projectile.h"
-#include "event_handler.h"
-#include "sound_engine.h"
 #include "ogg_player.h"
-
-#include "class_list.h"
-
-#include "cd_engine.h"
-#include "npcs/npc_test1.h"
 #include "shader.h"
 
-#include "playable.h"
-#include "network_manager.h"
-#include "playable.h"
+
+using namespace std;
 
 
@@ -74,9 +72,4 @@
 SHELL_COMMAND(togglePNodeVisibility, GameWorld, togglePNodeVisibility);
 SHELL_COMMAND(toggleBVVisibility, GameWorld, toggleBVVisibility);
-
-using namespace std;
-
-//! This creates a Factory to fabricate a GameWorld
-//CREATE_FACTORY(GameWorld, CL_GAME_WORLD);
 
 
Index: /branches/network/src/story_entities/game_world_data.cc
===================================================================
--- /branches/network/src/story_entities/game_world_data.cc	(revision 6403)
+++ /branches/network/src/story_entities/game_world_data.cc	(revision 6404)
@@ -92,6 +92,5 @@
  */
 GameWorldData::~GameWorldData()
-{
-}
+{}
 
 
@@ -180,5 +179,5 @@
 
 /**
- *  loads the GUI data
+ *  unloads the GUI data
  */
 ErrorMessage GameWorldData::unloadGUI()
@@ -242,5 +241,5 @@
 
 /**
- *  unloads the world entities from the xml file
+ *  unloads the world entities
  */
 ErrorMessage GameWorldData::unloadWorldEntities()
Index: /branches/network/src/story_entities/game_world_data.h
===================================================================
--- /branches/network/src/story_entities/game_world_data.h	(revision 6403)
+++ /branches/network/src/story_entities/game_world_data.h	(revision 6404)
@@ -8,5 +8,5 @@
 
 #include "sdlincl.h"
-#include "base_object.h"
+#include "data_tank.h"
 #include "error.h"
 
@@ -29,5 +29,5 @@
  * the game start/stop process is not contained here and can be found in the GameWorld class.
  */
-class GameWorldData : public BaseObject
+class GameWorldData : public DataTank
 {
 
@@ -41,5 +41,5 @@
 
 
-  private:
+  protected:
     virtual ErrorMessage loadGUI(TiXmlElement* root);
     virtual ErrorMessage loadWorldEntities(TiXmlElement* root);
Index: /branches/network/src/story_entities/multi_player_world.cc
===================================================================
--- /branches/network/src/story_entities/multi_player_world.cc	(revision 6403)
+++ /branches/network/src/story_entities/multi_player_world.cc	(revision 6404)
@@ -16,31 +16,12 @@
 
 #include "multi_player_world.h"
+#include "multi_player_world_data.h"
 
-#include "state.h"
-#include "class_list.h"
-
+#include "factory.h"
 #include "load_param.h"
-#include "fast_factory.h"
-#include "factory.h"
-
-
-#include "shell_command.h"
-#include "resource_manager.h"
-#include "state.h"
-
-#include "game_loader.h"
-#include "glmenu_imagescreen.h"
-
-#include "p_node.h"
-#include "world_entity.h"
-#include "player.h"
-#include "camera.h"
-#include "environment.h"
-#include "terrain.h"
-
-
 
 
 using namespace std;
+
 
 //! This creates a Factory to fabricate a MultiPlayerWorld
@@ -53,6 +34,5 @@
   this->setClassID(CL_MULTI_PLAYER_WORLD, "MultiPlayerWorld");
 
-  this->path = NULL;
-
+  this->multiPlayerWorldData = new MultiPlayerWorldData();
   this->loadParams(root);
 }
@@ -68,26 +48,6 @@
 {
   PRINTF(3)("MultiPlayerWorld::~MultiPlayerWorld() - deleting current world\n");
-}
-
-
-/**
- * initializes the world.
- * @param name the name of the world
- * @param worldID the ID of this world
- *
- * set all stuff here that is world generic and does not use to much memory
- * because the real init() function StoryEntity::init() will be called
- * shortly before start of the game.
- * since all worlds are initiated/referenced before they will be started.
- * NO LEVEL LOADING HERE - NEVER!
-*/
-void MultiPlayerWorld::constuctorInit(const char* name, int worldID)
-{
-  this->gameTime = 0.0f;
-  this->setSpeed(1.0);
-  this->shell = NULL;
-
-  this->showPNodes = false;
-  this->showBV = false;
+  if( this->multiPlayerWorldData)
+    delete this->multiPlayerWorldData;
 }
 
@@ -107,114 +67,4 @@
 
 
-/**
- *  loads the GameWorld by initializing all resources, and set their default values.
- */
-ErrorMessage MultiPlayerWorld::load()
-{
-
-  ////////////////////////////
-  // Loading Spawning Point //
-  ////////////////////////////
-//   element = root->FirstChildElement("SpawningPoints");
-//   if( element == NULL)
-//   {
-//     PRINTF(1)("NetworkWorld is missing 'SpawningPoints'\n");
-//   }
-//   else
-//   {
-//     element = element->FirstChildElement();
-//       // load Players/Objects/Whatever
-//     PRINTF(4)("Loading Spawning Points\n");
-//     while( element != NULL)
-//     {
-//       BaseObject* created = Factory::fabricate(element);
-//       if( created != NULL )
-//       {
-// //        if(created->isA(CL_SPAWNING_POINT))
-// //          this->spawn(dynamic_cast<WorldEntity*>(created));
-//         printf("Created a Spawning Point %s: %s\n", created->getClassName(), created->getName());
-//       }
-//
-//
-//       element = element->NextSiblingElement();
-//       glmis->step(); //! @todo temporary
-//     }
-//     PRINTF(4)("Done loading NetworkWorldEntities\n");
-//   }
-//
-//
-//   ////////////////////////
-//   // find WorldEntities //
-//   ////////////////////////
-//   element = root->FirstChildElement("WorldEntities");
-//   if( element == NULL)
-//   {
-//     PRINTF(1)("NetworkWorld is missing 'WorldEntities'\n");
-//   }
-//   else
-//   {
-//     element = element->FirstChildElement();
-//       // load Players/Objects/Whatever
-//     PRINTF(4)("Loading NetworkWorldEntities\n");
-//     while( element != NULL)
-//     {
-//       if( NetworkManager::getInstance()->isGameServer())
-//       {
-//
-//         BaseObject* created = NetworkGameManager::getInstance()->createEntity(element);
-//         if( created != NULL )
-//         {
-// //          if(created->isA(CL_WORLD_ENTITY))
-// //            this->spawn(dynamic_cast<WorldEntity*>(created));
-//           printf("Created a %s: %s\n", created->getClassName(), created->getName());
-//         }
-//         else
-//           PRINTF(1)("NetworkWorld: could not create this entity\n");
-//
-//           // if we load a 'Player' we use it as localPlayer
-//
-//
-//           //todo do this more elegant
-//         if( element->Value() != NULL && !strcmp( element->Value(), "SkyBox"))
-//           sky = dynamic_cast<WorldEntity*>(created);
-//         if( element->Value() != NULL && !strcmp( element->Value(), "Terrain"))
-//         {
-//           terrain = dynamic_cast<Terrain*>(created);
-//           CDEngine::getInstance()->setTerrain(terrain);
-//
-//         }
-//
-//       }
-//       else if( /* !strcmp( element->Value(), "SkyBox") || */ /* !strcmp( element->Value(), "Terrain") || */ !strcmp( element->Value(), "SpaceShip"))
-//       {
-//         BaseObject* created = Factory::fabricate(element);
-//         if( created != NULL )
-//         {
-// //          if(created->isA(CL_WORLD_ENTITY))
-// //            this->spawn(dynamic_cast<WorldEntity*>(created));
-//           printf("Created a %s: %s\n", created->getClassName(), created->getName());
-//         }
-//         else
-//           PRINTF(1)("NetworkWorld: could not create this entity\n");
-//
-//           // if we load a 'Player' we use it as localPlayer
-//
-//
-//           //todo do this more elegant
-//         if( element->Value() != NULL && !strcmp( element->Value(), "SkyBox"))
-//           sky = dynamic_cast<WorldEntity*>(created);
-//         if( element->Value() != NULL && !strcmp( element->Value(), "Terrain"))
-//         {
-//           terrain = dynamic_cast<Terrain*>(created);
-//           CDEngine::getInstance()->setTerrain(terrain);
-//         }
-//       }
-//       element = element->NextSiblingElement();
-//       glmis->step(); //! @todo temporary
-//       PRINTF(4)("Done loading NetworkWorldEntities\n");
-//     }
-  }
 
 
-
-
Index: /branches/network/src/story_entities/multi_player_world.h
===================================================================
--- /branches/network/src/story_entities/multi_player_world.h	(revision 6403)
+++ /branches/network/src/story_entities/multi_player_world.h	(revision 6404)
@@ -11,4 +11,5 @@
 
 class TiXmlElement;
+class MultiPlayerWorldData;
 
 
@@ -26,9 +27,6 @@
   void loadParams(const TiXmlElement* root);
 
-  virtual ErrorMessage load();
-
   private:
-    void constuctorInit(const char* name, int worldID);
-
+    MultiPlayerWorldData*    multiPlayerWorldData;    //!< reference to the datatank
 };
 
Index: /branches/network/src/story_entities/multi_player_world_data.cc
===================================================================
--- /branches/network/src/story_entities/multi_player_world_data.cc	(revision 6404)
+++ /branches/network/src/story_entities/multi_player_world_data.cc	(revision 6404)
@@ -0,0 +1,221 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   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, or (at your option)
+   any later version.
+
+### File Specific:
+   main-programmer: Patrick Boenzli
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD
+
+
+#include "multi_player_world_data.h"
+
+#include "resource_manager.h"
+#include "state.h"
+#include "class_list.h"
+#include "substring.h"
+
+#include "game_loader.h"
+#include "cd_engine.h"
+
+#include "p_node.h"
+#include "world_entity.h"
+#include "player.h"
+#include "camera.h"
+#include "environment.h"
+#include "terrain.h"
+#include "test_entity.h"
+#include "terrain.h"
+#include "md2Model.h"
+#include "weapons/projectile.h"
+#include "npcs/npc_test1.h"
+#include "playable.h"
+
+#include "factory.h"
+#include "fast_factory.h"
+#include "load_param.h"
+
+#include "network_manager.h"
+#include "network_game_manager.h"
+
+
+#include "glmenu_imagescreen.h"
+
+
+using namespace std;
+
+
+/**
+ * constructor of the GameWorldDataData
+ */
+MultiPlayerWorldData::MultiPlayerWorldData()
+    : GameWorldData()
+{}
+
+
+/**
+ * destructor for the GameWorldDataData
+ */
+MultiPlayerWorldData::~MultiPlayerWorldData()
+{}
+
+
+/**
+ *  initialize the GameWorldDataData
+ */
+ErrorMessage MultiPlayerWorldData::init()
+{
+  /* call underlying function */
+  GameWorldData::init();
+}
+
+
+/**
+ *  loads the GUI data
+ * @param root reference to the xml root element
+ */
+ErrorMessage MultiPlayerWorldData::loadGUI(TiXmlElement* root)
+{
+  /* call underlying function */
+  GameWorldData::loadGUI(root);
+}
+
+
+/**
+ *  unloads the GUI data
+ */
+ErrorMessage MultiPlayerWorldData::unloadGUI()
+{
+  /* call underlying function */
+  GameWorldData::unloadGUI();
+}
+
+
+/**
+ *  overloads the GameWorld::loadWorldEntities(...) class since the network WorldEntity loading is different
+ * @param root reference to the xml root parameter
+ */
+ErrorMessage MultiPlayerWorldData::loadWorldEntities(TiXmlElement* root)
+{
+  /* load the spawning points */
+  TiXmlElement* element = root->FirstChildElement("SpawningPoints");
+  if( element == NULL)
+  {
+    PRINTF(1)("NetworkWorld is missing 'SpawningPoints'\n");
+  }
+  else
+  {
+    element = element->FirstChildElement();
+    // load Players/Objects/Whatever
+    PRINTF(4)("Loading Spawning Points\n");
+    while( element != NULL)
+    {
+      BaseObject* created = Factory::fabricate(element);
+      if( created != NULL )
+        printf("Created a Spawning Point %s: %s\n", created->getClassName(), created->getName());
+
+      element = element->NextSiblingElement();
+      glmis->step();
+    }
+    PRINTF(4)("Done loading Spawning Points\n");
+  }
+
+
+  /* load the WorldEntities */
+  element = root->FirstChildElement("WorldEntities");
+  if( element == NULL)
+    PRINTF(1)("NetworkWorld is missing 'WorldEntities'\n");
+  else
+  {
+    element = element->FirstChildElement();
+
+    PRINTF(4)("Loading NetworkWorldEntities\n");
+    while( element != NULL)
+    {
+      if( NetworkManager::getInstance()->isGameServer())
+      {
+        /* pass the entity to the NetworkGameManager to be created */
+        BaseObject* created = NetworkGameManager::getInstance()->createEntity(element);
+        if( created != NULL )
+          PRINTF(1)("Created a %s: %s\n", created->getClassName(), created->getName());
+        else
+          PRINTF(1)("NetworkWorld: could not create this entity\n");
+
+        if( element->Value() != NULL && !strcmp( element->Value(), "SkyBox"))
+          this->sky = dynamic_cast<WorldEntity*>(created);
+        if( element->Value() != NULL && !strcmp( element->Value(), "Terrain"))
+        {
+          this->terrain = dynamic_cast<Terrain*>(created);
+          CDEngine::getInstance()->setTerrain(terrain);
+        }
+      }
+      /* clients only spawn the SpaceShip */
+      else if( !strcmp( element->Value(), "SpaceShip"))
+      {
+        BaseObject* created = Factory::fabricate(element);
+        if( created != NULL )
+          PRINTF(1)("Created a %s: %s\n", created->getClassName(), created->getName());
+        else
+          PRINTF(1)("NetworkWorld: could not create this entity\n");
+      }
+      element = element->NextSiblingElement();
+
+      glmis->step();
+      PRINTF(4)("Done loading NetworkWorldEntities\n");
+    }
+
+
+    /* create a Player */
+    this->localPlayer = new Player();
+    Playable* playable;
+    const list<BaseObject*>* playableList = ClassList::getList(CL_PLAYABLE);
+    if (playableList != NULL)
+    {
+      playable = dynamic_cast<Playable*>(playableList->front());
+      this->localPlayer->setControllable(playable);
+    }
+
+
+    /* init the pnode tree */
+    PNode::getNullParent()->init();
+  }
+}
+
+
+/**
+ *  unloads the world entities from the xml file
+ */
+ErrorMessage MultiPlayerWorldData::unloadWorldEntities()
+{
+  /* call underlying function */
+  GameWorldData::unloadWorldEntities();
+}
+
+
+/**
+ *  loads the scene data
+ * @param root reference to the xml root element
+ */
+ErrorMessage MultiPlayerWorldData::loadScene(TiXmlElement* root)
+{
+  /* call underlying function */
+  GameWorldData::loadScene(root);
+}
+
+
+/**
+ *  unloads the scene data
+ */
+ErrorMessage MultiPlayerWorldData::unloadScene()
+{
+  /* call underlying function */
+  GameWorldData::unloadScene();
+}
+
Index: /branches/network/src/story_entities/multi_player_world_data.h
===================================================================
--- /branches/network/src/story_entities/multi_player_world_data.h	(revision 6404)
+++ /branches/network/src/story_entities/multi_player_world_data.h	(revision 6404)
@@ -0,0 +1,36 @@
+/*!
+ * @file multi_player_world_data.h
+ *  container for all multiplayer game world data
+ */
+
+#ifndef _MULTI_PLAYER_WORLD_DATA_H
+#define _MULTI_PLAYER_WORLD_DATA_H
+
+#include "game_world_data.h"
+
+
+class TiXmlElement;
+
+
+//! The multiplayer world data
+class MultiPlayerWorldData : public GameWorldData
+{
+
+  public:
+    MultiPlayerWorldData();
+    virtual ~MultiPlayerWorldData();
+
+    virtual ErrorMessage init();
+
+
+  protected:
+    virtual ErrorMessage loadGUI(TiXmlElement* root);
+    virtual ErrorMessage loadWorldEntities(TiXmlElement* root);
+    virtual ErrorMessage loadScene(TiXmlElement* root);
+
+    virtual ErrorMessage unloadGUI();
+    virtual ErrorMessage unloadWorldEntities();
+    virtual ErrorMessage unloadScene();
+};
+
+#endif /* _MULTI_PLAYER_WORLD_DATA_H */
Index: /branches/network/src/story_entities/single_player_world.cc
===================================================================
--- /branches/network/src/story_entities/single_player_world.cc	(revision 6403)
+++ /branches/network/src/story_entities/single_player_world.cc	(revision 6404)
@@ -16,4 +16,5 @@
 
 #include "single_player_world.h"
+#include "single_player_world_data.h"
 
 #include "state.h"
@@ -42,4 +43,6 @@
 
   this->loadParams(root);
+
+  this->singlePlayerWorldData = new SinglePlayerWorldData();
 }
 
@@ -68,23 +71,2 @@
 }
 
-
-
-
-// ErrorMessage SinglePlayerWorld::load()
-// {
-//   static_cast<GameWorld*>(this)->load();
-//
-//   /* the the single player specific stuff here */
-//
-//   /* some static world entities */
-//   for(int i = 0; i < 100; i++)
-//   {
-//     WorldEntity* tmp = new NPCTest1();
-//     char npcChar[10];
-//     sprintf (npcChar, "NPC_%d", i);
-//     tmp->setName(npcChar);
-//     tmp->setAbsCoor(((float)rand()/RAND_MAX) * 5000, 50/*+ (float)rand()/RAND_MAX*20*/, ((float)rand()/RAND_MAX -.5) *30);
-//     this->spawn(tmp);
-//   }
-// }
-
Index: /branches/network/src/story_entities/single_player_world.h
===================================================================
--- /branches/network/src/story_entities/single_player_world.h	(revision 6403)
+++ /branches/network/src/story_entities/single_player_world.h	(revision 6404)
@@ -11,4 +11,5 @@
 
 class TiXmlElement;
+class SinglePlayerWorldData;
 
 
@@ -28,5 +29,5 @@
 
   private:
-
+    SinglePlayerWorldData*        singlePlayerWorldData;             //!< reference to the data tank
 };
 
Index: /branches/network/src/story_entities/single_player_world_data.cc
===================================================================
--- /branches/network/src/story_entities/single_player_world_data.cc	(revision 6404)
+++ /branches/network/src/story_entities/single_player_world_data.cc	(revision 6404)
@@ -0,0 +1,146 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   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, or (at your option)
+   any later version.
+
+### File Specific:
+   main-programmer: Patrick Boenzli
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD
+
+
+#include "single_player_world_data.h"
+
+#include "load_param.h"
+
+
+using namespace std;
+
+
+/**
+ * constructor of the GameWorldDataData
+ */
+SinglePlayerWorldData::SinglePlayerWorldData()
+  : GameWorldData()
+{}
+
+
+/**
+ * destructor for the GameWorldDataData
+ */
+SinglePlayerWorldData::~SinglePlayerWorldData()
+{}
+
+
+/**
+ *  initialize the GameWorldDataData
+ */
+ErrorMessage SinglePlayerWorldData::init()
+{
+  /* call underlying function */
+  GameWorldData::init();
+}
+
+
+/**
+ *  loads the data from the xml file
+ * @param root reference to the xml root element
+ */
+ErrorMessage SinglePlayerWorldData::loadData(TiXmlElement* root)
+{
+  // load the parameters
+  // name
+  const char* string = grabParameter( root, "name");
+  if( string == NULL)
+  {
+    PRINTF(2)("GameWorld is missing a proper 'name'\n");
+    this->setName("Unknown");
+  }
+  else
+    this->setName(string);
+
+  this->loadGUI(root);
+  this->loadWorldEntities(root);
+  this->loadScene(root);
+}
+
+
+/**
+ *  unloads the data from the xml file
+ */
+ErrorMessage SinglePlayerWorldData::unloadData()
+{
+  this->unloadGUI();
+  this->unloadWorldEntities();
+  this->unloadScene();
+}
+
+
+/**
+ *  loads the GUI data
+ * @param root reference to the xml root element
+ */
+ErrorMessage SinglePlayerWorldData::loadGUI(TiXmlElement* root)
+{
+  /* call underlying function */
+  GameWorldData::loadGUI(root);
+}
+
+
+/**
+ *  unloads the GUI data
+ */
+ErrorMessage SinglePlayerWorldData::unloadGUI()
+{
+  /* call underlying function */
+  GameWorldData::unloadGUI();
+}
+
+
+/**
+ *  overloads the GameWorld::loadWorldEntities(...) class since the network WorldEntity loading is different
+ * @param root reference to the xml root parameter
+ */
+ErrorMessage SinglePlayerWorldData::loadWorldEntities(TiXmlElement* root)
+{
+  /* call underlying function */
+  GameWorldData::loadWorldEntities(root);
+}
+
+
+/**
+ *  unloads the world entities from the xml file
+ */
+ErrorMessage SinglePlayerWorldData::unloadWorldEntities()
+{
+  /* call underlying function */
+  GameWorldData::unloadWorldEntities();
+}
+
+
+/**
+ *  loads the scene data
+ * @param root reference to the xml root element
+ */
+ErrorMessage SinglePlayerWorldData::loadScene(TiXmlElement* root)
+{
+  /* call underlying function */
+  GameWorldData::loadScene(root);
+}
+
+
+/**
+ *  unloads the scene data
+ */
+ErrorMessage SinglePlayerWorldData::unloadScene()
+{
+  /* call underlying function */
+  GameWorldData::unloadScene();
+}
+
Index: /branches/network/src/story_entities/single_player_world_data.h
===================================================================
--- /branches/network/src/story_entities/single_player_world_data.h	(revision 6404)
+++ /branches/network/src/story_entities/single_player_world_data.h	(revision 6404)
@@ -0,0 +1,36 @@
+/*!
+ * @file single_player_world_data.h
+ *  container for all singleplayer game world data
+ */
+
+#ifndef _SINGLE_PLAYER_WORLD_DATA_H
+#define _SINGLE_PLAYER_WORLD_DATA_H
+
+#include "game_world_data.h"
+
+class TiXmlElement;
+
+//! The singleplayer world data
+class SinglePlayerWorldData : public GameWorldData
+{
+
+  public:
+    SinglePlayerWorldData();
+    virtual ~SinglePlayerWorldData();
+
+    virtual ErrorMessage init();
+    virtual ErrorMessage loadData(TiXmlElement* root);
+    virtual ErrorMessage unloadData();
+
+
+  protected:
+    virtual ErrorMessage loadGUI(TiXmlElement* root);
+    virtual ErrorMessage loadWorldEntities(TiXmlElement* root);
+    virtual ErrorMessage loadScene(TiXmlElement* root);
+
+    virtual ErrorMessage unloadGUI();
+    virtual ErrorMessage unloadWorldEntities();
+    virtual ErrorMessage unloadScene();
+};
+
+#endif /* _SINGLE_PLAYER_WORLD_DATA_H */
