Index: code/branches/bindermFS16/data/gui/layouts/CampaignMenu.layout
===================================================================
--- code/branches/bindermFS16/data/gui/layouts/CampaignMenu.layout	(revision 11173)
+++ code/branches/bindermFS16/data/gui/layouts/CampaignMenu.layout	(revision 11180)
@@ -13,6 +13,5 @@
             <Property Name="Visible" Value="False"/>
             <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
-            <Property Name="UnifiedAreaRect" Value="{{0.35,0},{0.1,0},{0.65,0},{0.15,0}}" />
-            <Property Name="Disabled" Value="False" />
+            <Property Name="UnifiedAreaRect" Value="{{0.01,0},{0.01,0},{0.3,0},{0.06,0}}" />
             <Event Name="Clicked" Function="CampaignMenu.Mission1Button_clicked"/>
         </Window>
Index: code/branches/bindermFS16/data/gui/scripts/CampaignMenu.lua
===================================================================
--- code/branches/bindermFS16/data/gui/scripts/CampaignMenu.lua	(revision 11173)
+++ code/branches/bindermFS16/data/gui/scripts/CampaignMenu.lua	(revision 11180)
@@ -26,8 +26,13 @@
 
 function P.updateButton(index, button)
-    if (orxonox.LevelManager:getInstance():missionactivate(index)) then
+    local test =orxonox.LevelManager:getInstance():missionactivate(index)
+    if (test==1) then
         button:setProperty("Visible", "True")
         button:setProperty("Disabled", "False")
+    elseif (test==2) then
+        button:setProperty("Visible", "True")
+        button:setProperty("Disabled", "True")
     else
+        button:setProperty("Visible", "False")
         button:setProperty("Disabled", "True")
     end
Index: code/branches/bindermFS16/src/orxonox/LevelManager.cc
===================================================================
--- code/branches/bindermFS16/src/orxonox/LevelManager.cc	(revision 11173)
+++ code/branches/bindermFS16/src/orxonox/LevelManager.cc	(revision 11180)
@@ -52,5 +52,6 @@
     LevelStatus::LevelStatus()
     {
-        this->won = true;
+        this->won = false;
+        this->nextLevels.insert(this->nextLevels.begin(),-1);
     }
 
@@ -58,14 +59,51 @@
     {}
 
-    bool LevelManager::missionactivate(int index)
-    {
-        //check for index level activate...
-        return index-5;
-    }
-
-    void LevelManager::setLevelStatus(int completedLevel)
-    {
-//        allLevelStatus_[completedLevel]=new LevelStatus;
-    }
+
+    //check if index level is activated...
+    int LevelManager::missionactivate(int index)
+    {
+            return index+1;
+
+
+        if (allLevelStatus_[index].won)
+            return 1;
+
+        //check if level is activated
+        for(unsigned int i=1;i<allLevelStatus_.size();i++)
+        {
+            std::vector<int> nextLevels=allLevelStatus_[i].nextLevels;
+            bool won=allLevelStatus_[i].won;
+            if(nextLevels[index]==1&&won)
+                return 1;
+        };
+
+        //check if level visible but not activated
+        for(unsigned int i=1;i<allLevelStatus_.size();i++)
+        {
+            std::vector<int> nextLevels=allLevelStatus_[i].nextLevels;
+            bool won=allLevelStatus_[i].won;
+            if(nextLevels[index]==2&&won)
+                return 2;
+        };
+        return false;
+    }
+
+    //updates the won variable of the corresponding LevelStatus in allLevelStatus_
+    void LevelManager::setLevelStatus(const int completedLevel)
+    {
+        allLevelStatus_[completedLevel].won=true;   
+    }
+
+    //build up allLevelStatus
+    //has to be done once per game (not per level)
+    //all connections between the levels are saved in here
+    void LevelManager::buildallLevelStatus()
+    {
+        LevelStatus level;
+        allLevelStatus_.assign (10,level);
+        allLevelStatus_[1].won=true;
+
+    }
+
 
 
@@ -97,5 +135,5 @@
         this->nextLevel_ = this->availableLevels_.begin();
 
-        allLevelStatus_.reserve(1);
+        buildallLevelStatus();
     }
 
Index: code/branches/bindermFS16/src/orxonox/LevelManager.h
===================================================================
--- code/branches/bindermFS16/src/orxonox/LevelManager.h	(revision 11173)
+++ code/branches/bindermFS16/src/orxonox/LevelManager.h	(revision 11180)
@@ -58,6 +58,4 @@
         virtual ~LevelStatus();
         
-
-    private:
         bool won;
         std::vector<int> nextLevels;
@@ -97,5 +95,6 @@
             virtual ~LevelManager();
 
-            void setLevelStatus(int integer);
+            void setLevelStatus(const int integer);
+            void buildallLevelStatus();
 
 
@@ -108,5 +107,5 @@
 
             // tolua_begin
-            bool missionactivate(int index);
+            int missionactivate(int index);
             void setDefaultLevel(const std::string& levelName); //!< Set the default Level.
             /**
@@ -159,4 +158,5 @@
             std::string lastFinishedCampaignMission_;
             std::vector<std::string> campaignMissions_;
+
             std::vector<LevelStatus> allLevelStatus_;
 
Index: code/branches/bindermFS16/src/orxonox/gametypes/Mission.cc
===================================================================
--- code/branches/bindermFS16/src/orxonox/gametypes/Mission.cc	(revision 11173)
+++ code/branches/bindermFS16/src/orxonox/gametypes/Mission.cc	(revision 11180)
@@ -92,5 +92,7 @@
 
             LevelManager::getInstance().setLastFinishedCampaignMission(this->getFilename());
-            //LevelManager::getInstance().setLevelStatus(7);
+
+            //gibt index von bestandenem level weiter
+            LevelManager::getInstance().setLevelStatus(7);
         }
         else if (!this->gtinfo_->hasEnded())
