Index: code/branches/pickupsFS14/src/modules/jump/CMakeLists.txt
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/CMakeLists.txt	(revision 10041)
+++ code/branches/pickupsFS14/src/modules/jump/CMakeLists.txt	(revision 10050)
@@ -6,5 +6,11 @@
   JumpPlatformHMove.cc
   JumpPlatformVMove.cc
+  JumpPlatformDisappear.cc
+  JumpPlatformTimer.cc
+  JumpPlatformFake.cc
+  JumpProjectile.cc
+  JumpEnemy.cc
   JumpFigure.cc
+  JumpItem.cc
   JumpCenterpoint.cc
   JumpScore.cc
Index: code/branches/pickupsFS14/src/modules/jump/Jump.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/Jump.cc	(revision 10041)
+++ code/branches/pickupsFS14/src/modules/jump/Jump.cc	(revision 10050)
@@ -47,4 +47,9 @@
 #include "JumpPlatformHMove.h"
 #include "JumpPlatformVMove.h"
+#include "JumpPlatformDisappear.h"
+#include "JumpPlatformTimer.h"
+#include "JumpPlatformFake.h"
+#include "JumpProjectile.h"
+#include "JumpEnemy.h"
 #include "JumpFigure.h"
 
@@ -70,6 +75,5 @@
         this->figure_ = 0;
         this->camera = 0;
-
-        platformList.clear();
+        this->fakeAdded_ = false;
 
         this->setHUDTemplate("JumpHUD");
@@ -78,5 +82,4 @@
         this->starttimer_.setTimer(1.0, false, createExecutor(createFunctor(&Jump::startBall, this)));
         this->starttimer_.stopTimer();
-
 
         this->scoreLimit_ = 10;
@@ -111,7 +114,7 @@
 
                 // Falls noetig neue Platformen im neuen Bereich einfuegen
-                if (screenShiftSinceLastUpdate > sectionLength)
+                if (screenShiftSinceLastUpdate > center_->getSectionLength())
                 {
-                	screenShiftSinceLastUpdate -= sectionLength;
+                	screenShiftSinceLastUpdate -= center_->getSectionLength();
                     addSection();
                 }
@@ -124,4 +127,11 @@
     		}
 
+    		// Schiessen
+    		if (figure_->fireSignal)
+    		{
+    			figure_->fireSignal = false;
+    			addProjectile(figurePosition.x, figurePosition.z, 0.0, 150.0);
+    		}
+
 
     		if (this->camera != NULL)
@@ -133,5 +143,5 @@
 			{
 				orxout() << "No camera found." << endl;
-				//this->camera = this->figure_->getCamera();
+				//camera = figure_->getCamera();
 			}
     	}
@@ -142,19 +152,103 @@
 
 		// Platformen, die zu weit unten sind entfernen
+		ObjectList<JumpPlatform>::iterator beginPlatform = ObjectList<JumpPlatform>::begin();
+		ObjectList<JumpPlatform>::iterator endPlatform = ObjectList<JumpPlatform>::end();
+		ObjectList<JumpPlatform>::iterator itPlatform = beginPlatform;
 		Vector3 platformPosition;
-		for (std::list<JumpPlatform*>::iterator it = platformList.begin(); it != platformList.end(); it++)
-		{
-			// IDEE: Statt durch alle platformen in der Liste, wie im Tutorial durch alle objekte im Spiel iterieren --> eigene liste unnoetig
-			platformPosition = (**it).getPosition();
+
+		while (itPlatform != endPlatform)
+		{
+			platformPosition = itPlatform->getPosition();
 			if (platformPosition.z < totalScreenShift - center_->getFieldDimension().y)
 			{
+				ObjectList<JumpPlatform>::iterator temp = itPlatform;
+				++ itPlatform;
+				center_->detach(*temp);
+				temp->destroy();
+			}
+			else
+			{
+				++ itPlatform;
+			}
+		}
+
+		// DAS GEHT NICHT!!! it++ funktioniert nicht, falls eine Platform geloescht wurde -> Segmentation Error
+		/*
+		for (ObjectList<JumpPlatformDisappear>::iterator it = ObjectList<JumpPlatformDisappear>::begin(); orxout() << "E" << endl, it != ObjectList<JumpPlatformDisappear>::end(); orxout() << "F" << endl, ++it)
+		{
+			if (!it->isActive())
+			{
 				// Entferne Platform
-				orxout() << "position = " << (**it).getPosition().y << endl;
 				center_->detach(*it);
-				it = platformList.erase(it);
-			}
-		}
-    }
-
+				it->destroy();
+			}
+		}
+		*/
+
+		// Deaktivierte Platformen entfernen
+		ObjectList<JumpPlatformDisappear>::iterator beginDisappear = ObjectList<JumpPlatformDisappear>::begin();
+		ObjectList<JumpPlatformDisappear>::iterator endDisappear = ObjectList<JumpPlatformDisappear>::end();
+		ObjectList<JumpPlatformDisappear>::iterator itDisappear = beginDisappear;
+
+		while (itDisappear != endDisappear)
+		{
+			if (!itDisappear->isActive())
+			{
+				ObjectList<JumpPlatformDisappear>::iterator temp = itDisappear;
+				++ itDisappear;
+				center_->detach(*temp);
+				temp->destroy();
+			}
+			else
+			{
+				++ itDisappear;
+			}
+		}
+
+		// Abgelaufene Timer-Platformen entfernen
+		ObjectList<JumpPlatformTimer>::iterator beginTimer = ObjectList<JumpPlatformTimer>::begin();
+		ObjectList<JumpPlatformTimer>::iterator endTimer = ObjectList<JumpPlatformTimer>::end();
+		ObjectList<JumpPlatformTimer>::iterator itTimer = beginTimer;
+
+		while (itTimer != endTimer)
+		{
+			if (!itTimer->isActive())
+			{
+				ObjectList<JumpPlatformTimer>::iterator temp = itTimer;
+				++ itTimer;
+				center_->detach(*temp);
+				temp->destroy();
+			}
+			else
+			{
+				++ itTimer;
+			}
+		}
+
+		// Projektile, die zu weit oben sind entfernen
+		ObjectList<JumpProjectile>::iterator beginProjectile = ObjectList<JumpProjectile>::begin();
+		ObjectList<JumpProjectile>::iterator endProjectile = ObjectList<JumpProjectile>::end();
+		ObjectList<JumpProjectile>::iterator itProjectile = beginProjectile;
+		Vector3 projectilePosition;
+
+		while (itProjectile != endProjectile)
+		{
+			projectilePosition = itProjectile->getPosition();
+			if (projectilePosition.z > totalScreenShift + 5*center_->getFieldDimension().y)
+			{
+				ObjectList<JumpProjectile>::iterator temp = itProjectile;
+				++ itProjectile;
+				center_->detach(*temp);
+				temp->destroy();
+			}
+			else
+			{
+				++ itProjectile;
+			}
+		}
+
+
+
+    }
 
     void Jump::setConfigValues()
@@ -169,15 +263,8 @@
     void Jump::cleanup()
     {
-        /*if (this->ball_ != NULL) // Destroy the ball, if present.
-        {
-            this->ball_->destroy();
-            this->ball_ = 0;
-        }*/
-
-        // Destroy both bats, if present.
 		if (this->figure_ != NULL)
 		{
-			this->figure_->destroy();
-			this->figure_ = 0;
+			//this->figure_->destroy();
+			//this->figure_ = 0;
 		}
 		this->camera = 0;
@@ -207,5 +294,5 @@
 			{
 				this->figure_ = new JumpFigure(this->center_->getContext());
-				this->figure_->addTemplate(this->center_->getBattemplate());
+				this->figure_->addTemplate(this->center_->getFigureTemplate());
 			}
 
@@ -213,10 +300,5 @@
             this->center_->attach(this->figure_);
             this->figure_->setPosition(-this->center_->getFieldDimension().x / 2, 0, 0);
-            this->figure_->yaw(Degree(-90));
-            this->figure_->setSpeed(this->center_->getBatSpeed());
             this->figure_->setFieldDimension(this->center_->getFieldDimension());
-            this->figure_->setLength(this->center_->getBatLength());
-
-
         }
         else // If no centerpoint was specified, an error is thrown and the level is exited.
@@ -248,5 +330,4 @@
         screenShiftSinceLastUpdate = 0.0;
         sectionNumber = 0;
-        sectionLength = 100.0;
 
         addStartSection();
@@ -261,5 +342,6 @@
     void Jump::end()
     {
-        this->cleanup();
+    	cleanup();
+    	GSLevel::startMainMenu();
 
         // Call end for the parent class.
@@ -393,13 +475,94 @@
     }
 
