Index: /code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.cc
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.cc	(revision 11506)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.cc	(revision 11506)
@@ -0,0 +1,23 @@
+#include "Asteroids.h"
+
+namespace orxonox
+{
+	RegisterUnloadableClass(Asteroids);
+
+	Asteroids::Asteroids(Context* context) : Deathmatch(context)
+	{
+		level = 1;
+		this->numberOfBots = 0;
+	}
+
+	void Asteroids::spawnAsteroid();
+
+	void Asteroids::setCenterpoint(InvaderCenterPoint* center)
+    {
+        this->center_ = center;
+    }
+
+    void Asteroids::start();
+    void Asteroids::end();
+    
+}
Index: /code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.h
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.h	(revision 11506)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.h	(revision 11506)
@@ -0,0 +1,89 @@
+/*
+ *   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:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file Invader.h
+    @brief Gametype.
+    @ingroup Invader
+*/
+
+#ifndef _Invader_H__
+#define _Invader_H__
+
+#include "invader/InvaderPrereqs.h"
+
+#include "gametypes/Deathmatch.h"
+#include "tools/Timer.h"
+
+namespace orxonox
+{
+
+    class _InvaderExport Invader : public Deathmatch
+    {
+        public:
+            Invader(Context* context);
+
+            virtual void start() override;
+            virtual void end() override;
+            virtual void addBots(unsigned int amount) override{} //<! overwrite function in order to bypass the addbots command
+
+            void spawnEnemy();
+
+            void setCenterpoint(InvaderCenterPoint* center);
+
+            int getLives(){return this->lives;}
+            int getLevel(){return this->level;}
+            int getPoints(){return this->point;}
+            int getMultiplier(){return this->multiplier;}
+
+            void costLife();
+            void levelUp();
+            void addPoints(int numPoints);
+            // checks if multiplier should be reset.
+            void comboControll();
+            int lives;
+            int multiplier;
+            bool bEndGame;
+            bool bShowLevel;
+        private:
+            void toggleShowLevel(){bShowLevel = !bShowLevel;}
+            InvaderShip* getPlayer();
+            WeakPtr<InvaderCenterPoint> center_;
+            WeakPtr<InvaderShip> player;
+
+            Timer enemySpawnTimer;
+            Timer comboTimer;
+            Timer showLevelTimer;
+            //Context* context;
+            int level;
+            int point;
+            bool b_combo;
+    };
+}
+
+#endif /* _Invader_H__ */
Index: /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.cc
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.cc	(revision 11506)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.cc	(revision 11506)
@@ -0,0 +1,57 @@
+#include "AsteroidsShip.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "Invader.h"
+#include "InvaderEnemy.h"
+#include "graphics/Camera.h"
+#include "weapons/projectiles/Projectile.h"
+
+namespace orxonox
+{
+    //Constructor
+    RegisterClass(AsteroidsShip);
+
+    AsteroidsShip::AsteroidsShip(Context* context) : SpaceShip(context)
+    {
+        RegisterObject(AsteroidsShip);
+
+        float x = getPosition().x;
+        float y = getPosition().y;
+        float velocityx = 0.0f;
+        float velocityy = 0.0f;
+        this->bBoost_ = false;
+    }
+    //Destructor
+    AsteroidsShip::~AsteroidsShip()
+    {
+        if (this->isInitialized())
+            this->cleanup();
+    }
+
+
+
+    //update coordinates and velocity
+    void AsteroidsShip::tick(float dt)
+    {
+        //Movement computation
+        Vector3 speed = Vector3 (100, 100, 0);
+        Vector3 position = this->getPosition();
+        position += (speed * dt);
+        this->setPosition(position);
+        //roll? muss sich das Raumschiff drehen?
+
+        //Schiessen wenn geschossen wurde
+        // shoot!
+        if (isFireing)
+            ControllableEntity::fire(0);
+        
+        //Leben verloren 
+    }
+    
+    void 
+
+
+
+
+}
Index: /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.h
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.h	(revision 11506)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.h	(revision 11506)
@@ -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:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file DodgeRace.h
+    @brief Gametype.
+    @ingroup DodgeRace
+*/
+
+#ifndef _DodgeRace_H__
+#define _DodgeRace_H__
+
+#include "dodgerace/DodgeRacePrereqs.h"
+
+#include "DodgeRaceCenterPoint.h" // Necessary for WeakPointer??
+//#include "DodgeRaceShip.h"        DO NOT include in Header. Will cause forward declaration issues
+
+//#include "DodgeRaceHUDinfo.h"
+
+
+#include "core/EventIncludes.h"
+#include "core/command/Executor.h"
+#include "core/config/ConfigValueIncludes.h"
+
+#include "gamestates/GSLevel.h"
+#include "chat/ChatManager.h"
+#include <vector>
+
+// ! HACK
+#include "infos/PlayerInfo.h"
+
+#include "core/command/ConsoleCommand.h"
+
+#include "gametypes/Deathmatch.h"
+#include "tools/Timer.h"
+
+namespace orxonox
+{
+
+    class _DodgeRaceExport DodgeRace : public Deathmatch
+    {
+       public:
+            DodgeRace(Context* context);
+
+            virtual void start() override;
+            virtual void end() override;
+
+            virtual void tick(float dt) override;
+
+            virtual void playerPreSpawn(PlayerInfo* player) override;
+
+            void levelUp();
+
+            int getLives(){return this->lives;}
+            int getLevel(){return this->level;}
+            int getPoints(){return this->point;}
+            int getMultiplier(){return this->multiplier;}
+
+            void setCenterpoint(DodgeRaceCenterPoint* center)
+                       { this->center_ = center; }
+            virtual void addBots(unsigned int amount) override{} //<! overwrite function in order to bypass the addbots command
+
+            // checks if multiplier should be reset.
+            void comboControll();
+            void costLife();
+
+            bool bEndGame;
+            bool bShowLevel;
+            int lives;
+            int multiplier;
+            float counter;
+            int pattern;
+            float currentPosition;
+            float lastPosition;
+
+       private:
+            Timer endGameTimer;
+
+            DodgeRaceShip* getPlayer();
+            WeakPtr<DodgeRaceShip> player;
+            std::vector<DodgeRaceCube*> cubeList;
+            void toggleShowLevel(){bShowLevel = !bShowLevel;}
+            void addPoints(int numPoints);
+
+            WeakPtr<DodgeRaceCenterPoint> center_;
+            int level;
+            int point;
+            bool b_combo;
+
+            Timer enemySpawnTimer;
+            Timer comboTimer;
+            Timer showLevelTimer;
+
+
+         /*
+
+            //void spawnEnemy();
+
+
+
+
+
+
+
+
+
+
+
+
+        private:
+
+
+
+
+            //Context* context;
+            */
+    };
+}
+
+#endif /* _DodgeRace_H__ */
Index: /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.cc
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.cc	(revision 11506)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.cc	(revision 11506)
@@ -0,0 +1,89 @@
+/*
+ *   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:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file InvaderEnemy.h
+    @brief Declaration of the InvaderEnemy class.
+*/
+
+#include "InvaderEnemy.h"
+
+#include "core/CoreIncludes.h"
+#include "Invader.h"
+#include "InvaderShip.h"
+
+namespace orxonox
+{
+    RegisterClass(InvaderEnemy);
+
+    InvaderEnemy::InvaderEnemy(Context* context) : Pawn(context)
+    {
+        RegisterObject(InvaderEnemy);
+        enableCollisionCallback();
+        lifetime = 0;
+    }
+
+    void InvaderEnemy::tick(float dt)
+    {
+        lifetime += dt;
+        // die after 5 seconds.
+        if (lifetime > 5000)
+            removeHealth(2000);
+
+        if (player != nullptr)
+        {
+            float newZ = 2/(pow(std::abs(getPosition().x - player->getPosition().x) * 0.01f, 2) + 1) * (player->getPosition().z - getPosition().z);
+            setVelocity(Vector3(1000.f - level * 100 , 0, newZ));
+        }
+        SUPER(InvaderEnemy, tick, dt);
+    }
+
+    inline bool InvaderEnemy::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
+    {
+        if(orxonox_cast<InvaderShip*>(otherObject))
+            removeHealth(2000);
+        return false;
+    }
+
+    Invader* InvaderEnemy::getGame()
+    {
+        if (game == nullptr)
+        {
+            for (Invader* invader : ObjectList<Invader>())
+                game = invader;
+        }
+        return game;
+    }
+
+    void InvaderEnemy::damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs)
+    {
+        Pawn::damage(damage, healthdamage, shielddamage, originator, cs);
+        if (getGame() && orxonox_cast<InvaderShip*>(originator) != nullptr && getHealth() <= 0)
+            getGame()->addPoints(42);
+    }
+}
Index: /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.h
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.h	(revision 11506)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.h	(revision 11506)
@@ -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:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file InvaderEnemy.h
+    @brief Declaration of the InvaderEnemy class.
+*/
+
+#ifndef _InvaderEnemy_H__
+#define _InvaderEnemy_H__
+
+#include "invader/InvaderPrereqs.h"
+
+#include "worldentities/pawns/Pawn.h"
+
+namespace orxonox
+{
+    class _InvaderExport InvaderEnemy : public Pawn
+    {
+        public:
+            InvaderEnemy(Context* context);
+
+            virtual void tick(float dt) override;
+            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
+            virtual void damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs) override;
+            virtual void setInvaderPlayer(InvaderShip* player){this->player = player;}
+
+            int level;
+        protected:
+            Invader* getGame();
+            WeakPtr<Invader> game;
+            WeakPtr<InvaderShip> player;
+            Camera* camera;
+            bool isFireing;
+            float speed, damping;
+            float lastTimeFront, lastTimeLeft;
+            float lifetime;
+            struct Velocity
+            {
+                float x;
+                float y;
+            } velocity, desiredVelocity;
+
+    };
+}
+
+#endif /* _InvaderEnemy_H__ */
Index: /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsWeapon.cc
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsWeapon.cc	(revision 11506)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsWeapon.cc	(revision 11506)
@@ -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:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      --
+ *
+ */
+
+/**
+    @file InvaderWeapon.h
+    @brief Implementation of the InvaderWeapon class.
+*/
+
+#include "InvaderWeapon.h"
+
+#include "core/CoreIncludes.h"
+// #include "core/XMLPort.h"
+// #include "core/command/Executor.h"
+
+#include "graphics/Model.h"
+#include "weaponsystem/Weapon.h"
+#include "weaponsystem/WeaponPack.h"
+#include "weaponsystem/WeaponSystem.h"
+#include "worldentities/WorldEntity.h"
+#include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/Projectile.h"
+#include "weapons/MuzzleFlash.h"
+
+namespace orxonox
+{
+    RegisterClass(AsteroidsWeapon);
+
+    AsteroidsWeapon::AsteroidsWeapon(Context* context) : HsW01(context)
+    {
+        RegisterObject(AsteroidsWeapon);
+    }
+
+    AsteroidsWeapon::~AsteroidsWeapon()
+    {
+
+    }
+
+    void AsteroidsWeapon::shot()
+    {
+        assert( this->getWeapon() && this->getWeapon()->getWeaponPack() && this->getWeapon()->getWeaponPack()->getWeaponSystem() && this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn() );
+
+        // Create the projectile.projectile
+        projectile = new Projectile(this->getContext());
+        Model* model = new Model(projectile->getContext());
+        model->setMeshSource(mesh_);
+        model->setCastShadows(false);
+        projectile->attach(model);
+        model->setScale(5);
+
+        this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
+        // only shoot in foreward direction
+        projectile->setOrientation(Quaternion(sqrt(0.5f),0,sqrt(0.5f),0));
+        projectile->setPosition(this->getMuzzlePosition());
+        // only shoot in foreward direction
+        projectile->setVelocity(Vector3(1, 0, 0) * 2000);
+
+        projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        projectile->setDamage(this->getDamage());
+        projectile->setShieldDamage(this->getShieldDamage());
+        projectile->setHealthDamage(this->getHealthDamage());
+
+        // Display the muzzle flash.
+        this->InvaderWeapon::muzzleflash();
+    }
+}
Index: /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsWeapon.h
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsWeapon.h	(revision 11506)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsWeapon.h	(revision 11506)
@@ -0,0 +1,55 @@
+/*
+ *   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:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file InvaderWeapon.h
+    @brief Definition of the InvaderWeapon class.
+*/
+
+#ifndef _InvaderWeapon_H__
+#define _InvaderWeapon_H__
+
+#include "invader/InvaderPrereqs.h"
+
+#include "weapons/WeaponsPrereqs.h"
+#include "weapons/weaponmodes/HsW01.h"
+
+namespace orxonox
+{
+    class _InvaderExport InvaderWeapon : public HsW01
+    {
+        public:
+            InvaderWeapon(Context* context);
+            virtual ~InvaderWeapon();
+        protected:
+            virtual void shot() override;
+            WeakPtr<Projectile> projectile;
+    };
+}
+
+#endif /* _InvaderWeapon_H__ */
Index: /code/branches/Asteroid_HS17/src/modules/asteroids/CMakeLists.txt
===================================================================
--- /code/branches/Asteroid_HS17/src/modules/asteroids/CMakeLists.txt	(revision 11506)
+++ /code/branches/Asteroid_HS17/src/modules/asteroids/CMakeLists.txt	(revision 11506)
@@ -0,0 +1,22 @@
+SET_SOURCE_FILES(Invader_SRC_FILES
+BUILD_UNIT InvaderBuildUnit.cc
+  Invader.cc
+  InvaderCenterPoint.cc
+  InvaderShip.cc
+  InvaderEnemy.cc
+  InvaderEnemyShooter.cc
+  InvaderWeapon.cc
+  InvaderWeaponEnemy.cc
+  InvaderHUDinfo.cc
+END_BUILD_UNIT
+)
+
+ORXONOX_ADD_LIBRARY(invader
+  PLUGIN
+  FIND_HEADER_FILES
+  LINK_LIBRARIES
+    orxonox
+    overlays
+    weapons
+  SOURCE_FILES ${Invader_SRC_FILES}
+)
