[Orxonox-commit 7047] r11666 - code/branches/Asteroid_HS17/src/modules/asteroids2D

vyang at orxonox.net vyang at orxonox.net
Tue Dec 12 17:43:22 CET 2017


Author: vyang
Date: 2017-12-12 17:43:22 +0100 (Tue, 12 Dec 2017)
New Revision: 11666

Modified:
   code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DShip.cc
   code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DStone.cc
   code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DStone.h
Log:
damage Funktion der Steine ueberschrieben -> Sie koennen sich teilen

Modified: code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DShip.cc
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DShip.cc	2017-12-11 17:06:20 UTC (rev 11665)
+++ code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DShip.cc	2017-12-12 16:43:22 UTC (rev 11666)
@@ -84,8 +84,11 @@
         this->setPosition(pos);
 
 
-
-        //shoot?
+        //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)

Modified: code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DStone.cc
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DStone.cc	2017-12-11 17:06:20 UTC (rev 11665)
+++ code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DStone.cc	2017-12-12 16:43:22 UTC (rev 11666)
@@ -119,12 +119,33 @@
         return false;
     }
 
+    void Asteroids2DStone::damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs)
+    {
+        split();
+        //Pawn::damage(damage, healthdamage, shielddamage, originator, cs);
+        if (getGame() && orxonox_cast<Asteroids2DShip*>(originator) != nullptr && getHealth() <= 0)
+            getGame()->addPoints(3*42);
+    }
+
+    Asteroids2D* Asteroids2DStone::getGame()
+    {
+        if (game == nullptr)
+        {
+            for (Asteroids2D* asteroids : ObjectList<Asteroids2D>())
+                game = asteroids;
+        }
+        return game;
+    }
+
     void Asteroids2DStone::split()
     {
         orxout() << "split" << endl;
-        if(size == 1)
+        if(size == 3)
         {
-            this->death();
+            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){
 
@@ -134,13 +155,8 @@
             newStone1->addTemplate("stone1");
             Asteroids2DStone* newStone2 = new Asteroids2DStone(this->getContext(), 1, this->getPosition());
             newStone2->addTemplate("stone1");
-            
-        }else{
-            Asteroids2DStone* newStone1 = new Asteroids2DStone(this->getContext(), 2, this->getPosition());
-            newStone1->addTemplate("stone1");
-            Asteroids2DStone* newStone2 = new Asteroids2DStone(this->getContext(), 2, this->getPosition());
-            newStone2->addTemplate("stone1");
-        }
+        }   
+        this->death();
     }
 
 }

Modified: code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DStone.h
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DStone.h	2017-12-11 17:06:20 UTC (rev 11665)
+++ code/branches/Asteroid_HS17/src/modules/asteroids2D/Asteroids2DStone.h	2017-12-12 16:43:22 UTC (rev 11666)
@@ -56,8 +56,11 @@
             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



More information about the Orxonox-commit mailing list