[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