Index: code/branches/Presentation_HS17_merge/src/modules/CMakeLists.txt
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/CMakeLists.txt	(revision 11724)
+++ code/branches/Presentation_HS17_merge/src/modules/CMakeLists.txt	(revision 11725)
@@ -46,2 +46,3 @@
 ADD_SUBDIRECTORY(hover)
 ADD_SUBDIRECTORY(superorxobros)
+ADD_SUBDIRECTORY(asteroids2D)
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.cc	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.cc	(revision 11725)
@@ -0,0 +1,227 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+
+/**
+    @file Asteroids2D.cc
+    @brief Implementation of the Asteroids2D class.
+
+    TODO: 
+        - Implement a counting system for the score
+        - HUD can be improved (display health, points, level etc.
+        - Problem: The asteroids spawn randomly on the playing field.
+            During spawn or level up, there is the possibility that they pawn at the position of the ship.
+            ->spawn somewhere with a safty distance/radius
+        - look over collisionshapes of the stones ->  sometimes collison with stone is not triggered for bigger stones 
+        - modify parameters in data/levels/templates/spaceshipAsteroids2D.oxt for a better playing experience -> mass, damping, rotation etc.
+
+    IDEAS:
+        - make Asteroids more beautiful! (setting, ship, explosion particles, stones)
+        - particle effect after you got hit -> during bImmune is true
+        - implement shield -> object that can be triggered
+        - Projectiles should also move over the boarders and appear on the other side
+            -> they can also hurt the player
+
+*/
+
+#include "Asteroids2D.h"
+#include "Asteroids2DShip.h" // Necessary for getPlayer function. Do NOT include this in Header!
+#include "Asteroids2DStone.h"
+#include "core/CoreIncludes.h"
+#include "Highscore.h"
+
+namespace orxonox
+{
+    RegisterUnloadableClass(Asteroids2D);
+
+    Asteroids2D::Asteroids2D(Context* context) : Deathmatch(context)
+    {
+        RegisterObject(Asteroids2D);
+
+        bEndGame = false;
+        lives = 3; 
+        level = 1;
+        point = 0;
+        bShowLevel = false;
+        multiplier = 1;
+        b_combo = false;
+        firstTick_ = true;
+        this->numberOfBots_ = 0; //sets number of default bots temporarly to 0
+        this->center_ = nullptr;
+        this->setHUDTemplate("Asteroids2DHUD");
+        levelupTimer.setTimer(30.0f, true, createExecutor(createFunctor(&Asteroids2D::levelUp, this))); //level up every 30s
+    }
+
+
+
+    void Asteroids2D::levelUp()
+    {
+        level++;
+        if (getPlayer() != nullptr)
+        {
+
+            //Do something that indicates a level up
+            for (int i = 0; i < 7; i++)
+            {
+                WeakPtr<ExplosionPart> chunk5 = new ExplosionPart(this->center_->getContext());
+                chunk5->setPosition(Vector3(600, 0, 100.f * i - 300));
+                chunk5->setVelocity(Vector3(1000, 0, 0));  //player->getVelocity()
+                chunk5->setScale(10);
+                chunk5->setEffect1("Orxonox/explosion2b");
+                chunk5->setEffect2("Orxonox/smoke6");
+                chunk5->Explode();
+
+            }
+        }
+        addPoints(multiplier * 20);
+        multiplier *= 2;
+        toggleShowLevel();
+        showLevelTimer.setTimer(1.0f, false, createExecutor(createFunctor(&Asteroids2D::toggleShowLevel, this)));
+
+
+        //After level up -> spawn stones. Modify for different difficulty level
+        for(int i = 0; i < level*2; i++){
+            spawnStone();
+        }
+
+    }
+
+    void Asteroids2D::tick(float dt)
+    {
+        //Do this only for the first tick, generate 5 stones in the beginning
+        if(this->firstTick_)
+        {
+            getPlayer();
+            for(int i = 0; i < 5; ++i)
+            {
+                spawnStone();
+            }
+            //after first tick, firstTick_ will remain false
+            this->firstTick_ = false;
+        }
+        
+        SUPER(Asteroids2D, tick, dt);
+    }
+
+    void Asteroids2D::spawnStone()
+    {
+
+        //stones are created with a size -> second constructor in Asteroids2DStone class
+        Asteroids2DStone* newStone = new Asteroids2DStone(this->center_->getContext());
+        newStone->setAsteroids2DPlayer(player);
+
+        //look at templates in data/levels/templates/asteroidsAsteroids2D.oxt
+        switch(newStone->getSize()){
+            case 1:
+                newStone->addTemplate("stone1");
+                break;
+            case 2: 
+                newStone->addTemplate("stone2");
+                break;
+            case 3:
+                newStone->addTemplate("stone3");
+                break;
+            default:
+                orxout(internal_error) << "Asteroids2DStone has invalid size and cannot be created" << endl;
+                break;
+
+        }
+    }
+
+    Asteroids2DShip* Asteroids2D::getPlayer()
+    {
+        if (player == nullptr)
+        {
+            for (Asteroids2DShip* ship : ObjectList<Asteroids2DShip>())
+            {
+                player = ship;
+            }
+        }
+        return player;
+    }
+
+    void Asteroids2D::costLife()
+    {
+        --lives;
+        if(lives <= 0){
+            endGameTimer.setTimer(8.0f, false, createExecutor(createFunctor(&Asteroids2D::end, this)));            
+        }
+    };
+    
+    //The first function that will be called
+    void Asteroids2D::start()
+    {
+        //orxout() << "start" << endl;
+
+        // Set variable to temporarily force the player to spawn.
+        this->bForceSpawn_ = false;
+
+        if (this->center_ == nullptr)  // abandon mission!
+        {
+            orxout(internal_error) << "Asteroids2D: No Centerpoint specified." << endl;
+            GSLevel::startMainMenu();
+            return;
+        }
+        // Call start for the parent class.
+        Deathmatch::start();
+    }
+
+    void Asteroids2D::playerPreSpawn(PlayerInfo* player)
+    {
+        if(lives <= 0)
+        {
+            this->end();
+        }
+    }
+
+    //This function will be called from the ship or the stone class (if the stone was hit)
+    void Asteroids2D::addPoints(int numPoints)
+    {
+        if (!bEndGame)
+        {
+            point += numPoints * multiplier;
+            b_combo = true;
+        }
+    }
+
+    void Asteroids2D::end()
+    {
+        // DON'T CALL THIS!
+        //      Deathmatch::end();
+        // It will misteriously crash the game!
+        // Instead startMainMenu, this won't crash.
+        if (Highscore::exists()){
+                    int score = this->getPoints();
+                    if(score > Highscore::getInstance().getHighestScoreOfGame("Asteroids2D")) 
+                        Highscore::getInstance().storeHighscore("Asteroids2D",score);
+
+          }
+        GSLevel::startMainMenu();
+    }
+}
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.h	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2D.h	(revision 11725)
@@ -0,0 +1,131 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+
+/**
+    @file Asteroids2D.h
+    @brief Gametype:
+     - Goal: Survive as long as you can, do not collide with stones
+     - spawns stones in every level up
+     - if you shoot and hit a stone, it will spit into two smaller stones
+    @ingroup Asteroids2D
+*/
+
+#ifndef _Asteroids2D_H__
+#define _Asteroids2D_H__
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+#include "Asteroids2DCenterPoint.h" // Necessary for WeakPointer??
+//#include "Asteroids2DShip.h"        DO NOT include in Header. Will cause forward declaration issues
+
+//#include "Asteroids2DHUDinfo.h"
+
+
+#include "core/EventIncludes.h"
+#include "core/command/Executor.h"
+#include "core/config/ConfigValueIncludes.h"
+
+#include "gamestates/GSLevel.h"
+#include "chat/ChatManager.h"
+
+// ! HACK
+#include "infos/PlayerInfo.h"
+
+#include "core/command/ConsoleCommand.h"
+
+#include "gametypes/Deathmatch.h"
+#include "tools/Timer.h"
+
+namespace orxonox
+{
+
+    class _Asteroids2DExport Asteroids2D : public Deathmatch
+    {
+       public:
+            Asteroids2D(Context* context);
+
+            virtual void start() override;
+            virtual void end() override;
+
+            //updates the game every few ns
+            virtual void tick(float dt) override;
+
+            virtual void playerPreSpawn(PlayerInfo* player) override;
+
+            void levelUp();
+
+
+            //For HUD
+            int getLives(){return this->lives;}
+            int getLevel(){return this->level;}
+            int getPoints(){return this->point;}
+            int getMultiplier(){return this->multiplier;}
+
+            //Generate Stones
+            void spawnStone();
+            void setCenterpoint(Asteroids2DCenterPoint* center)
+                { this->center_ = center; }
+            void addPoints(int numPoints);
+            virtual void addBots(unsigned int amount) override{} //<! overwrite function in order to bypass the addbots command
+
+            // checks if multiplier should be reset.
+            void costLife();
+
+            //Returns player (ship) of the game
+            Asteroids2DShip* getPlayer();
+
+            bool bEndGame;
+            bool bShowLevel;
+            int lives;
+            int multiplier;
+
+
+       private:
+
+
+
+            WeakPtr<Asteroids2DShip> player;
+            void toggleShowLevel(){bShowLevel = !bShowLevel;}
+
+            WeakPtr<Asteroids2DCenterPoint> center_;
+            int level;
+            int point;
+            bool b_combo, firstTick_;
+
+            Timer comboTimer;
+            Timer showLevelTimer;
+            Timer levelupTimer;
+            Timer endGameTimer;
+
+
+    };
+}
+
+#endif /* _Asteroids2D_H__ */
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.cc	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.cc	(revision 11725)
@@ -0,0 +1,76 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file Asteroids2DCenterPoint.cc
+    @brief Implementation of the Asteroids2DCenterPoint class.
+*/
+
+#include "Asteroids2DCenterPoint.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+
+#include "Asteroids2D.h"
+
+namespace orxonox
+{
+    RegisterClass(Asteroids2DCenterPoint);
+
+    Asteroids2DCenterPoint::Asteroids2DCenterPoint(Context* context) : StaticEntity(context)
+    {
+        RegisterObject(Asteroids2DCenterPoint);
+
+        this->checkGametype();
+        this->width_ = 1043;
+        this->height_ = 646;
+    }
+
+    
+    /**
+    @brief
+        Method to create a Asteroids2DCenterpoint through XML.
+        Set dimension of the field with "width_, height_"
+    */
+    void Asteroids2DCenterPoint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(Asteroids2DCenterPoint, XMLPort, xmlelement, mode);
+
+        XMLPortParam(Asteroids2DCenterPoint, "dimension", setFieldDimension, getFieldDimension, xmlelement, mode);
+    }
+
+
+    void Asteroids2DCenterPoint::checkGametype()
+    {
+        if (this->getGametype() != nullptr && this->getGametype()->isA(Class(Asteroids2D)))
+        {
+            Asteroids2D* Asteroids2DGametype = orxonox_cast<Asteroids2D*>(this->getGametype());
+            Asteroids2DGametype->setCenterpoint(this);
+        }
+    }
+}
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.h	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DCenterPoint.h	(revision 11725)
@@ -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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file Asteroids2DCenterPoint.h
+    @brief Declaration of the Asteroids2DCenterPoint class.
+    @ingroup Asteroids2D
+*/
+
+#ifndef _Asteroids2DCenterPoint_H__
+#define _Asteroids2DCenterPoint_H__
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+//#include "Asteroids2D.h"
+//#include "Asteroids2DHUDinfo.h"
+
+#include "worldentities/StaticEntity.h"
+
+namespace orxonox
+{
+    class _Asteroids2DExport Asteroids2DCenterPoint : public StaticEntity
+    {
+        public:
+            Asteroids2DCenterPoint(Context* context); //checks whether the gametype is actually Asteroids2D.
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override; //!< Method to create a PongCenterpoint through XML.
+            /**
+            @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_); }
+
+        private:
+            void checkGametype(); //checks whether the gametype actually is Asteroids2D
+            float width_, height_;
+
+    };
+}
+
+#endif /* _Asteroids2DCenterPoint_H__ */
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.cc	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.cc	(revision 11725)
@@ -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:
+ *      Viviane Yang
+ *
+ */
+
+#include "Asteroids2DHUDinfo.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "util/Convert.h"
+//#include "Asteroids2D.h"
+
+namespace orxonox
+{
+    RegisterClass(Asteroids2DHUDinfo);
+
+    Asteroids2DHUDinfo::Asteroids2DHUDinfo(Context* context) : OverlayText(context)
+    {
+        RegisterObject(Asteroids2DHUDinfo);
+
+        this->Asteroids2DGame = nullptr;
+        this->bShowPoints_ = true;
+    }
+
+    void Asteroids2DHUDinfo::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(Asteroids2DHUDinfo, XMLPort, xmlelement, mode);
+
+        XMLPortParam(Asteroids2DHUDinfo,"showPoints", setShowPoints, getShowPoints, xmlelement, mode).defaultValues(false);
+    }
+
+    void Asteroids2DHUDinfo::tick(float dt)
+    {
+        SUPER(Asteroids2DHUDinfo, tick, dt);
+
+
+        if(this->bShowPoints_)
+        {
+            const std::string& points = multi_cast<std::string>(this->Asteroids2DGame->getPoints());
+            if (this->Asteroids2DGame->lives <= 0)
+            {
+                setTextSize(0.2);
+                setPosition(Vector2(0.1, 0.02));
+                this->setCaption("Final score:\n" + points);
+                this->setColour(ColourValue(1, 0, 0, 1));
+            }
+            else
+            {
+                setTextSize(0.04);
+                setPosition(Vector2(0.14, 0.02));
+                this->setColour(ColourValue(1, 1, 1, 1));
+                this->setCaption(points);
+            }
+        }
+
+    }
+
+    void Asteroids2DHUDinfo::changedOwner()
+    {
+        SUPER(Asteroids2DHUDinfo, changedOwner);
+
+        if (this->getOwner() && this->getOwner()->getGametype())
+        {
+            this->Asteroids2DGame = orxonox_cast<Asteroids2D*>(this->getOwner()->getGametype());
+
+        }
+        else
+        {
+            this->Asteroids2DGame = nullptr;
+        }
+    }
+}
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.h	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DHUDinfo.h	(revision 11725)
@@ -0,0 +1,68 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *      
+ *      TODO: - get information for lives and level from gametype
+ *            - implement it as you did for points  
+ *
+ */
+
+#ifndef _Asteroids2DHUDinfo_H__
+#define _Asteroids2DHUDinfo_H__
+
+//#include "Asteroids2DShip.h"
+#include "Asteroids2D.h"
+//#include "Asteroids2DCenterPoint.h"
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+#include "tools/interfaces/Tickable.h"
+#include "overlays/OverlayText.h"
+
+namespace orxonox
+{
+    class _Asteroids2DExport Asteroids2DHUDinfo : public OverlayText, public Tickable
+    {
+     public:
+            Asteroids2DHUDinfo(Context* context);
+
+            virtual void tick(float dt) override;
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+            virtual void changedOwner() override;
+
+            inline void setShowPoints(bool value)
+                { this->bShowPoints_ = value; }
+            inline bool getShowPoints() const
+                { return this->bShowPoints_; }
+
+
+        private:
+            Asteroids2D* Asteroids2DGame;
+            bool bShowLives_;
+            bool bShowLevel_;
+            bool bShowPoints_;
+
+
+    };
+}
+#endif /* _Asteroids2DHUDinfo_H__ */
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DPrereqs.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DPrereqs.h	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DPrereqs.h	(revision 11725)
@@ -0,0 +1,81 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+@file
+@brief
+    Shared library macros, enums, constants and forward declarations for the Asteroids2D module
+*/
+
+#ifndef _Asteroids2DPrereqs_H__
+#define _Asteroids2DPrereqs_H__
+
+#include "OrxonoxConfig.h"
+#include "OrxonoxPrereqs.h"
+
+//-----------------------------------------------------------------------
+// Shared library settings
+//-----------------------------------------------------------------------
+
+#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined(ASTEROIDS2D_STATIC_BUILD)
+#  ifdef ASTEROIDS2D_SHARED_BUILD
+#    define _Asteroids2DExport __declspec(dllexport)
+#  else
+#    if defined( __MINGW32__ )
+#      define _Asteroids2DExport
+#    else
+#      define _Asteroids2DExport __declspec(dllimport)
+#    endif
+#  endif
+#  define _Asteroids2DPrivate
+#elif defined (ORXONOX_GCC_VISIBILITY)
+#  define _Asteroids2DExport  __attribute__ ((visibility("default")))
+#  define _Asteroids2DPrivate __attribute__ ((visibility("hidden")))
+#else
+#  define _Asteroids2DExport
+#  define _Asteroids2DPrivate
+#endif
+
+//-----------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------
+
+namespace orxonox
+{
+    class Asteroids2D;
+    class Asteroids2DCenterPoint;
+    class Asteroids2DShip;
+    class Asteroids2DCube;
+    //class Asteroids2DEnemy;
+    //class Asteroids2DEnemyShooter;
+    //class Asteroids2DWeapon;
+    //class Asteroids2DWeaponEnemy;
+    //class Asteroids2DHUDinfo;
+}
+
+#endif /* _Asteroids2DPrereqs_H__*/
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.cc	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.cc	(revision 11725)
@@ -0,0 +1,135 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/*  TODO: 
+
+    @file Asteroids2DShip.cc
+    @brief Implementation of the Asteroids2DShip class.
+*/
+
+#include "Asteroids2DShip.h"
+#include "Asteroids2DStone.h"
+#include "core/CoreIncludes.h"
+
+namespace orxonox
+{
+    RegisterClass(Asteroids2DShip);
+
+    Asteroids2DShip::Asteroids2DShip(Context* context) : SpaceShip(context)
+    {
+        RegisterObject(Asteroids2DShip);
+
+        isFireing = false;
+        this->width = 1043;
+        this->height = 646;
+
+        //timer.setTimer(3.5f, true, createExecutor(createFunctor(&Asteroids2DShip::showorientation, this)));
+    }
+
+    //Use this function to display your position on the field -> to determine field width and height
+    void Asteroids2DShip::showposition()
+    {
+        Vector3 pos = this->getPosition();
+        orxout() << "x = "<< pos.x << " y = " << pos.y << " z = "<< pos.z << endl; 
+    }
+
+    //Same thing for orientation
+    void Asteroids2DShip::showorientation()
+    {
+        Quaternion ort = this->getOrientation();
+        orxout() << "w = " << ort.w << " x = " << ort.x << " y = " << ort.y << "z = " << ort.z << endl;
+    }
+
+    void Asteroids2DShip::tick(float dt)
+    {
+        SUPER(Asteroids2DShip, tick, dt);
+        Vector3 pos = this->getPosition();
+
+        //ensure that the ship stays in playing field
+        if(pos.x > width/2)   pos.x = -width/2;
+        if(pos.x < -width/2)  pos.x = width/2;
+        if(pos.z > height/2)  pos.z = -height/2;
+        if(pos.z < -height/2) pos.z = height/2;
+
+        //2D movement, position should always = 0 on y-axis
+        if(pos.y!=0) pos.y = 0;
+        this->setPosition(pos);
+
+
+        //if you hit an asteroid, the ship will turn -> you need to reorientate the ship 
+        Quaternion ort = this->getOrientation();
+        ort.x = 0;
+        ort.z = 0;
+        this->setOrientation(ort);
+    }
+
+    void Asteroids2DShip::boost(bool bBoost)
+    {
+        isFireing = bBoost;
+    }
+
+    void Asteroids2DShip::updateLevel()
+    {
+        if (getGame())
+            getGame()->levelUp();
+    }
+
+    inline bool Asteroids2DShip::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
+    {
+
+        Asteroids2DStone* stone = orxonox_cast<Asteroids2DStone*>(otherObject);       
+        if(stone != nullptr && !bImmune)
+        {
+            removeHealth(100); 
+            this->getGame()->addPoints(10);
+
+            //The ship will be immune for 3 seconds after it has been hit by an asteroid
+            bImmune = true;
+            isimmune.setTimer(3.0f, false, createExecutor(createFunctor(&Asteroids2DShip::toggleImmune, this)));
+        }
+        return false;
+    }
+
+    Asteroids2D* Asteroids2DShip::getGame()
+    {
+        if (game == nullptr)
+        {
+            for (Asteroids2D* race : ObjectList<Asteroids2D>())
+            {
+                game = race;
+            }
+        }
+        return game;
+    }
+
+    void Asteroids2DShip::death()
+    {
+        getGame()->costLife();
+        SpaceShip::death();
+    }
+}
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.h	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DShip.h	(revision 11725)
@@ -0,0 +1,99 @@
+/*
+ *   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 Asteroids2DShip.h
+    @brief Declaration of the Asteroids2DShip class.
+*/
+
+#ifndef _Asteroids2DShip_H__
+#define _Asteroids2DShip_H__
+
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+
+#include "core/XMLPort.h"
+#include "worldentities/pawns/SpaceShip.h"
+#include "weapons/WeaponsPrereqs.h"
+#include "graphics/Camera.h"
+
+#include "Asteroids2D.h" // Is necessary for getGame function
+//#include "Asteroids2DCenterPoint.h"
+#include "Asteroids2DStone.h"
+
+#include "tools/Timer.h"
+
+
+namespace orxonox
+{
+    class _Asteroids2DExport Asteroids2DShip : public SpaceShip
+    {
+        public:
+            Asteroids2DShip(Context* context);
+
+            virtual void tick(float dt) override;
+
+            //no rotation in x and z direction!
+            virtual void rotatePitch(const Vector2& value) override{}; // Rotate in pitch direction.
+            virtual void rotateRoll(const Vector2& value) override{}; // Rotate in roll direction.
+            virtual void boost(bool boost) override; //Override, so that the ship does not shake
+            virtual void updateLevel();
+
+            virtual inline bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
+
+            bool isFireing;
+            
+            /*Functions that can be helpful while debugging.
+                - Set a timer so that the function is called for instance every 3s to display the coordinates
+                - Open console with "~`"-key in when you start the Asteroids2D - Minigame.
+            */
+            void showposition();
+            void showorientation();
+
+
+            void toggleImmune()
+            {
+                bImmune = !bImmune;
+            }
+
+        protected:
+            virtual void death() override;
+
+        private:
+            Asteroids2D* getGame();
+
+            float width, height;
+            WeakPtr<Asteroids2D> game;
+            bool bImmune;
+            Timer timer;
+            Timer isimmune;
+    };
+}
+
+#endif /* _Asteroids2DShip_H__ */
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.cc	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.cc	(revision 11725)
@@ -0,0 +1,160 @@
+/*   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+
+
+/**
+    @file Asteroids2DStone.cc
+
+    @brief Implementation of the Asteroids2DStone class.
+
+    TO DO:  
+    - instead of moving over the boarders of the playing field, modify the tick function so that the stones bounce back
+    - when to split? It does not work if you override kill() function...->damage() function?
+*/ 
+
+#include "Asteroids2DStone.h"
+#include "Asteroids2D.h"
+#include "Asteroids2DShip.h"
+#include "core/CoreIncludes.h"
+#include "util/Math.h"
+
+namespace orxonox
+{
+    RegisterClass(Asteroids2DStone);
+
+    Asteroids2DStone::Asteroids2DStone(Context* context) : Pawn(context)
+    {
+        RegisterObject(Asteroids2DStone);
+        this->size = rand()%3+1;
+        this->width = 1043;
+        this->height = 646;
+        this->setPosition(randomPosition(this->width, this->height));
+        this->setCollisionTypeStr("dynamic");
+        this->setVelocity(randomVelocity(MAX_SPEED));
+    }
+
+    Asteroids2DStone::Asteroids2DStone(Context* c, int sze, Vector3 pos) : Pawn(c)
+    {
+        RegisterObject(Asteroids2DStone);
+        this->size = sze;
+        this->width = 1043;
+        this->height = 646;
+        this->setPosition(pos);
+        this->setCollisionTypeStr("dynamic");
+        this->setVelocity(randomVelocity(MAX_SPEED));
+    }
+
+    Vector3 Asteroids2DStone::randomPosition(float maxwidth, float maxheight)
+    {
+        Vector3 pos;
+        pos.x = rnd(-maxwidth/2, maxwidth/2);
+        pos.y = 0;
+        pos.z = rnd(-maxheight/2, maxheight/2);
+        return pos;
+    }
+
+    Vector3 Asteroids2DStone::randomVelocity(float maxspeed)
+    {
+        Vector3 vel;
+        vel.x = rnd(maxspeed);
+        vel.y = 0;
+        vel.z = rnd(maxspeed);
+        return vel;
+    }
+
+
+    void Asteroids2DStone::tick(float dt)
+    {
+    	SUPER(Asteroids2DStone, tick, dt);
+        Vector3 pos = this->getPosition();
+
+
+        if(pos.x >= width/2){
+            pos.x = -width/2;
+        }else if(pos.x <= -width/2){
+            pos.x = -width/2;
+        }else if(pos.z >= height/2){
+            pos.z = -height/2;
+        }else if(pos.z <= -height/2){
+            pos.z = -width/2;
+        }
+
+        this->setPosition(pos);
+
+    }
+
+    inline bool Asteroids2DStone::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
+    {
+        if(orxonox_cast<Asteroids2DShip*>(otherObject))
+        {
+            split();
+        }
+        return false;
+    }
+
+    void Asteroids2DStone::damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs)
+    {
+        if (getGame() && orxonox_cast<Asteroids2DShip*>(originator) != nullptr)
+            getGame()->addPoints(100);
+        split();
+        //Pawn::damage(damage, healthdamage, shielddamage, originator, cs);
+    }
+
+    Asteroids2D* Asteroids2DStone::getGame()
+    {
+        if (game == nullptr)
+        {
+            for (Asteroids2D* asteroids : ObjectList<Asteroids2D>())
+                game = asteroids;
+        }
+        return game;
+    }
+
+    void Asteroids2DStone::split()
+    {
+        //orxout() << "split" << endl;
+        if(size == 3)
+        {
+            Asteroids2DStone* newStone1 = new Asteroids2DStone(this->getContext(), 2, this->getPosition());
+            newStone1->addTemplate("stone2");
+            Asteroids2DStone* newStone2 = new Asteroids2DStone(this->getContext(), 2, this->getPosition());
+            newStone2->addTemplate("stone2");
+
+        }else if(size == 2){
+
+
+            //Templates can be found in data/levels/templates/asteroidsAsteroids2D.oxt
+            Asteroids2DStone* newStone1 = new Asteroids2DStone(this->getContext(), 1, this->getPosition());
+            newStone1->addTemplate("stone1");
+            Asteroids2DStone* newStone2 = new Asteroids2DStone(this->getContext(), 1, this->getPosition());
+            newStone2->addTemplate("stone1");
+        }   
+        this->death();
+    }
+
+}
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.h	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DStone.h	(revision 11725)
@@ -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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *    TO DO: 
+ *
+ */
+
+/**
+    @file Asteroids2D.h
+    @brief Gametype.
+    @ingroup Asteroids2D
+*/
+
+#ifndef _Asteroids2DStone_H__
+#define _Asteroids2DStone_H__
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+#include "worldentities/pawns/Pawn.h"
+
+
+namespace orxonox
+{
+    class _Asteroids2DExport Asteroids2DStone : public Pawn
+    {
+       public:
+            Asteroids2DStone(Context* context);
+            Asteroids2DStone(Context* c, int sze, Vector3 pos);
+
+            virtual void tick(float dt) override;
+            Vector3 randomPosition (float maxwidth, float maxheight);
+            Vector3 randomVelocity(float maxspeed);
+            void setAsteroids2DPlayer(Asteroids2DShip* player){this->player = player;};
+            virtual int getSize(){ return this->size;}
+            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
+            virtual void split();
+            virtual void damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs) override;
+
+       private:
+          Asteroids2D* getGame();
+          WeakPtr<Asteroids2D> game;
+          WeakPtr<Asteroids2DShip> player;          
+       		int size;				// three sizes, 3-> two 2s, 2-> two 1s, 1-> die
+       		float width, height;	//field
+          float MAX_SPEED = 100;
+          float delta = 5;
+    };
+}
+
+#endif /* _Asteroids2DStone_H__ */
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.cc	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.cc	(revision 11725)
@@ -0,0 +1,113 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      --
+ *
+ */
+
+/**
+    @file Asteroids2DWeapon.h
+    @brief Implementation of the Asteroids2DWeapon class.
+*/
+
+#include "Asteroids2DWeapon.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"
+
+#include "Asteroids2D.h"
+
+namespace orxonox
+{
+    RegisterClass(Asteroids2DWeapon);
+
+    Asteroids2DWeapon::Asteroids2DWeapon(Context* context) : HsW01(context)
+    {
+        RegisterObject(Asteroids2DWeapon);
+
+
+    }
+
+    Asteroids2DWeapon::~Asteroids2DWeapon()
+    {
+
+    }
+
+    Asteroids2D* Asteroids2DWeapon::getGame()
+    {
+        if (game == nullptr)
+        {
+            for (Asteroids2D* race : ObjectList<Asteroids2D>())
+            {
+                game = race;
+            }
+        }
+        return game;
+    }
+
+
+    void Asteroids2DWeapon::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);
+
+        //get position and orientation of the ship to know in which direction the projectile needs to fire off
+        Pawn* player = this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn();
+
+        projectile->setOrientation(player->getOrientation());
+        projectile->setPosition(player->getPosition());
+
+        //Velocity & position of the projectile must be y = 0 since the game takes place in the x-z plane
+        Vector3 muzzle2D = player->getOrientation()* WorldEntity::FRONT ;
+        muzzle2D.y = 0; 
+        projectile->setVelocity(muzzle2D * this->speed_);
+
+        projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+        projectile->setDamage(this->getDamage());
+        projectile->setShieldDamage(this->getShieldDamage());
+        projectile->setHealthDamage(this->getHealthDamage());
+
+        // Display the muzzle flash.
+        this->HsW01::muzzleflash();
+    }
+    
+}
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.h	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/Asteroids2DWeapon.h	(revision 11725)
@@ -0,0 +1,61 @@
+/*
+ *   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:
+ *      Viviane Yang
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file Asteroids2DWeapon.h
+    @brief Definition of the Asteroids2DWeapon class.
+*/
+
+#ifndef _Asteroids2DWeapon_H__
+#define _Asteroids2DWeapon_H__
+
+#include "asteroids2D/Asteroids2DPrereqs.h"
+
+#include "weapons/WeaponsPrereqs.h"
+#include "weapons/weaponmodes/HsW01.h"
+
+#include "Asteroids2D.h"
+
+namespace orxonox
+{
+    class _Asteroids2DExport Asteroids2DWeapon : public HsW01
+    {
+        public:
+            Asteroids2DWeapon(Context* context);
+            virtual ~Asteroids2DWeapon();
+            Asteroids2D* getGame();
+
+
+        protected:
+            virtual void shot() override; //2D movement
+            WeakPtr<Projectile> projectile;
+            WeakPtr<Asteroids2D> game;
+    };
+}
+
+#endif /* _Asteroids2DWeapon_H__ */
Index: code/branches/Presentation_HS17_merge/src/modules/asteroids2D/CMakeLists.txt
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/asteroids2D/CMakeLists.txt	(revision 11725)
+++ code/branches/Presentation_HS17_merge/src/modules/asteroids2D/CMakeLists.txt	(revision 11725)
@@ -0,0 +1,17 @@
+SET_SOURCE_FILES(MINIGAMESTEST_SRC_FILES
+Asteroids2D.cc
+Asteroids2DCenterPoint.cc
+Asteroids2DShip.cc
+Asteroids2DStone.cc
+Asteroids2DHUDinfo.cc
+Asteroids2DWeapon.cc
+)
+
+ORXONOX_ADD_LIBRARY(asteroids2D
+  PLUGIN
+  FIND_HEADER_FILES
+  LINK_LIBRARIES
+    orxonox
+    overlays
+  SOURCE_FILES ${MINIGAMESTEST_SRC_FILES}
+)
