Index: trunk/src/story_entities/campaign.cc
===================================================================
--- trunk/src/story_entities/campaign.cc	(revision 6873)
+++ trunk/src/story_entities/campaign.cc	(revision 6874)
@@ -40,4 +40,6 @@
   assert( root != NULL);
 
+  this->bReturnToMenu = false;
+
   this->campaignData = new CampaignData(root);
   this->loadParams(root);
@@ -77,4 +79,5 @@
 
   this->isRunning = true;
+  this->bReturnToMenu = false;
   this->run();
 }
@@ -106,8 +109,7 @@
 {
   PRINTF(4)("Stopping the current Campaign\n");
-  //this->isRunning = false;
+  this->bReturnToMenu = true;
   if( this->currentEntity != NULL)
   {
-    this->currentEntity->setNextStoryID(0);
     this->currentEntity->stop();
   }
@@ -129,11 +131,19 @@
     PRINTF(0)("Campaign is starting StoryEntity nr:%i\n", this->currentEntity->getStoryID());
 
+    // check if return to menu
+    if( this->bReturnToMenu)
+    {
+      this->currentEntity = this->campaignData->getLevel(WORLD_ID_MENU);
+      this->bReturnToMenu = false;
+    }
+
+    this->campaignData->setCurrentEntity(this->currentEntity);
+
     this->currentEntity->init();
-
     this->currentEntity->loadData();
     this->currentEntity->start();
     this->currentEntity->unloadData();
   }
-  PRINTF(2)("There is no StoryEnity left to play, returning to Main Menu\n");
+  PRINTF(2)("There is no StoryEnity left to play, quitting game\n");
 }
 
Index: trunk/src/story_entities/campaign.h
===================================================================
--- trunk/src/story_entities/campaign.h	(revision 6873)
+++ trunk/src/story_entities/campaign.h	(revision 6874)
@@ -37,4 +37,6 @@
     StoryEntity*                        currentEntity;          //!< reference to the current StoryEntity
     CampaignData*                       campaignData;           //!< reference to the CampaignData
+
+    bool                                bReturnToMenu;          //!< is true, if the StoryEntity should return to the Mainmenu after termination
 };
 
Index: trunk/src/story_entities/campaign_data.cc
===================================================================
--- trunk/src/story_entities/campaign_data.cc	(revision 6873)
+++ trunk/src/story_entities/campaign_data.cc	(revision 6874)
@@ -139,4 +139,17 @@
 
 
+/**
+ * @param storyID the story ID to look for
+ * @returns a pointer to a StoryEntity with the storyID
+ */
+StoryEntity* CampaignData::getLevel(int storyID)
+{
+  list<StoryEntity*>::iterator   it;
+  for( it = this->storyEntities.begin(); it != this->storyEntities.end(); it++)
+  {
+    if( storyID == (*it)->getStoryID())
+      return (*it);
+  }
+  return NULL;
+}
 
-
Index: trunk/src/story_entities/campaign_data.h
===================================================================
--- trunk/src/story_entities/campaign_data.h	(revision 6873)
+++ trunk/src/story_entities/campaign_data.h	(revision 6874)
@@ -29,4 +29,10 @@
     StoryEntity* getFirstLevel();
     StoryEntity* getNextLevel();
+    StoryEntity* getLevel(int storyID);
+
+    /** @param storyEntity the current entity to be set */
+    inline void setCurrentEntity(StoryEntity* storyEntity) { this->currentEntity = storyEntity; }
+    /** @return the current StoryEntity played*/
+    inline StoryEntity* getCurrentEntity() { return this->currentEntity; }
 
 
Index: trunk/src/story_entities/simple_game_menu.cc
===================================================================
--- trunk/src/story_entities/simple_game_menu.cc	(revision 6873)
+++ trunk/src/story_entities/simple_game_menu.cc	(revision 6874)
@@ -198,11 +198,18 @@
     {
       this->menuLayer[1]->storyList.push_back(se);
-      PRINTF(0)("Got a new menu entry |%s|\n", se->getName());
+
+      // generating menu item
       ImageEntity* ie = new ImageEntity();
-      PRINTF(0)("setting texture to: |%s|\n", se->getMenuItemImage());
       ie->setTexture(se->getMenuItemImage());
       ie->setRelCoor(0.0f,20.0f - (this->menuLayer[1]->menuList.size() * 10.0f), 0.0f);
       ie->setVisibility(false);
       this->menuLayer[1]->menuList.push_back(ie);
+
+      // generating screenshoot item
+//       ie = new ImageEntity();
+//       ie->setTexture(se->getMenuScreenshoot);
+//       ie->setRelCoor(.0f, 10.0f, 0.0f);
+//       this->menuLayer[1]->screenshootList.push_back(ie);
+
     }
   }
Index: trunk/src/story_entities/simple_game_menu.h
===================================================================
--- trunk/src/story_entities/simple_game_menu.h	(revision 6873)
+++ trunk/src/story_entities/simple_game_menu.h	(revision 6874)
@@ -31,4 +31,5 @@
     std::vector<ImageEntity*>         menuList;                        //!< the list of the menu items
     std::vector<StoryEntity*>         storyList;                       //!< the list of the StoryEntities for the menu
+    std::vector<ImageEntity*>         screenshootList;                 //!< list of the screen shoots FIXME: make a better structure for this stuff
 };
 
Index: trunk/src/story_entities/story_def.h
===================================================================
--- trunk/src/story_entities/story_def.h	(revision 6873)
+++ trunk/src/story_entities/story_def.h	(revision 6874)
@@ -12,4 +12,5 @@
 #define DEBUG_WORLD_2 102
 
+
 #define WORLD_ID_0 0
 #define WORLD_ID_1 1
@@ -18,4 +19,6 @@
 #define WORLD_ID_4 4
 #define WORLD_ID_5 5
+
+#define WORLD_ID_MENU    0
 #define WORLD_ID_GAMEEND 999
 
Index: trunk/src/util/state.cc
===================================================================
--- trunk/src/util/state.cc	(revision 6873)
+++ trunk/src/util/state.cc	(revision 6874)
@@ -43,4 +43,7 @@
 bool State::bOnline = false;
 
+bool State::bMenuMode = false;
+
+
 /**
  *  sets camera and target of the current Camera
Index: trunk/src/util/state.h
===================================================================
--- trunk/src/util/state.h	(revision 6873)
+++ trunk/src/util/state.h	(revision 6874)
@@ -82,4 +82,14 @@
 
 
+  ////////////
+  /// Menu ///
+  ////////////
+  /** sets the menu mode @param mode true if always exit to menu */
+  static inline void setMenuMode(bool mode) { State::bMenuMode = mode; }
+  /** @returns the menu mode */
+  static inline bool getMenuMode() { return State::bMenuMode;}
+
+
+
  private:
   State();
@@ -97,4 +107,5 @@
 
   static bool                   bOnline;           //!< Is true if this node is in multiplayer mode (via network)
+  static bool                   bMenuMode;         //!< True is orxonox is player in the menu mode (always returning to the menu after exit)
 
   };