-    void Jump::addPlatform(JumpPlatform* newPlatform, float xPosition, float zPosition)
-    {
-    	if (newPlatform != NULL)
-		{
+    void Jump::addPlatform(JumpPlatform* newPlatform, std::string platformTemplate, float xPosition, float zPosition)
+    {
+    	if (newPlatform != NULL && center_ != NULL)
+		{
+    		newPlatform->addTemplate(platformTemplate);
     		newPlatform->setPosition(Vector3(xPosition, 0.0, zPosition));
     		newPlatform->setFieldDimension(center_->getFieldDimension());
     		newPlatform->setFigure(this->figure_);
     		center_->attach(newPlatform);
-    		platformList.push_front(newPlatform);
+		}
+    }
+
+    void Jump::addPlatformStatic(float xPosition, float zPosition)
+    {
+		if (fakeAdded_ == false && rand()%5 == 0)
+		{
+			addPlatformFake(xPosition, zPosition);
+		}
+		else
+		{
+	    	JumpPlatformStatic* newPlatform = new JumpPlatformStatic(center_->getContext());
+			addPlatform(newPlatform, center_->getPlatformStaticTemplate(), xPosition, zPosition);
+		}
+    }
+
+    void Jump::addPlatformHMove(float xPosition, float zPosition, float leftBoundary, float rightBoundary, float speed)
+    {
+    	JumpPlatformHMove* newPlatform = new JumpPlatformHMove(center_->getContext());
+		newPlatform->setProperties(leftBoundary, rightBoundary, speed);
+		addPlatform(newPlatform, center_->getPlatformHMoveTemplate(), xPosition, zPosition);
+    }
+
+    void Jump::addPlatformVMove(float xPosition, float zPosition, float lowerBoundary, float upperBoundary, float speed)
+    {
+    	JumpPlatformVMove* newPlatform = new JumpPlatformVMove(center_->getContext());
+		newPlatform->setProperties(lowerBoundary, upperBoundary, speed);
+		addPlatform(newPlatform, center_->getPlatformVMoveTemplate(), xPosition, zPosition);
+    }
+
+    void Jump::addPlatformDisappear(float xPosition, float zPosition)
+    {
+		JumpPlatformDisappear* newPlatform = new JumpPlatformDisappear(center_->getContext());
+		newPlatform->setProperties(true);
+		addPlatform(newPlatform, center_->getPlatformDisappearTemplate(), xPosition, zPosition);
+    }
+
+    void Jump::addPlatformTimer(float xPosition, float zPosition, float time, float variance)
+    {
+		float additionalTime = (float)(rand()%100)/(100*variance) - variance/2;
+
+    	JumpPlatformTimer* newPlatform = new JumpPlatformTimer(center_->getContext());
+		newPlatform->setProperties(time + additionalTime);
+		addPlatform(newPlatform, center_->getPlatformTimerTemplate(), xPosition, zPosition);
+    }
+
+    void Jump::addPlatformFake(float xPosition, float zPosition)
+    {
+    	fakeAdded_ = true;
+
+		JumpPlatformFake* newPlatform = new JumpPlatformFake(center_->getContext());
+		addPlatform(newPlatform, center_->getPlatformFakeTemplate(), xPosition, zPosition);
+		newPlatform->setAngularVelocity(Vector3(0, 0, 2.0));
+    }
+
+
+    void Jump::addProjectile(float xPosition, float zPosition, float xVelocity, float zVelocity)
+    {
+    	JumpProjectile* newProjectile = new JumpProjectile(center_->getContext());
+    	if (newProjectile != NULL && center_ != NULL)
+		{
+    		newProjectile->addTemplate(center_->getProjectileTemplate());
+    		newProjectile->setPosition(Vector3(xPosition, 0.0, zPosition));
+    		newProjectile->setVelocity(Vector3(xVelocity, 0.0, zVelocity));
+    		newProjectile->setFieldDimension(center_->getFieldDimension());
+    		newProjectile->setFigure(this->figure_);
+    		center_->attach(newProjectile);
+		}
+    }
+
+    void Jump::addEnemy1(float xPosition, float zPosition, float leftBoundary, float rightBoundary, float lowerBoundary, float upperBoundary, float xVelocity, float zVelocity)
+    {
+    	JumpEnemy* newEnemy = new JumpEnemy(center_->getContext());
+    	if (newEnemy != NULL && center_ != NULL)
+		{
+    		newEnemy->addTemplate(center_->getEnemy1Template());
+    		newEnemy->setPosition(Vector3(xPosition, 0.0, zPosition));
+    		newEnemy->setProperties(leftBoundary, rightBoundary, lowerBoundary, upperBoundary, xVelocity, zVelocity);
+    		newEnemy->setFieldDimension(center_->getFieldDimension());
+    		newEnemy->setFigure(this->figure_);
+    		center_->attach(newEnemy);
 		}
     }
@@ -409,8 +572,11 @@
 		JumpPlatform* newPlatform;
 
-		for (float xPosition = -center_->getFieldDimension().x; xPosition <= center_->getFieldDimension().x; xPosition += 12.0)
+		float sectionLength = center_->getSectionLength();
+		float platformLength = center_->getPlatformLength();
+
+		for (float xPosition = -center_->getFieldDimension().x; xPosition <= center_->getFieldDimension().x; xPosition += platformLength)
 		{
 			newPlatform = new JumpPlatformStatic(center_->getContext());
-			addPlatform(newPlatform, xPosition, -0.05*sectionLength);
+			addPlatform(newPlatform, center_->getPlatformStaticTemplate(), xPosition, -0.05*sectionLength);
 		}
     }
@@ -419,37 +585,146 @@
     {
         float fieldWidth = center_->getFieldDimension().x;
-        float fieldHeight = center_->getFieldDimension().y;
+        float sectionLength = center_->getSectionLength();
+        float platformLength = center_->getPlatformLength();
 
         float sectionBegin = sectionNumber * sectionLength;
         float sectionEnd = (1.0 + sectionNumber) * sectionLength;
 
-        JumpPlatformStatic* newPlatformStatic;
-        JumpPlatformHMove* newPlatformHMove;
-        JumpPlatformVMove* newPlatformVMove;
-
-		switch (rand()%3)
+		int randPos1 = rand()%10;
+		int randPos2 = rand()%10;
+		int randPos3 = rand()%10;
+		int randPos4 = rand()%10;
+
+		if (rand()%5 == 0)
+		{
+			addEnemy1(randomXPosition(), sectionBegin + sectionLength/10, -fieldWidth, fieldWidth, sectionBegin + sectionLength/10, sectionBegin + sectionLength/10, 5.0, 0.0);
+		}
+
+        switch (rand()%12)
 		{
 		case 0:
-			for (int i = 0; i < 10; ++i)
-			{
-				newPlatformStatic = new JumpPlatformStatic(center_->getContext());
-				addPlatform(newPlatformStatic, randomXPosition(), sectionBegin + i*sectionLength/10);
+			// Doppelt statisch
+			for (int i = 0; i < 10; ++i)
+			{
+				for (int j = 0; j < 2; ++j)
+				{
+					addPlatformStatic(randomXPosition(2, j), sectionBegin + i*sectionLength/10);
+				}
 			}
 			break;
 		case 1:
-			for (int i = 0; i < 10; ++i)
-			{
-				newPlatformHMove = new JumpPlatformHMove(center_->getContext());
-				newPlatformHMove->setProperties(-fieldWidth, fieldWidth, 30.0);
-				addPlatform(newPlatformHMove, randomXPosition(), sectionBegin + i*sectionLength/10);
-			}
-
+			// Dreifach statisch
+			for (int i = 0; i < 10; ++i)
+			{
+				for (int j = 0; j < 3; ++j)
+				{
+					addPlatformStatic(randomXPosition(3, j), sectionBegin + i*sectionLength/10);
+				}
+			}
 			break;
 		case 2:
-			for (int i = 0; i < 10; ++i)
-			{
-				newPlatformVMove = new JumpPlatformVMove(center_->getContext());
-				newPlatformVMove->setProperties(sectionBegin, sectionEnd, 20.0);
-				addPlatform(newPlatformVMove, -fieldWidth + i*fieldWidth*2/10, randomYPosition(sectionBegin, sectionEnd));
+			// statisch mit 1 horizontal
+			for (int i = 0; i < 10; ++i)
+			{
+				if (i == randPos1)
+				{
+					addPlatformHMove(randomXPosition(), sectionBegin + i*sectionLength/10, -fieldWidth, fieldWidth, 30.0);
+				}
+				else
+				{
+					addPlatformStatic(randomXPosition(), sectionBegin + i*sectionLength/10);
+				}
+			}
+			break;
+		case 3:
+			// statisch mit 2 horizontal
+			for (int i = 0; i < 10; ++i)
+			{
+				if (i == randPos1 || i == randPos2)
+				{
+					addPlatformHMove(randomXPosition(), sectionBegin + i*sectionLength/10, -fieldWidth, fieldWidth, 30.0);
+				}
+				else
+				{
+					addPlatformStatic(randomXPosition(), sectionBegin + i*sectionLength/10);
+				}
+			}
+			break;
+		case 4:
+			// statisch mit 3 horizontal
+			for (int i = 0; i < 10; ++i)
+			{
+				if (i == randPos1 || i == randPos2 || i == randPos3)
+				{
+					addPlatformHMove(randomXPosition(), sectionBegin + i*sectionLength/10, -fieldWidth, fieldWidth, 30.0);
+				}
+				else
+				{
+					addPlatformStatic(randomXPosition(), sectionBegin + i*sectionLength/10);
+				}
+			}
+			break;
+		case 5:
+			// statisch mit 4 horizontal
+			for (int i = 0; i < 10; ++i)
+			{
+				if (i == randPos1 || i == randPos2 || i == randPos3 || i == randPos4)
+				{
+					addPlatformHMove(randomXPosition(), sectionBegin + i*sectionLength/10, -fieldWidth, fieldWidth, 30.0);
+				}
+				else
+				{
+					addPlatformStatic(randomXPosition(), sectionBegin + i*sectionLength/10);
+				}
+			}
+			break;
+			// Einfach horizontal
+		case 6:
+			for (int i = 0; i < 10; ++i)
+			{
+				addPlatformHMove(randomXPosition(), sectionBegin + i*sectionLength/10, -fieldWidth, fieldWidth, 30.0);
+			}
+			break;
+			// Doppelt horizontal
+		case 7:
+			for (int i = 0; i < 10; ++i)
+			{
+					float mediumPos = randomXPosition(3, 1);
+					addPlatformHMove(randomXPosition(3, 0), sectionBegin + i*sectionLength/10, -fieldWidth, mediumPos - platformLength/2, 30.0);
+					addPlatformHMove(randomXPosition(3, 2), sectionBegin + i*sectionLength/10, mediumPos+platformLength/2, fieldWidth, 30.0);
+			}
+			break;
+			// Einfach vertikal
+		case 8:
+			for (int i = 0; i < 7; ++i)
+			{
+				addPlatformVMove(-fieldWidth + i*fieldWidth*2/10, randomYPosition(sectionBegin, sectionEnd), sectionBegin, sectionEnd, 20.0);
+			}
+			break;
+			// Doppelt vertikal
+		case 9:
+			for (int i = 0; i < 14; ++i)
+			{
+				addPlatformVMove(-fieldWidth + i*fieldWidth*2/10, randomYPosition(sectionBegin, sectionEnd), sectionBegin, sectionEnd, 20.0);
+			}
+			break;
+			// Doppelt verschwindend
+		case 10:
+			for (int i = 0; i < 10; ++i)
+			{
+				for (int j = 0; j < 2; ++j)
+				{
+					addPlatformDisappear(randomXPosition(2, j), randomYPosition(sectionBegin, sectionEnd));
+				}
+			}
+			break;
+			// Doppelt Timer
+		case 11:
+			for (int i = 0; i < 10; ++i)
+			{
+				for (int j = 0; j < 2; ++j)
+				{
+					addPlatformTimer(randomXPosition(2, j), randomYPosition(sectionBegin, sectionEnd), 6.0, 1.5);
+				}
 			}
 			break;
@@ -457,4 +732,6 @@
 		orxout() << "new section added with number "<< sectionNumber << endl;
 
+		fakeAdded_ = false;
+
 		++ sectionNumber;
     }
@@ -462,10 +739,23 @@
     float Jump::randomXPosition()
     {
-    	return (float)(rand()%(2*(int)center_->getFieldDimension().x)) - center_->getFieldDimension().x;
+        float fieldWidth = center_->getFieldDimension().x;
+
+    	return (float)(rand()%(2*(int)fieldWidth)) - fieldWidth;
+    }
+
+    float Jump::randomXPosition(int totalColumns, int culomn)
+    {
+    	float fieldWidth = center_->getFieldDimension().x;
+
+    	float width = 2*fieldWidth/totalColumns;
+    	float leftBound = culomn*width-fieldWidth;
+    	float platformLength = center_->getPlatformLength();
+
+    	return (float)(rand()%(int)(width-platformLength)) + leftBound + platformLength/2;
     }
 
     float Jump::randomYPosition(float lowerBoundary, float upperBoundary)
     {
-    	return (float)(rand()%(int)(upperBoundary - lowerBoundary)) + lowerBoundary;
+    	return (float)(rand()%(int)(100*(upperBoundary - lowerBoundary)))/100 + lowerBoundary;
     }
 
Index: code/branches/pickupsFS14/src/modules/jump/Jump.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/Jump.h	(revision 10041)
+++ code/branches/pickupsFS14/src/modules/jump/Jump.h	(revision 10050)
@@ -80,10 +80,4 @@
             virtual void playerScored(PlayerInfo* player, int score = 1); //!< Is called when the player scored.
 
-            virtual void addPlatform(JumpPlatform* newPlatform, float xPosition, float zPosition);
-            virtual void addStartSection();
-            virtual void addSection();
-            virtual float randomXPosition();
-            virtual float randomYPosition(float lowerBoundary, float upperBoundary);
-
             int getScore(PlayerInfo* player) const;
 
@@ -104,6 +98,23 @@
             void cleanup(); //!< Cleans up the Gametype by destroying the ball and the bats.
 
+            virtual void addPlatform(JumpPlatform* newPlatform, std::string platformTemplate, float xPosition, float zPosition);
+
+            virtual void addPlatformStatic(float xPosition, float zPosition);
+            virtual void addPlatformHMove(float xPosition, float zPosition, float leftBoundary, float rightBoundary, float speed);
+            virtual void addPlatformVMove(float xPosition, float zPosition, float lowerBoundary, float upperBoundary, float speed);
+            virtual void addPlatformDisappear(float xPosition, float zPosition);
+            virtual void addPlatformTimer(float xPosition, float zPosition, float time, float variance);
+            virtual void addPlatformFake(float xPosition, float zPosition);
+            virtual void addProjectile(float xPosition, float zPosition, float xVelocity, float zVelocity);
+            virtual void addEnemy1(float xPosition, float zPosition, float leftBoundary, float rightBoundary, float lowerBoundary, float upperBoundary, float xVelocity, float zVelocity);
+
+            virtual void addStartSection();
+            virtual void addSection();
+
+            virtual float randomXPosition();
+            virtual float randomXPosition(int totalColumns, int culomn);
+            virtual float randomYPosition(float lowerBoundary, float upperBoundary);
+
             WeakPtr<JumpCenterpoint> center_; //!< The playing field.
-            //WeakPtr<JumpPlatform> ball_; //!< The Jump ball.
             WeakPtr<JumpFigure> figure_; //!< The two bats.
             WeakPtr<Camera> camera;
@@ -113,7 +124,7 @@
             float totalScreenShift;
             float screenShiftSinceLastUpdate;
-            float sectionLength;
             int sectionNumber;
-            std::list<JumpPlatform*> platformList;
+
+            bool fakeAdded_;
     };
 }
Index: code/branches/pickupsFS14/src/modules/jump/JumpCenterpoint.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpCenterpoint.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpCenterpoint.cc	(revision 10050)
@@ -0,0 +1,107 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpCenterpoint.cc
+    @brief Implementation of the JumpCenterpoint class.
+*/
+
+#include "JumpCenterpoint.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+
+#include "Jump.h"
+
+namespace orxonox
+{
+    RegisterClass(JumpCenterpoint);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object and checks whether the gametype is actually Jump.
+    */
+    JumpCenterpoint::JumpCenterpoint(Context* context) : StaticEntity(context)
+    {
+        RegisterObject(JumpCenterpoint);
+
+        // Variablen hier veraendern nuetzt nichts! Diese Variablen koennen in Level-File initialisiert werden.
+        width_ = 200;
+        height_ = 120;
+        sectionLength_ = 120;
+
+        this->checkGametype();
+    }
+
+    /**
+    @brief
+        Method to create a JumpCenterpoint through XML.
+    */
+    void JumpCenterpoint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpCenterpoint, XMLPort, xmlelement, mode);
+
+        XMLPortParam(JumpCenterpoint, "dimension", setFieldDimension, getFieldDimension, xmlelement, mode);
+        XMLPortParam(JumpCenterpoint, "sectionLength", setSectionLength, getSectionLength, xmlelement, mode);
+        XMLPortParam(JumpCenterpoint, "platformLength", setPlatformLength, getPlatformLength, xmlelement, mode);
+        XMLPortParam(JumpCenterpoint, "platformStaticTemplate", setPlatformStaticTemplate, getPlatformStaticTemplate, xmlelement, mode);
+        XMLPortParam(JumpCenterpoint, "platformHMoveTemplate", setPlatformHMoveTemplate, getPlatformHMoveTemplate, xmlelement, mode);
+        XMLPortParam(JumpCenterpoint, "platformVMoveTemplate", setPlatformVMoveTemplate, getPlatformVMoveTemplate, xmlelement, mode);
+        XMLPortParam(JumpCenterpoint, "platformDisappearTemplate", setPlatformDisappearTemplate, getPlatformDisappearTemplate, xmlelement, mode);
+        XMLPortParam(JumpCenterpoint, "platformTimerTemplate", setPlatformTimerTemplate, getPlatformTimerTemplate, xmlelement, mode);
+        XMLPortParam(JumpCenterpoint, "platformFakeTemplate", setPlatformFakeTemplate, getPlatformFakeTemplate, xmlelement, mode);
+        XMLPortParam(JumpCenterpoint, "figureTemplate", setFigureTemplate, getFigureTemplate, xmlelement, mode);
+        XMLPortParam(JumpCenterpoint, "projectileTemplate", setProjectileTemplate, getProjectileTemplate, xmlelement, mode);
+        XMLPortParam(JumpCenterpoint, "enemy1Template", setEnemy1Template, getEnemy1Template, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Is called when the gametype has changed.
+    */
+    void JumpCenterpoint::changedGametype()
+    {
+        SUPER(JumpCenterpoint, changedGametype);
+
+        // Check, whether it's still Jump.
+        this->checkGametype();
+    }
+
+    /**
+    @brief
+        Checks whether the gametype is Jump and if it is, sets its centerpoint.
+    */
+    void JumpCenterpoint::checkGametype()
+    {
+        if (this->getGametype() != NULL && this->getGametype()->isA(Class(Jump)))
+        {
+            Jump* jumpGametype = orxonox_cast<Jump*>(this->getGametype().get());
+            jumpGametype->setCenterpoint(this);
+        }
+    }
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpCenterpoint.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpCenterpoint.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpCenterpoint.h	(revision 10050)
@@ -0,0 +1,245 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpCenterpoint.h
+    @brief Declaration of the JumpCenterpoint class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpCenterpoint_H__
+#define _JumpCenterpoint_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include <string>
+
+#include <util/Math.h>
+
+#include "worldentities/StaticEntity.h"
+
+namespace orxonox
+{
+    
+    /**
+    @brief
+        The JumpCenterpoint implements the playing field @ref orxonox::Jump "Jump" takes place in and allows for many parameters of the minigame to be set.
+        The playing field resides in the x,z-plane, with the x-axis being the horizontal axis and the z-axis being the vertical axis.
+        
+        Various parameters can be set:
+        - The <b>dimension</b> is a vector, that defines the width and height of the playing field. The default is <em>(200, 120)</em>.
+        - The <b>balltemplate</b> is a template that is applied to the @ref orxonox::JumpPlatform "JumpPlatform", it can be used to attach different things to it, e.g. its @ref orxonox::Model "Model". See below for a usage example.
+        - The <b>battemplate</b> is a template that is applied to the @ref orxonox::JumpPlatform "JumpFigure", it can be used to attach different things to it, e.g. its @ref orxonox::Model "Model". See below for a usage example.
+        - The <b>ballspeed</b> is the speed with which the @ref orxonox::JumpPlatform "JumpPlatform" moves. The default is <em>100</em>.
+        - The <b>ballaccfactor</b> is the acceleration factor for the @ref orxonox::JumpPlatform "JumpPlatform". The default is <em>1.0</em>.
+        - The <b>batspeed</b> is the speed with which the @ref orxonox::JumpFigure "JumpFigures" move. The default is <em>60</em>.
+        - The <b>batlength</b> is the length of the @ref orxonox::JumpFigure "JumpFigures" as the percentage of the height of the playing field. The default is <em>0.25</em>.
+        
+        An example in XML of the JumpCenterpoint would be:
+        
+        First the needed templates:
+        The template for the @ref orxonox::JumpPlatform "JumpPlatform".
+        @code
+        <Template name="jumpball">
+          <JumpPlatform>
+            <attached>
+              <Model mesh="sphere.mesh" scale="2" />
+              <ParticleSpawner name="hiteffect" position="0,0,0" source="Orxonox/sparks2" lifetime="0.01" autostart="0" mainstate="spawn" />
+            </attached>
+            <eventlisteners>
+              <EventTarget target="hiteffect" />
+            </eventlisteners>
+          </JumpPlatform>
+        </Template>
+        @endcode
+        As can be seen, a sphere is attached as the @ref orxonox::Model "Model" for the @ref orxonox::JumpPlatform "JumpPlatform", and also an @ref orxonox::EventListener "EventListener" that triggers a @ref orxonox::ParticleSpawner "ParticleSpawner", whenever the ball hits the boundaries is attached.
+        
+        Additionally the template for the @ref orxonox::JumpFigure "JumpFigure".
+        @code
+        <Template name="jumpbatcameras" defaults="0">
+          <JumpFigure>
+            <camerapositions>
+              <CameraPosition position="0,200,0" pitch="-90" absolute="true" />
+            </camerapositions>
+          </JumpFigure>
+        </Template>
+
+        <Template name="jumpbat">
+          <JumpFigure camerapositiontemplate=jumpbatcameras>
+            <attached>
+              <Model position="0,0,3" mesh="cube.mesh" scale3D="14,2,2" />
+            </attached>
+          </JumpFigure>
+        </Template>
+        @endcode
+        As can be seen, there are actually two templates. The first template is needed to set the camera for the @ref orxonox::JumpFigure "JumpFigure". The second template ist the actual template for the @ref orxonox::JumpFigure "JumpFigure", the template for the camera position is added and a @ref orxonox::Model "Model" for the @ref orxonox::JumpFigure "JumpFigure" is attached.
+        
+        Finally the JumpCenterpoint is created.
+        @code
+        <JumpCenterpoint name="jumpcenter" dimension="200,120" balltemplate="jumpball" battemplate="jumpbat" ballspeed="200" ballaccfactor="1.0" batspeed="130" batlength="0.25">
+          <attached>
+            <Model position="0,0,60" mesh="cube.mesh" scale3D="105,1,1" />
+            <Model position="0,0,-60" mesh="cube.mesh" scale3D="105,1,1" />
+          </attached>
+        </JumpCenterpoint>
+        @endcode
+        All parameters are specified. And also two @ref orxonox::Model "Models" (for the upper and lower boundary) are attached.
+        
+        For a more elaborate example, have a look at the <code>jump.oxw</code> level file.
+    
+    @author
+        Fabian 'x3n' Landau
+        
+    @ingroup Jump
+    */
+    class _JumpExport JumpCenterpoint : public StaticEntity
+    {
+        public:
+            JumpCenterpoint(Context* context); //!< Constructor. Registers and initializes the object and checks whether the gametype is actually Jump.
+            virtual ~JumpCenterpoint() {}
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method to create a JumpCenterpoint through XML.
+
+            virtual void changedGametype(); //!< Is called when the gametype has changed.
+
+
+            void setPlatformStaticTemplate(const std::string& balltemplate)
+                { this->platformStaticTemplate_ = balltemplate; }
+
+            const std::string& getPlatformStaticTemplate() const
+                { return this->platformStaticTemplate_; }
+
+            void setPlatformHMoveTemplate(const std::string& balltemplate)
+                { this->platformHMoveTemplate_ = balltemplate; }
+
+            const std::string& getPlatformHMoveTemplate() const
+                { return this->platformHMoveTemplate_; }
+
+            void setPlatformVMoveTemplate(const std::string& balltemplate)
+                { this->platformVMoveTemplate_ = balltemplate; }
+
+            const std::string& getPlatformVMoveTemplate() const
+                { return this->platformVMoveTemplate_; }
+
+            void setPlatformDisappearTemplate(const std::string& balltemplate)
+                { this->platformDisappearTemplate_ = balltemplate; }
+
+            const std::string& getPlatformDisappearTemplate() const
+                { return this->platformDisappearTemplate_; }
+
+            void setPlatformTimerTemplate(const std::string& balltemplate)
+                { this->platformTimerTemplate_ = balltemplate; }
+
+            const std::string& getPlatformTimerTemplate() const
+                { return this->platformTimerTemplate_; }
+
+            void setPlatformFakeTemplate(const std::string& balltemplate)
+                { this->platformFakeTemplate_ = balltemplate; }
+
+            const std::string& getPlatformFakeTemplate() const
+                { return this->platformFakeTemplate_; }
+
+            void setProjectileTemplate(const std::string& newTemplate)
+                { this->projectileTemplate_ = newTemplate; }
+
+            const std::string& getProjectileTemplate() const
+                { return this->projectileTemplate_; }
+
+            void setFigureTemplate(const std::string& newTemplate)
+                { this->figureTemplate_ = newTemplate; }
+
+            const std::string& getFigureTemplate() const
+                { return this->figureTemplate_; }
+
+            void setEnemy1Template(const std::string& newTemplate)
+                { this->enemy1Template_ = newTemplate; }
+
+            const std::string& getEnemy1Template() const
+                { return this->enemy1Template_; }
+
+
+            /**
+            @brief Set the dimensions of the playing field.
+            @param dimension A vector with the width of the playing field as first component and the height as second.
+            */
+            void setFieldDimension(const Vector2& dimension)
+                { this->width_ = dimension.x; this->height_ = dimension.y; }
+            /**
+            @brief Get the dimensions of the playing field.
+            @return Returns a vector with the width of the playing field as first component and the height as second.
+            */
+            Vector2 getFieldDimension() const
+                { return Vector2(this->width_, this->height_); }
+
+            /**
+            @brief Set the dimensions of the playing field.
+            @param dimension A vector with the width of the playing field as first component and the height as second.
+            */
+            void setSectionLength(const float sectionLength)
+                { this->sectionLength_ = sectionLength; }
+            /**
+            @brief Get the dimensions of the playing field.
+            @return Returns a vector with the width of the playing field as first component and the height as second.
+            */
+            float getSectionLength() const
+                { return sectionLength_; }
+
+            /**
+            @brief Set the dimensions of the playing field.
+            @param dimension A vector with the width of the playing field as first component and the height as second.
+            */
+            void setPlatformLength(const float platformLength)
+                { this->platformLength_ = platformLength; }
+            /**
+            @brief Get the dimensions of the playing field.
+            @return Returns a vector with the width of the playing field as first component and the height as second.
+            */
+            float getPlatformLength() const
+                { return platformLength_; }
+
+        private:
+            void checkGametype(); //!< Checks whether the gametype is Jump and if it is, sets its centerpoint.
+
+            std::string platformStaticTemplate_; //!< The template for the ball.
+            std::string platformHMoveTemplate_; //!< The template for the ball.
+            std::string platformVMoveTemplate_; //!< The template for the ball.
+            std::string platformDisappearTemplate_; //!< The template for the ball.
+            std::string platformTimerTemplate_; //!< The template for the ball.
+            std::string platformFakeTemplate_; //!< The template for the ball.
+            std::string projectileTemplate_; //!< The template for the ball.
+            std::string figureTemplate_; //!< The template for the bats.
+            std::string enemy1Template_; //!< The template for the bats.
+
+            float width_; //!< The height of the playing field.
+            float height_; //!< The width of the playing field.
+            float sectionLength_; //!< Height of one section
+            float platformLength_; // Avoids intersecting platforms
+    };
+}
+
+#endif /* _JumpCenterpoint_H__ */
Index: code/branches/pickupsFS14/src/modules/jump/JumpEnemy.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpEnemy.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpEnemy.cc	(revision 10050)
@@ -0,0 +1,145 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpEnemy.cc
+    @brief Implementation of the JumpEnemy class.
+*/
+
+#include "JumpEnemy.h"
+
+#include "core/CoreIncludes.h"
+#include "core/GameMode.h"
+#include "graphics/Model.h"
+#include "gametypes/Gametype.h"
+
+#include "JumpFigure.h"
+
+#include "sound/WorldSound.h"
+#include "core/XMLPort.h"
+
+namespace orxonox
+{
+    RegisterClass(JumpEnemy);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
+    JumpEnemy::JumpEnemy(Context* context) : MovableEntity(context)
+    {
+        RegisterObject(JumpEnemy);
+
+        this->figure_ = 0;
+        setProperties(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
+        this->setPosition(Vector3(0,0,0));
+        this->setVelocity(Vector3(0,0,0));
+        this->setAcceleration(Vector3(0,0,0));
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    JumpEnemy::~JumpEnemy()
+    {
+        /*if (this->isInitialized())
+        {
+            if (this->bDeleteBats_)
+                delete this->figure_;
+
+            delete[] this->batID_;
+        }*/
+    }
+
+    //xml port for loading sounds
+    void JumpEnemy::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpEnemy, XMLPort, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Is called every tick.
+        Handles the movement of the ball and its interaction with the boundaries and bats.
+    @param dt
+        The time since the last tick.
+    */
+    void JumpEnemy::tick(float dt)
+    {
+        SUPER(JumpEnemy, tick, dt);
+
+        // Get the current position, velocity and acceleration of the enemy.
+        Vector3 position = getPosition();
+        Vector3 velocity = getVelocity();
+
+        if ((position.x < leftBoundary_ && velocity.x < 0) || (position.x > rightBoundary_ && velocity.x > 0))
+        {
+        	velocity.x = -velocity.x;
+        }
+
+        if ((position.z < lowerBoundary_ && velocity.z < 0) || (position.z > upperBoundary_ && velocity.z > 0))
+        {
+        	velocity.z = -velocity.z;
+        }
+
+        // Set the position, velocity and acceleration of the enemy, if they have changed.
+        if (velocity != getVelocity())
+            setVelocity(velocity);
+        if (position != getPosition())
+            setPosition(position);
+
+
+    }
+
+    void JumpEnemy::setProperties(float newLeftBoundary, float newRightBoundary, float newLowerBoundary, float newUpperBoundary, float newHSpeed, float newVSpeed)
+    {
+        leftBoundary_ = newLeftBoundary;
+        rightBoundary_ = newRightBoundary;
+        lowerBoundary_ = newLowerBoundary;
+        upperBoundary_ = newUpperBoundary;
+
+        this->setVelocity(Vector3(newHSpeed,0,newVSpeed));
+    }
+
+    /**
+    @brief
+        Set the bats for the ball.
+    @param bats
+        An array (of size 2) of weak pointers, to be set as the new bats.
+    */
+    void JumpEnemy::setFigure(WeakPtr<JumpFigure> newFigure)
+    {
+        figure_ = newFigure;
+    }
+
+    void JumpEnemy::touchFigure()
+    {
+
+    }
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpEnemy.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpEnemy.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpEnemy.h	(revision 10050)
@@ -0,0 +1,108 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpEnemy.h
+    @brief Declaration of the JumpEnemy class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpEnemy_H__
+#define _JumpEnemy_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include "util/Math.h"
+
+#include "worldentities/MovableEntity.h"
+
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        This class manages the ball for @ref orxonox::Jump "Jump".
+
+        It is responsible for both the movement of the ball in the x,z-plane as well as its interaction with the boundaries of the playing field (defined by the @ref orxonox::JumpCenterpoint "JumpCenterpoint") and the @ref orxonox::JumpFigure "JumpFigures". Or more precisely, it makes the ball bounce off then upper and lower delimiters of the playing field, it makes the ball bounce off the bats and also detects when a player scores and takes appropriate measures.
+
+    @author
+        Fabian 'x3n' Landau
+
+    @ingroup Jump
+    */
+    class _JumpExport JumpEnemy : public MovableEntity
+    {
+        public:
+            JumpEnemy(Context* context);
+            virtual ~JumpEnemy();
+
+            virtual void tick(float dt);
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+            /**
+            @brief Set the dimensions of the playing field.
+            @param width The width of the playing field.
+            @param height The height of the playing field.
+            */
+            void setFieldDimension(float width, float height)
+                { this->fieldWidth_ = width; this->fieldHeight_ = height; }
+            /**
+            @brief Get the dimensions of the playing field.
+            @param dimension A vector with the width as the first and height as the second component.
+            */
+            void setFieldDimension(const Vector2& dimension)
+                { this->setFieldDimension(dimension.x, dimension.y); }
+            /**
+            @brief Get the dimensions of the playing field.
+            @return Returns a vector with the width as the first and height as the second component.
+            */
+            Vector2 getFieldDimension() const
+                { return Vector2(this->fieldWidth_, this->fieldHeight_); }
+
+            virtual void setProperties(float newLeftBoundary, float newRightBoundary, float newLowerBoundary, float newUpperBoundary, float newHSpeed, float newVSpeed);
+
+            void setFigure(WeakPtr<JumpFigure> bats); //!< Set the bats for the ball.
+
+            virtual void touchFigure();
+
+        protected:
+            float fieldWidth_; //!< The width of the playing field.
+            float fieldHeight_; //!< The height of the playing field.
+
+            float leftBoundary_;
+            float rightBoundary_;
+            float lowerBoundary_;
+            float upperBoundary_;
+
+            WeakPtr<JumpFigure> figure_; //!< An array with the two bats.
+    };
+}
+
+#endif /* _JumpEnemy_H__ */
Index: code/branches/pickupsFS14/src/modules/jump/JumpFigure.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpFigure.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpFigure.cc	(revision 10050)
@@ -0,0 +1,255 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpFigure.cc
+    @brief Implementation of the JumpFigure class.
+*/
+
+#include "JumpFigure.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+
+namespace orxonox
+{
+    RegisterClass(JumpFigure);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
+    JumpFigure::JumpFigure(Context* context) : ControllableEntity(context)
+    {
+        RegisterObject(JumpFigure);
+
+        this->movement_ = 0;
+        this->bMoveLocal_ = false;
+        this->length_ = 0.25;
+        this->fieldWidth_ = 180;
+        this->bSteadiedPosition_ = false;
+
+        moveUpPressed = false;
+        moveDownPressed = false;
+        moveLeftPressed = false;
+        moveDownPressed = false;
+        firePressed = false;
+        fireSignal = false;
+        timeSinceLastFire = 0.0;
+
+        gravityAcceleration = 8.0;
+        mouseFactor_ = 75.0;
+        maxFireRate = 0.3;
+    }
+
+    /**
+    @brief
+        Method to create a JumpCenterpoint through XML.
+    */
+    void JumpFigure::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpFigure, XMLPort, xmlelement, mode);
+        XMLPortParam(JumpFigure, "mouseFactor", setMouseFactor, getMouseFactor, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Is called each tick.
+        Moves the bat.
+    @param dt
+        The time since last tick.
+    */
+    void JumpFigure::tick(float dt)
+    {
+    	SUPER(JumpFigure, tick, dt);
+
+        // If the bat is controlled (but not over the network).
+        if (this->hasLocalController())
+        {
+        	timeSinceLastFire += dt;
+
+            /*if (this->movement_ != 0)
+            {
+                // The absolute value of the movement is restricted to be lesser or equal than the speed of the bat.
+                this->movement_ = clamp(this->movement_, -1.0f, 1.0f) * this->speed_;
+
+                // If moveRightLeft() is used the movement is dependento on wehther it is the right or the left bat, so, it is i.e. dependent on the orientation of the bat.
+                if (this->bMoveLocal_)
+                    this->setVelocity(this->getOrientation() * Vector3(this->movement_, 0, 0));
+                else
+                    this->setVelocity(0, 0, this->movement_);
+
+                this->movement_ = 0;
+                this->bSteadiedPosition_ = false;
+            }
+            // If there is no movement but the position has not been steadied, the velocity is set to zero and the position is reaffirmed.
+            else if (!this->bSteadiedPosition_)
+            {
+                // To ensure network synchronicity
+                this->setVelocity(0, 0, 0);
+                this->setPosition(this->getPosition());
+                this->bSteadiedPosition_ = true;
+            }*/
+
+
+        	Vector3 velocity = getVelocity();
+
+        	velocity.z -= gravityAcceleration;
+
+        	/*if (moveLeftPressed == true)
+        	{
+        		velocity.x = -accelerationFactor;
+        		moveLeftPressed = false;
+        	}
+        	if (moveRightPressed == true)
+        	{
+        		velocity.x = accelerationFactor;
+        		moveRightPressed = false;
+        	}*/
+
+        	velocity.x = -mouseFactor_*horizontalSpeed;
+
+        	if (moveUpPressed == true)
+        	{
+        		velocity.z = 200.0f;
+        		moveUpPressed = false;
+        	}
+        	if (moveDownPressed == true)
+        	{
+        		moveDownPressed = false;
+        	}
+
+        	setVelocity(velocity);
+
+        	if (firePressed && timeSinceLastFire >= maxFireRate)
+        	{
+				firePressed = false;
+				timeSinceLastFire = 0.0;
+				fireSignal = true;
+				//orxout() << "fired signal set" << endl;
+        	}
+        }
+
+        Vector3 position = this->getPosition();
+
+        if (position.x < -fieldWidth_*1.1)
+        {
+        	position.x = fieldWidth_*1.1;
+        }
+        else if (position.x > fieldWidth_*1.1)
+        {
+        	position.x = -fieldWidth_*1.1;
+        }
+
+        this->setPosition(position);
+
+        moveUpPressed = false;
+        moveDownPressed = false;
+        moveLeftPressed = false;
+        moveDownPressed = false;
+        firePressed = false;
+    }
+
+    void JumpFigure::JumpFromPlatform(JumpPlatform* platform)
+    {
+    	Vector3 velocity = getVelocity();
+    	velocity.z = 200.0f;
+    	setVelocity(velocity);
+    }
+
+
+    /**
+    @brief
+        Overloaded the function to steer the bat up and down.
+    @param value
+        A vector whose first component is the inverse direction in which we want to steer the bat.
+    */
+    void JumpFigure::moveFrontBack(const Vector2& value)
+    {
+    	if (value.x > 0)
+    	{
+    		//orxout() << "up pressed" << endl;
+    		moveUpPressed = true;
+    		moveDownPressed = false;
+    	}
+    	else
+    	{
+    		//orxout() << "down pressed" << endl;
+    		moveUpPressed = false;
+    		moveDownPressed = true;
+    	}
+    }
+
+    /**
+    @brief
+        Overloaded the function to steer the bat up and down.
+    @param value
+        A vector whose first component is the direction in which we wnat to steer the bat.
+    */
+    void JumpFigure::moveRightLeft(const Vector2& value)
+    {
+    	if (value.x > 0)
+    	{
+    		//orxout() << "right pressed" << endl;
+    		moveLeftPressed = false;
+    		moveRightPressed = true;
+    	}
+    	else
+    	{
+    		//orxout() << "left pressed" << endl;
+    		moveLeftPressed = true;
+    		moveRightPressed = false;
+    	}
+        /*this->bMoveLocal_ = true;
+        this->movement_ = value.x;*/
+    }
+
+    void JumpFigure::rotateYaw(const Vector2& value)
+    {
+    	horizontalSpeed = value.x;
+
+    }
+
+    void JumpFigure::rotatePitch(const Vector2& value)
+    {
+
+
+    }
+
+    void JumpFigure::rotateRoll(const Vector2& value)
+    {
+
+
+    }
+
+    void JumpFigure::fired(unsigned int firemode)
+    {
+    	orxout() << "fire pressed" << endl;
+    	firePressed = true;
+    }
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpFigure.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpFigure.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpFigure.h	(revision 10050)
@@ -0,0 +1,137 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpFigure.h
+    @brief Declaration of the JumpFigure class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpFigure_H__
+#define _JumpFigure_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include "worldentities/ControllableEntity.h"
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        The JumpFigure class manages the bats for @ref orxonox::Jump "Jump", which are the elements controlled by the players.
+
+        It is responsible for the movement (controlled by the players) of the bat.
+
+    @author
+        Fabian 'x3n' Landau
+
+    @ingroup Jump
+    */
+    class _JumpExport JumpFigure : public ControllableEntity
+    {
+        public:
+            JumpFigure(Context* context); //!< Constructor. Registers and initializes the object.
+            virtual ~JumpFigure() {}
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+            virtual void tick(float dt);
+
+            virtual void moveFrontBack(const Vector2& value); //!< Overloaded the function to steer the bat up and down.
+            virtual void moveRightLeft(const Vector2& value); //!< Overloaded the function to steer the bat up and down.
+
+            virtual void rotateYaw(const Vector2& value);
+            virtual void rotatePitch(const Vector2& value);
+            virtual void rotateRoll(const Vector2& value);
+
+            virtual void fired(unsigned int firemode);
+
+            virtual void JumpFromPlatform(JumpPlatform* platform);
+
+            /**
+            @brief Set the height of the playing field.
+            @param height The height of the playing field.
+            */
+            void setFieldDimension(float width, float height)
+                { this->fieldWidth_ = width; this->fieldHeight_ = height; }
+
+            void setFieldDimension(const Vector2& dimension)
+                { this->setFieldDimension(dimension.x, dimension.y); }
+
+            void setMouseFactor(const float mouseFactor)
+                { this->mouseFactor_ = mouseFactor; }
+
+            const float getMouseFactor() const
+                { return this->mouseFactor_; }
+
+            /**
+            @brief Get the height of the playing field.
+            @return Returns the height of the playing field.
+            */
+            Vector2 getFieldDimension() const
+                { return Vector2(this->fieldWidth_, this->fieldHeight_); }
+
+            /**
+            @brief Set the length of the bat.
+            @param length The length of the bat (in z-direction) as percentage of the height of the playing field.
+            */
+            void setLength(float length)
+                { this->length_ = length; }
+            /**
+            @brief Get the length of the bat.
+            @return Returns the length of the bat (in z-direction) as percentage of the height of the playing field.
+            */
+            float getLength() const
+                { return this->length_; }
+
+            bool fireSignal;
+        private:
+            float movement_; //!< The amount (and direction), in z-direction, of movement of the bat.
+            bool bMoveLocal_; //!< Helper to know whether the movement is caused by moveFrontBack() or moveRightLeft().
+            float length_; //!< The length of the bat (in z-direction) as percentage of the height of the playing field.
+            float fieldWidth_; //!< The height of the playing field.
+            float fieldHeight_;
+            bool bSteadiedPosition_; //!< Helper boolean, to keep track of when to steady the position, to ensure network synchronicity.
+            float timeSinceLastFire;
+
+            bool moveUpPressed;
+            bool moveDownPressed;
+            bool moveLeftPressed;
+            bool moveRightPressed;
+            bool firePressed;
+
+            float gravityAcceleration;
+            float mouseFactor_;
+            float maxFireRate;
+
+            float horizontalSpeed;
+    };
+}
+
+#endif /* _JumpFigure_H__ */
Index: code/branches/pickupsFS14/src/modules/jump/JumpItem.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpItem.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpItem.cc	(revision 10050)
@@ -0,0 +1,145 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpItem.cc
+    @brief Implementation of the JumpItem class.
+*/
+
+#include "JumpItem.h"
+
+#include "core/CoreIncludes.h"
+#include "core/GameMode.h"
+#include "graphics/Model.h"
+#include "gametypes/Gametype.h"
+
+#include "JumpFigure.h"
+
+#include "sound/WorldSound.h"
+#include "core/XMLPort.h"
+
+namespace orxonox
+{
+    RegisterClass(JumpItem);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
+    JumpItem::JumpItem(Context* context) : MovableEntity(context)
+    {
+        RegisterObject(JumpItem);
+
+        this->figure_ = 0;
+        setProperties(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
+        this->setPosition(Vector3(0,0,0));
+        this->setVelocity(Vector3(0,0,0));
+        this->setAcceleration(Vector3(0,0,0));
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    JumpItem::~JumpItem()
+    {
+        /*if (this->isInitialized())
+        {
+            if (this->bDeleteBats_)
+                delete this->figure_;
+
+            delete[] this->batID_;
+        }*/
+    }
+
+    //xml port for loading sounds
+    void JumpItem::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpItem, XMLPort, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Is called every tick.
+        Handles the movement of the ball and its interaction with the boundaries and bats.
+    @param dt
+        The time since the last tick.
+    */
+    void JumpItem::tick(float dt)
+    {
+        SUPER(JumpItem, tick, dt);
+
+        // Get the current position, velocity and acceleration of the enemy.
+        Vector3 position = getPosition();
+        Vector3 velocity = getVelocity();
+
+        if ((position.x < leftBoundary_ && velocity.x < 0) || (position.x > rightBoundary_ && velocity.x > 0))
+        {
+        	velocity.x = -velocity.x;
+        }
+
+        if ((position.z < lowerBoundary_ && velocity.z < 0) || (position.z > upperBoundary_ && velocity.z > 0))
+        {
+        	velocity.z = -velocity.z;
+        }
+
+        // Set the position, velocity and acceleration of the enemy, if they have changed.
+        if (velocity != getVelocity())
+            setVelocity(velocity);
+        if (position != getPosition())
+            setPosition(position);
+
+
+    }
+
+    void JumpItem::setProperties(float newLeftBoundary, float newRightBoundary, float newLowerBoundary, float newUpperBoundary, float newHSpeed, float newVSpeed)
+    {
+        leftBoundary_ = newLeftBoundary;
+        rightBoundary_ = newRightBoundary;
+        lowerBoundary_ = newLowerBoundary;
+        upperBoundary_ = newUpperBoundary;
+
+        this->setVelocity(Vector3(newHSpeed,0,newVSpeed));
+    }
+
+    /**
+    @brief
+        Set the bats for the ball.
+    @param bats
+        An array (of size 2) of weak pointers, to be set as the new bats.
+    */
+    void JumpItem::setFigure(WeakPtr<JumpFigure> newFigure)
+    {
+        figure_ = newFigure;
+    }
+
+    void JumpItem::touchFigure()
+    {
+
+    }
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpItem.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpItem.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpItem.h	(revision 10050)
@@ -0,0 +1,108 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpItem.h
+    @brief Declaration of the JumpItem class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpItem_H__
+#define _JumpItem_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include "util/Math.h"
+
+#include "worldentities/MovableEntity.h"
+
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        This class manages the ball for @ref orxonox::Jump "Jump".
+
+        It is responsible for both the movement of the ball in the x,z-plane as well as its interaction with the boundaries of the playing field (defined by the @ref orxonox::JumpCenterpoint "JumpCenterpoint") and the @ref orxonox::JumpFigure "JumpFigures". Or more precisely, it makes the ball bounce off then upper and lower delimiters of the playing field, it makes the ball bounce off the bats and also detects when a player scores and takes appropriate measures.
+
+    @author
+        Fabian 'x3n' Landau
+
+    @ingroup Jump
+    */
+    class _JumpExport JumpItem : public MovableEntity
+    {
+        public:
+            JumpItem(Context* context);
+            virtual ~JumpItem();
+
+            virtual void tick(float dt);
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+            /**
+            @brief Set the dimensions of the playing field.
+            @param width The width of the playing field.
+            @param height The height of the playing field.
+            */
+            void setFieldDimension(float width, float height)
+                { this->fieldWidth_ = width; this->fieldHeight_ = height; }
+            /**
+            @brief Get the dimensions of the playing field.
+            @param dimension A vector with the width as the first and height as the second component.
+            */
+            void setFieldDimension(const Vector2& dimension)
+                { this->setFieldDimension(dimension.x, dimension.y); }
+            /**
+            @brief Get the dimensions of the playing field.
+            @return Returns a vector with the width as the first and height as the second component.
+            */
+            Vector2 getFieldDimension() const
+                { return Vector2(this->fieldWidth_, this->fieldHeight_); }
+
+            virtual void setProperties(float newLeftBoundary, float newRightBoundary, float newLowerBoundary, float newUpperBoundary, float newHSpeed, float newVSpeed);
+
+            void setFigure(WeakPtr<JumpFigure> bats); //!< Set the bats for the ball.
+
+            virtual void touchFigure();
+
+        protected:
+            float fieldWidth_; //!< The width of the playing field.
+            float fieldHeight_; //!< The height of the playing field.
+
+            float leftBoundary_;
+            float rightBoundary_;
+            float lowerBoundary_;
+            float upperBoundary_;
+
+            WeakPtr<JumpFigure> figure_; //!< An array with the two bats.
+    };
+}
+
+#endif /* _JumpItem_H__ */
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatform.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatform.cc	(revision 10041)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatform.cc	(revision 10050)
@@ -59,10 +59,4 @@
 
         this->figure_ = 0;
-        this->bDeleteBats_ = false;
-        this->batID_ = new unsigned int[1];
-        this->batID_[0] = OBJECTID_UNKNOWN;
-        this->relMercyOffset_ = 0.05f;
-
-        this->registerVariables();
 
         //initialize sound
@@ -86,6 +80,4 @@
         this->setVelocity(Vector3(0,0,0));
         this->setAcceleration(Vector3(0,0,0));
-
-        model = NULL;
     }
 
@@ -116,17 +108,4 @@
     /**
     @brief
-        Register variables to synchronize over the network.
-    */
-    void JumpPlatform::registerVariables()
-    {
-        registerVariable( this->fieldWidth_ );
-        registerVariable( this->fieldHeight_ );
-        registerVariable( this->relMercyOffset_ );
-        registerVariable( this->batID_[0] );
-        //registerVariable( this->batID_[1], VariableDirection::ToClient, new NetworkCallback<JumpPlatform>( this, &JumpPlatform::applyBats) );
-    }
-
-    /**
-    @brief
         Is called every tick.
         Handles the movement of the ball and its interaction with the boundaries and bats.
@@ -147,5 +126,5 @@
             if(figureVelocity.z < 0 && figurePosition.x > platformPosition.x-10 && figurePosition.x < platformPosition.x+10 && figurePosition.z > platformPosition.z-4 && figurePosition.z < platformPosition.z+4)
             {
-            	figure_->JumpFromPlatform(200.0f);
+            	touchFigure();
             }
         }
@@ -249,33 +228,15 @@
     void JumpPlatform::setFigure(WeakPtr<JumpFigure> newFigure)
     {
-        if (this->bDeleteBats_) // If there are already some bats, delete them.
-        {
-            delete this->figure_;
-            this->bDeleteBats_ = false;
-        }
-
-        this->figure_ = newFigure;
-        // Also store their object IDs, for synchronization.
-        this->batID_[0] = this->figure_->getObjectID();
-    }
-
-    /**
-    @brief
-        Get the bats over the network.
-    */
-    void JumpPlatform::applyBats()
-    {
-        // Make space for the bats, if they don't exist, yet.
-        if (this->figure_ == NULL)
-        {
-            this->figure_ = *(new WeakPtr<JumpFigure>);
-            this->bDeleteBats_ = true;
-        }
-
-        if (this->batID_[0] != OBJECTID_UNKNOWN)
-        {
-        	// WAR IM PONG NICHT AUSKOMMENTIERT!!!
-            //this->figure_ = orxonox_cast<JumpFigure>(Synchronisable::getSynchronisable(this->batID_[0]));
-        }
+        figure_ = newFigure;
+    }
+
+    void JumpPlatform::accelerateFigure()
+    {
+    	figure_->JumpFromPlatform(this);
+    }
+
+    void JumpPlatform::touchFigure()
+    {
+
     }
 
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatform.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatform.h	(revision 10041)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatform.h	(revision 10050)
@@ -89,5 +89,7 @@
 
             void setFigure(WeakPtr<JumpFigure> bats); //!< Set the bats for the ball.
-            void applyBats(); //!< Get the bats over the network.
+
+            virtual void accelerateFigure();
+            virtual void touchFigure();
 
             static const float MAX_REL_Z_VELOCITY;
@@ -101,15 +103,9 @@
 
         protected:
-            void registerVariables();
-
             float fieldWidth_; //!< The width of the playing field.
             float fieldHeight_; //!< The height of the playing field.
             WeakPtr<JumpFigure> figure_; //!< An array with the two bats.
-            bool bDeleteBats_; //!< Bool, to keep track, of whether this->bat_ exists or not.
-            unsigned int* batID_; //!< The object IDs of the bats, to be able to synchronize them over the network.
-            float relMercyOffset_; //!< Offset, that makes the player not loose, when, in all fairness, he would have.
             WorldSound* defScoreSound_;
             WorldSound* defBatSound_;
-            Model* model;
             WorldSound* defBoundarySound_;
     };
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformDisappear.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformDisappear.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformDisappear.cc	(revision 10050)
@@ -0,0 +1,108 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformDisappear.cc
+    @brief Implementation of the JumpPlatform class.
+*/
+
+#include "JumpPlatformDisappear.h"
+
+#include "core/CoreIncludes.h"
+#include "core/GameMode.h"
+
+#include "gametypes/Gametype.h"
+
+#include "JumpFigure.h"
+
+#include "sound/WorldSound.h"
+#include "core/XMLPort.h"
+
+namespace orxonox
+{
+    RegisterClass(JumpPlatformDisappear);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
+    JumpPlatformDisappear::JumpPlatformDisappear(Context* context) : JumpPlatform(context)
+    {
+        RegisterObject(JumpPlatformDisappear);
+
+        setProperties(true);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    JumpPlatformDisappear::~JumpPlatformDisappear()
+    {
+
+    }
+
+
+    //xml port for loading sounds
+    void JumpPlatformDisappear::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpPlatformDisappear, XMLPort, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Is called every tick.
+        Handles the movement of the ball and its interaction with the boundaries and bats.
+    @param dt
+        The time since the last tick.
+    */
+    void JumpPlatformDisappear::tick(float dt)
+    {
+        SUPER(JumpPlatformDisappear, tick, dt);
+    }
+
+    void JumpPlatformDisappear::setProperties(bool active)
+    {
+    	active_ = active;
+    }
+
+    bool JumpPlatformDisappear::isActive()
+    {
+    	return active_;
+    }
+
+    void JumpPlatformDisappear::touchFigure()
+    {
+    	if (isActive())
+    	{
+        	accelerateFigure();
+        	active_ = false;
+        	orxout() << "platform deactivated" << endl;
+    	}
+    }
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformDisappear.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformDisappear.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformDisappear.h	(revision 10050)
@@ -0,0 +1,79 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformDisappear.h
+    @brief Declaration of the JumpPlatformDisappear class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpPlatformDisappear_H__
+#define _JumpPlatformDisappear_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include "util/Math.h"
+
+#include "worldentities/MovableEntity.h"
+
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        This class manages the ball for @ref orxonox::Jump "Jump".
+
+        It is responsible for both the movement of the ball in the x,z-plane as well as its interaction with the boundaries of the playing field (defined by the @ref orxonox::JumpCenterpoint "JumpCenterpoint") and the @ref orxonox::JumpFigure "JumpFigures". Or more precisely, it makes the ball bounce off then upper and lower delimiters of the playing field, it makes the ball bounce off the bats and also detects when a player scores and takes appropriate measures.
+
+    @author
+        Fabian 'x3n' Landau
+
+    @ingroup Jump
+    */
+    class _JumpExport JumpPlatformDisappear : public JumpPlatform
+    {
+        public:
+    	    JumpPlatformDisappear(Context* context);
+            virtual ~JumpPlatformDisappear();
+
+            virtual void tick(float dt);
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+            virtual void setProperties(bool active);
+            virtual bool isActive();
+            virtual void touchFigure();
+
+
+        protected:
+            bool active_;
+    };
+}
+
+#endif /* _JumpPlatformDisappear_H__ */
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformFake.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformFake.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformFake.cc	(revision 10050)
@@ -0,0 +1,88 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformFake.cc
+    @brief Implementation of the JumpPlatform class.
+*/
+
+#include "JumpPlatformFake.h"
+
+#include "core/CoreIncludes.h"
+#include "core/GameMode.h"
+
+#include "gametypes/Gametype.h"
+
+#include "JumpFigure.h"
+
+#include "sound/WorldSound.h"
+#include "core/XMLPort.h"
+
+#include "graphics/Backlight.h"
+
+namespace orxonox
+{
+    RegisterClass(JumpPlatformFake);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
+    JumpPlatformFake::JumpPlatformFake(Context* context) : JumpPlatform(context)
+    {
+        RegisterObject(JumpPlatformFake);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    JumpPlatformFake::~JumpPlatformFake()
+    {
+
+    }
+
+    //xml port for loading sounds
+    void JumpPlatformFake::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpPlatformFake, XMLPort, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Is called every tick.
+        Handles the movement of the ball and its interaction with the boundaries and bats.
+    @param dt
+        The time since the last tick.
+    */
+    void JumpPlatformFake::tick(float dt)
+    {
+        SUPER(JumpPlatformFake, tick, dt);
+    }
+
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformFake.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformFake.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformFake.h	(revision 10050)
@@ -0,0 +1,70 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformFake.h
+    @brief Declaration of the JumpPlatform class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpPlatformFake_H__
+#define _JumpPlatformFake_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include "util/Math.h"
+
+#include "worldentities/MovableEntity.h"
+
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        This class manages the ball for @ref orxonox::Jump "Jump".
+
+        It is responsible for both the movement of the ball in the x,z-plane as well as its interaction with the boundaries of the playing field (defined by the @ref orxonox::JumpCenterpoint "JumpCenterpoint") and the @ref orxonox::JumpFigure "JumpFigures". Or more precisely, it makes the ball bounce off then upper and lower delimiters of the playing field, it makes the ball bounce off the bats and also detects when a player scores and takes appropriate measures.
+
+    @author
+        Fabian 'x3n' Landau
+
+    @ingroup Jump
+    */
+    class _JumpExport JumpPlatformFake : public JumpPlatform
+    {
+        public:
+    	    JumpPlatformFake(Context* context);
+            virtual ~JumpPlatformFake();
+
+            virtual void tick(float dt);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+    };
+}
+
+#endif /* _JumpPlatformFake_H__ */
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformHMove.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformHMove.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformHMove.cc	(revision 10050)
@@ -0,0 +1,120 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformHMove.cc
+    @brief Implementation of the JumpPlatform class.
+*/
+
+#include "JumpPlatformHMove.h"
+
+#include "core/CoreIncludes.h"
+#include "core/GameMode.h"
+
+#include "gametypes/Gametype.h"
+
+#include "JumpFigure.h"
+
+#include "sound/WorldSound.h"
+#include "core/XMLPort.h"
+
+#include "graphics/Backlight.h"
+
+namespace orxonox
+{
+    RegisterClass(JumpPlatformHMove);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
+    JumpPlatformHMove::JumpPlatformHMove(Context* context) : JumpPlatform(context)
+    {
+        RegisterObject(JumpPlatformHMove);
+
+        setProperties(-100,100,5);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    JumpPlatformHMove::~JumpPlatformHMove()
+    {
+
+    }
+
+    //xml port for loading sounds
+    void JumpPlatformHMove::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpPlatformHMove, XMLPort, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Is called every tick.
+        Handles the movement of the ball and its interaction with the boundaries and bats.
+    @param dt
+        The time since the last tick.
+    */
+    void JumpPlatformHMove::tick(float dt)
+    {
+        SUPER(JumpPlatformHMove, tick, dt);
+
+        // Get the current position, velocity and acceleration of the ball.
+        Vector3 position = this->getPosition();
+        Vector3 velocity = this->getVelocity();
+
+        if ((position.x < leftBoundary_ && velocity.x < 0) || (position.x > rightBoundary_ && velocity.x > 0))
+
+        {
+        	//orxout() << "refelected platformHMove at " << position.x << endl;
+        	velocity.x = -velocity.x;
+        }
+
+        // Set the position, velocity and acceleration of the ball, if they have changed.
+        if (velocity != this->getVelocity())
+            this->setVelocity(velocity);
+        if (position != this->getPosition())
+            this->setPosition(position);
+    }
+
+    void JumpPlatformHMove::setProperties(float leftBoundary, float rightBoundary, float speed)
+    {
+    	leftBoundary_ = leftBoundary;
+    	rightBoundary_ = rightBoundary;
+
+        this->setVelocity(Vector3(speed,0,0));
+
+    }
+
+    void JumpPlatformHMove::touchFigure()
+    {
+    	accelerateFigure();
+    }
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformHMove.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformHMove.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformHMove.h	(revision 10050)
@@ -0,0 +1,77 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformHMove.h
+    @brief Declaration of the JumpPlatform class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpPlatformHMove_H__
+#define _JumpPlatformHMove_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include "util/Math.h"
+
+#include "worldentities/MovableEntity.h"
+
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        This class manages the ball for @ref orxonox::Jump "Jump".
+
+        It is responsible for both the movement of the ball in the x,z-plane as well as its interaction with the boundaries of the playing field (defined by the @ref orxonox::JumpCenterpoint "JumpCenterpoint") and the @ref orxonox::JumpFigure "JumpFigures". Or more precisely, it makes the ball bounce off then upper and lower delimiters of the playing field, it makes the ball bounce off the bats and also detects when a player scores and takes appropriate measures.
+
+    @author
+        Fabian 'x3n' Landau
+
+    @ingroup Jump
+    */
+    class _JumpExport JumpPlatformHMove : public JumpPlatform
+    {
+        public:
+    	    JumpPlatformHMove(Context* context);
+            virtual ~JumpPlatformHMove();
+
+            virtual void tick(float dt);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+            virtual void setProperties(float leftBoundary, float rightBoundary, float speed);
+            virtual void touchFigure();
+
+        protected:
+            float leftBoundary_;
+            float rightBoundary_;
+    };
+}
+
+#endif /* _JumpPlatform_H__ */
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformStatic.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformStatic.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformStatic.cc	(revision 10050)
@@ -0,0 +1,91 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformStatic.cc
+    @brief Implementation of the JumpPlatformStatic class.
+*/
+
+#include "JumpPlatformStatic.h"
+
+#include "core/CoreIncludes.h"
+#include "core/GameMode.h"
+
+#include "gametypes/Gametype.h"
+
+#include "JumpFigure.h"
+
+#include "sound/WorldSound.h"
+#include "core/XMLPort.h"
+
+namespace orxonox
+{
+    RegisterClass(JumpPlatformStatic);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
+    JumpPlatformStatic::JumpPlatformStatic(Context* context) : JumpPlatform(context)
+    {
+        RegisterObject(JumpPlatformStatic);
+
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    JumpPlatformStatic::~JumpPlatformStatic()
+    {
+
+    }
+
+    //xml port for loading sounds
+    void JumpPlatformStatic::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpPlatformStatic, XMLPort, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Is called every tick.
+        Handles the movement of the ball and its interaction with the boundaries and bats.
+    @param dt
+        The time since the last tick.
+    */
+    void JumpPlatformStatic::tick(float dt)
+    {
+        SUPER(JumpPlatformStatic, tick, dt);
+    }
+
+    void JumpPlatformStatic::touchFigure()
+    {
+    	accelerateFigure();
+    }
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformStatic.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformStatic.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformStatic.h	(revision 10050)
@@ -0,0 +1,72 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformStatic.h
+    @brief Declaration of the JumpPlatformStatic class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpPlatformStatic_H__
+#define _JumpPlatformStatic_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include "util/Math.h"
+
+#include "worldentities/MovableEntity.h"
+
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        This class manages the ball for @ref orxonox::Jump "Jump".
+
+        It is responsible for both the movement of the ball in the x,z-plane as well as its interaction with the boundaries of the playing field (defined by the @ref orxonox::JumpCenterpoint "JumpCenterpoint") and the @ref orxonox::JumpFigure "JumpFigures". Or more precisely, it makes the ball bounce off then upper and lower delimiters of the playing field, it makes the ball bounce off the bats and also detects when a player scores and takes appropriate measures.
+
+    @author
+        Fabian 'x3n' Landau
+
+    @ingroup Jump
+    */
+    class _JumpExport JumpPlatformStatic : public JumpPlatform
+    {
+        public:
+    	    JumpPlatformStatic(Context* context);
+            virtual ~JumpPlatformStatic();
+
+            virtual void tick(float dt);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+            virtual void touchFigure();
+    };
+}
+
+#endif /* _JumpPlatform_H__ */
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformTimer.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformTimer.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformTimer.cc	(revision 10050)
@@ -0,0 +1,125 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformTimer.cc
+    @brief Implementation of the JumpPlatform class.
+*/
+
+#include "JumpPlatformTimer.h"
+
+#include "core/CoreIncludes.h"
+#include "core/GameMode.h"
+
+#include "gametypes/Gametype.h"
+
+#include "JumpFigure.h"
+
+#include "sound/WorldSound.h"
+#include "core/XMLPort.h"
+
+namespace orxonox
+{
+    RegisterClass(JumpPlatformTimer);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
+    JumpPlatformTimer::JumpPlatformTimer(Context* context) : JumpPlatform(context)
+    {
+        RegisterObject(JumpPlatformTimer);
+
+        particleSpawner = NULL;
+
+        setProperties(3.0);
+
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    JumpPlatformTimer::~JumpPlatformTimer()
+    {
+
+    }
+
+    //xml port for loading sounds
+    void JumpPlatformTimer::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpPlatformTimer, XMLPort, xmlelement, mode);
+
+        XMLPortParam(JumpPlatformTimer, "effectPath", setEffectPath, getEffectPath, xmlelement, mode);
+        XMLPortParam(JumpPlatformTimer, "effectStartTime", setEffectStartTime, getEffectStartTime, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Is called every tick.
+        Handles the movement of the ball and its interaction with the boundaries and bats.
+    @param dt
+        The time since the last tick.
+    */
+    void JumpPlatformTimer::tick(float dt)
+    {
+        SUPER(JumpPlatformTimer, tick, dt);
+
+        time_ -= dt;
+        if (time_ < effectStartTime_ && particleSpawner == NULL)
+        {
+
+        	particleSpawner = new ParticleSpawner(getContext());
+        	particleSpawner->setSource(effectPath_);
+            particleSpawner->setLoop(false);
+            particleSpawner->setLOD(LODParticle::Low);
+            particleSpawner->setLifetime(effectStartTime_);
+
+            attach(particleSpawner);
+        }
+    }
+
+    void JumpPlatformTimer::setProperties(float time)
+    {
+    	time_ = time;
+    }
+
+    bool JumpPlatformTimer::isActive(void)
+    {
+    	return time_ > 0.0;
+    }
+
+    void JumpPlatformTimer::touchFigure()
+    {
+    	accelerateFigure();
+    	if (isActive())
+    	{
+    		accelerateFigure();
+    	}
+    }
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformTimer.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformTimer.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformTimer.h	(revision 10050)
@@ -0,0 +1,93 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformTimer.h
+    @brief Declaration of the JumpPlatformTimer class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpPlatformTimer_H__
+#define _JumpPlatformTimer_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include "util/Math.h"
+
+#include "worldentities/MovableEntity.h"
+#include "graphics/ParticleSpawner.h"
+
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        This class manages the ball for @ref orxonox::Jump "Jump".
+
+        It is responsible for both the movement of the ball in the x,z-plane as well as its interaction with the boundaries of the playing field (defined by the @ref orxonox::JumpCenterpoint "JumpCenterpoint") and the @ref orxonox::JumpFigure "JumpFigures". Or more precisely, it makes the ball bounce off then upper and lower delimiters of the playing field, it makes the ball bounce off the bats and also detects when a player scores and takes appropriate measures.
+
+    @author
+        Fabian 'x3n' Landau
+
+    @ingroup Jump
+    */
+    class _JumpExport JumpPlatformTimer : public JumpPlatform
+    {
+        public:
+    	    JumpPlatformTimer(Context* context);
+            virtual ~JumpPlatformTimer();
+
+            virtual void tick(float dt);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+            virtual void setProperties(float time);
+            virtual bool isActive(void);
+            virtual void touchFigure();
+
+            void setEffectPath(const std::string& effectPath)
+                { this->effectPath_ = effectPath; }
+
+            const std::string& getEffectPath() const
+                { return this->effectPath_; }
+
+            void setEffectStartTime(const float effectStartTime)
+                { this->effectStartTime_ = effectStartTime; }
+
+            const float getEffectStartTime() const
+                { return this->effectStartTime_; }
+
+        protected:
+            float time_;
+            ParticleSpawner* particleSpawner;
+            std::string effectPath_;
+            float effectStartTime_;
+    };
+}
+
+#endif /* _JumpPlatformTimer_H__ */
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformVMove.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformVMove.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformVMove.cc	(revision 10050)
@@ -0,0 +1,117 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformVMove.cc
+    @brief Implementation of the JumpPlatform class.
+*/
+
+#include "JumpPlatformVMove.h"
+
+#include "core/CoreIncludes.h"
+#include "core/GameMode.h"
+
+#include "gametypes/Gametype.h"
+
+#include "JumpFigure.h"
+
+#include "sound/WorldSound.h"
+#include "core/XMLPort.h"
+
+namespace orxonox
+{
+    RegisterClass(JumpPlatformVMove);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
+    JumpPlatformVMove::JumpPlatformVMove(Context* context) : JumpPlatform(context)
+    {
+        RegisterObject(JumpPlatformVMove);
+
+        setProperties(0,80,10);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    JumpPlatformVMove::~JumpPlatformVMove()
+    {
+
+    }
+
+    //xml port for loading sounds
+    void JumpPlatformVMove::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpPlatformVMove, XMLPort, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Is called every tick.
+        Handles the movement of the ball and its interaction with the boundaries and bats.
+    @param dt
+        The time since the last tick.
+    */
+    void JumpPlatformVMove::tick(float dt)
+    {
+        SUPER(JumpPlatformVMove, tick, dt);
+
+        // Get the current position, velocity and acceleration of the ball.
+        Vector3 position = this->getPosition();
+        Vector3 velocity = this->getVelocity();
+
+        if ((position.z < lowerBoundary_ && velocity.z < 0) || (position.z > upperBoundary_ && velocity.z > 0))
+        {
+        	//orxout() << "refelected platformVMove at " << position.z << endl;
+        	velocity.z = -velocity.z;
+        }
+
+        // Set the position, velocity and acceleration of the ball, if they have changed.
+        if (velocity != this->getVelocity())
+            this->setVelocity(velocity);
+        if (position != this->getPosition())
+            this->setPosition(position);
+    }
+
+    void JumpPlatformVMove::setProperties(float lowerBoundary, float upperBoundary, float speed)
+    {
+    	lowerBoundary_ = lowerBoundary;
+    	upperBoundary_ = upperBoundary;
+
+        this->setVelocity(Vector3(0,0,speed));
+
+    }
+
+    void JumpPlatformVMove::touchFigure()
+    {
+    	accelerateFigure();
+    }
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpPlatformVMove.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPlatformVMove.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPlatformVMove.h	(revision 10050)
@@ -0,0 +1,77 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpPlatformVMove.h
+    @brief Declaration of the JumpPlatform class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpPlatformVMove_H__
+#define _JumpPlatformVMove_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include "util/Math.h"
+
+#include "worldentities/MovableEntity.h"
+
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        This class manages the ball for @ref orxonox::Jump "Jump".
+
+        It is responsible for both the movement of the ball in the x,z-plane as well as its interaction with the boundaries of the playing field (defined by the @ref orxonox::JumpCenterpoint "JumpCenterpoint") and the @ref orxonox::JumpFigure "JumpFigures". Or more precisely, it makes the ball bounce off then upper and lower delimiters of the playing field, it makes the ball bounce off the bats and also detects when a player scores and takes appropriate measures.
+
+    @author
+        Fabian 'x3n' Landau
+
+    @ingroup Jump
+    */
+    class _JumpExport JumpPlatformVMove : public JumpPlatform
+    {
+        public:
+    	    JumpPlatformVMove(Context* context);
+            virtual ~JumpPlatformVMove();
+
+            virtual void tick(float dt);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+            virtual void setProperties(float leftBoundary, float rightBoundary, float speed);
+            virtual void touchFigure();
+
+        protected:
+            float lowerBoundary_;
+            float upperBoundary_;
+    };
+}
+
+#endif /* _JumpPlatform_H__ */
Index: code/branches/pickupsFS14/src/modules/jump/JumpPrereqs.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpPrereqs.h	(revision 10041)
+++ code/branches/pickupsFS14/src/modules/jump/JumpPrereqs.h	(revision 10050)
@@ -73,4 +73,10 @@
     class JumpPlatformHMove;
     class JumpPlatformVMove;
+    class JumpPlatformDisappear;
+    class JumpPlatformTimer;
+    class JumpPlatformFake;
+    class JumpProjectile;
+    class JumpEnemy;
+    class JumpItem;
     class JumpFigure;
     class JumpCenterpoint;
Index: code/branches/pickupsFS14/src/modules/jump/JumpProjectile.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpProjectile.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpProjectile.cc	(revision 10050)
@@ -0,0 +1,144 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpProjectile.cc
+    @brief Implementation of the JumpProjectile class.
+*/
+
+#include "JumpProjectile.h"
+
+#include "core/CoreIncludes.h"
+#include "core/GameMode.h"
+#include "graphics/Model.h"
+#include "gametypes/Gametype.h"
+
+#include "JumpFigure.h"
+
+#include "sound/WorldSound.h"
+#include "core/XMLPort.h"
+
+namespace orxonox
+{
+    RegisterClass(JumpProjectile);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
+    JumpProjectile::JumpProjectile(Context* context) : MovableEntity(context)
+    {
+        RegisterObject(JumpProjectile);
+
+        this->figure_ = 0;
+
+        this->registerVariables();
+
+        this->setPosition(Vector3(0,0,0));
+        this->setVelocity(Vector3(0,0,0));
+        this->setAcceleration(Vector3(0,0,0));
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    JumpProjectile::~JumpProjectile()
+    {
+        /*if (this->isInitialized())
+        {
+            if (this->bDeleteBats_)
+                delete this->figure_;
+
+            delete[] this->batID_;
+        }*/
+    }
+
+    //xml port for loading sounds
+    void JumpProjectile::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpProjectile, XMLPort, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Register variables to synchronize over the network.
+    */
+    void JumpProjectile::registerVariables()
+    {
+        registerVariable( this->fieldWidth_ );
+        registerVariable( this->fieldHeight_ );
+        //registerVariable( this->batID_[1], VariableDirection::ToClient, new NetworkCallback<JumpProjectile>( this, &JumpProjectile::applyBats) );
+    }
+
+    /**
+    @brief
+        Is called every tick.
+        Handles the movement of the ball and its interaction with the boundaries and bats.
+    @param dt
+        The time since the last tick.
+    */
+    void JumpProjectile::tick(float dt)
+    {
+        SUPER(JumpProjectile, tick, dt);
+
+        Vector3 platformPosition = this->getPosition();
+
+        if (figure_ != NULL)
+        {
+            Vector3 figurePosition = figure_->getPosition();
+            Vector3 figureVelocity = figure_->getVelocity();
+
+            if(figureVelocity.z < 0 && figurePosition.x > platformPosition.x-10 && figurePosition.x < platformPosition.x+10 && figurePosition.z > platformPosition.z-4 && figurePosition.z < platformPosition.z+4)
+            {
+            	touchFigure();
+            }
+        }
+    }
+
+    /**
+    @brief
+        Set the bats for the ball.
+    @param bats
+        An array (of size 2) of weak pointers, to be set as the new bats.
+    */
+    void JumpProjectile::setFigure(WeakPtr<JumpFigure> newFigure)
+    {
+        figure_ = newFigure;
+    }
+
+    void JumpProjectile::accelerateFigure()
+    {
+
+    }
+
+    void JumpProjectile::touchFigure()
+    {
+
+    }
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpProjectile.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpProjectile.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpProjectile.h	(revision 10050)
@@ -0,0 +1,104 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpProjectile.h
+    @brief Declaration of the JumpProjectile class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpProjectile_H__
+#define _JumpProjectile_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include "util/Math.h"
+
+#include "worldentities/MovableEntity.h"
+
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        This class manages the ball for @ref orxonox::Jump "Jump".
+
+        It is responsible for both the movement of the ball in the x,z-plane as well as its interaction with the boundaries of the playing field (defined by the @ref orxonox::JumpCenterpoint "JumpCenterpoint") and the @ref orxonox::JumpFigure "JumpFigures". Or more precisely, it makes the ball bounce off then upper and lower delimiters of the playing field, it makes the ball bounce off the bats and also detects when a player scores and takes appropriate measures.
+
+    @author
+        Fabian 'x3n' Landau
+
+    @ingroup Jump
+    */
+    class _JumpExport JumpProjectile : public MovableEntity
+    {
+        public:
+            JumpProjectile(Context* context);
+            virtual ~JumpProjectile();
+
+            virtual void tick(float dt);
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+            /**
+            @brief Set the dimensions of the playing field.
+            @param width The width of the playing field.
+            @param height The height of the playing field.
+            */
+            void setFieldDimension(float width, float height)
+                { this->fieldWidth_ = width; this->fieldHeight_ = height; }
+            /**
+            @brief Get the dimensions of the playing field.
+            @param dimension A vector with the width as the first and height as the second component.
+            */
+            void setFieldDimension(const Vector2& dimension)
+                { this->setFieldDimension(dimension.x, dimension.y); }
+            /**
+            @brief Get the dimensions of the playing field.
+            @return Returns a vector with the width as the first and height as the second component.
+            */
+            Vector2 getFieldDimension() const
+                { return Vector2(this->fieldWidth_, this->fieldHeight_); }
+
+
+            void setFigure(WeakPtr<JumpFigure> bats); //!< Set the bats for the ball.
+
+            virtual void accelerateFigure();
+            virtual void touchFigure();
+
+        protected:
+            void registerVariables();
+
+            float fieldWidth_; //!< The width of the playing field.
+            float fieldHeight_; //!< The height of the playing field.
+            WeakPtr<JumpFigure> figure_; //!< An array with the two bats.
+    };
+}
+
+#endif /* _JumpProjectile_H__ */
Index: code/branches/pickupsFS14/src/modules/jump/JumpScore.cc
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpScore.cc	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpScore.cc	(revision 10050)
@@ -0,0 +1,171 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpScore.cc
+    @brief Implementation of the JumpScore class.
+*/
+
+#include "JumpScore.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "util/Convert.h"
+
+#include "infos/PlayerInfo.h"
+
+#include "Jump.h"
+#include "sound/WorldSound.h" /////////////////////////////
+
+namespace orxonox
+{
+    RegisterClass(JumpScore);
+
+    /**
+    @brief
+        Constructor. Registers and initializes the object.
+    */
+    JumpScore::JumpScore(Context* context) : OverlayText(context)
+    {
+        RegisterObject(JumpScore);
+
+        this->owner_ = NULL;
+
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    JumpScore::~JumpScore()
+    {
+
+    }
+
+    /**
+    @brief
+        Method to create a JumpScore through XML.
+    */
+    void JumpScore::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(JumpScore, XMLPort, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Is called each tick.
+        Creates and sets the caption to be displayed by the JumpScore.
+    @param dt
+        The time that has elapsed since the last tick.
+    */
+    void JumpScore::tick(float dt)
+    {
+        SUPER(JumpScore, tick, dt);
+
+        // If the owner is set. The owner being a Jump game.
+
+        if (this->owner_ != NULL)
+        {
+        	/*
+            if (!this->owner_->hasEnded())
+            {
+                // Get the two players.
+                player1_ = this->owner_->getPlayer();
+            }
+
+            std::string name1;
+
+            std::string score1("0");
+
+            // Save the name and score of each player as a string.
+            if (player1_ != NULL)
+            {
+                name1 = player1_->getName();
+                score1 = multi_cast<std::string>(this->owner_->getScore(player1_));
+            }
+
+            // Assemble the strings, depending on what should all be displayed.
+            std::string output1;
+            if (this->bShowLeftPlayer_)
+            {
+                if (this->bShowName_ && this->bShowScore_ && player1_ != NULL)
+                    output1 = name1 + " - " + score1;
+                else if (this->bShowScore_)
+                    output1 = score1;
+                else if (this->bShowName_)
+                    output1 = name1;
+            }
+
+            std::string output("JUMP");
+            if (this->bShowName_ || this->bShowScore_)
+            {
+                if (this->bShowLeftPlayer_ && this->bShowRightPlayer_)
+                    output = output1 + ':' + output2;
+                else if (this->bShowLeftPlayer_ || this->bShowRightPlayer_)
+                    output = output1 + output2;
+            }
+
+            this->setCaption(output);*/
+
+
+
+
+            if (!owner_->hasEnded())
+            {
+                player_ = owner_->getPlayer();
+
+                if (player_ != NULL)
+                {
+                	int score = owner_->getScore(player_);
+
+                	std::string str = multi_cast<std::string>(score);
+                	setCaption(str);
+                }
+            }
+        }
+    }
+
+    /**
+    @brief
+        Is called when the owner changes.
+        Sets the owner to NULL, if it is not a pointer to a Jump game.
+    */
+    void JumpScore::changedOwner()
+    {
+        SUPER(JumpScore, changedOwner);
+
+        if (this->getOwner() != NULL && this->getOwner()->getGametype())
+        {
+            this->owner_ = orxonox_cast<Jump*>(this->getOwner()->getGametype().get());
+        }
+        else
+        {
+            this->owner_ = NULL;
+        }
+    }
+}
Index: code/branches/pickupsFS14/src/modules/jump/JumpScore.h
===================================================================
--- code/branches/pickupsFS14/src/modules/jump/JumpScore.h	(revision 10050)
+++ code/branches/pickupsFS14/src/modules/jump/JumpScore.h	(revision 10050)
@@ -0,0 +1,73 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file JumpScore.h
+    @brief Declaration of the JumpScore class.
+    @ingroup Jump
+*/
+
+#ifndef _JumpScore_H__
+#define _JumpScore_H__
+
+#include "jump/JumpPrereqs.h"
+
+#include "tools/interfaces/Tickable.h"
+
+#include "overlays/OverlayText.h"
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        The JumpScore class displays the score for a game of @ref orxonox::Jump "Jump".
+
+    @author
+        Fabian 'x3n' Landau
+
+    @ingroup Jump
+    */
+    class _JumpExport JumpScore : public OverlayText, public Tickable
+    {
+        public:
+            JumpScore(Context* context);
+            virtual ~JumpScore();
+
+            virtual void tick(float dt); //!< Creates and sets the caption to be displayed by the JumpScore.
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void changedOwner(); //!< Is called when the owner changes.
+
+        private:
+            Jump* owner_; //!< The Jump game that owns this JumpScore.
+            WeakPtr<PlayerInfo> player_; //!< Store information about left player permanently.
+            WorldSound* scoreSound_;
+
+    };
+}
+#endif /* _JumpScore_H__ */
Index: code/branches/pickupsFS14/svn-commit.tmp
===================================================================
--- code/branches/pickupsFS14/svn-commit.tmp	(revision 10050)
+++ code/branches/pickupsFS14/svn-commit.tmp	(revision 10050)
@@ -0,0 +1,11 @@
+
+--This line, and those below, will be ignored--
+
+M    src/modules/jump/Jump.h
+M    src/modules/jump/JumpPrereqs.h
+M    src/modules/jump/JumpShip.cc
+M    src/modules/jump/JumpPlatform.cc
+M    src/modules/jump/JumpShip.h
+M    src/modules/jump/JumpPlatform.h
+M    src/modules/jump/Jump.cc
+M    data/levels/Jump.oxw
