[Orxonox-commit 6966] r11587 - code/branches/AsteroidMining_HS17/src/modules/asteroidmining
remartin at orxonox.net
remartin at orxonox.net
Tue Nov 21 16:51:32 CET 2017
Author: remartin
Date: 2017-11-21 16:51:31 +0100 (Tue, 21 Nov 2017)
New Revision: 11587
Modified:
code/branches/AsteroidMining_HS17/src/modules/asteroidmining/AsteroidMinable.cc
Log:
Kleinere Probleme gelost (HP, Position richtig setzen). Noch die Eigenkollision des Pickups verhindern und die Grundfunktionalitat steht.
Modified: code/branches/AsteroidMining_HS17/src/modules/asteroidmining/AsteroidMinable.cc
===================================================================
--- code/branches/AsteroidMining_HS17/src/modules/asteroidmining/AsteroidMinable.cc 2017-11-21 12:07:17 UTC (rev 11586)
+++ code/branches/AsteroidMining_HS17/src/modules/asteroidmining/AsteroidMinable.cc 2017-11-21 15:51:31 UTC (rev 11587)
@@ -43,13 +43,18 @@
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
KNACKPUNKTE:
-o Maximale Hitpunkte = 200?
-o komische Startgeschwindigkeit der initialisierten Asteroiden. Fliegen davon.
+o Der neu erscheinende Asteroid versucht, das Pickup aufzusammeln.
+--> Mathematisch genuegend Abstand?
+--> Kollisions-Ausnahme richtig, mit Hit-Methode oder so, auch bei Pickup anpassen?
+--> Den Fall im eigenen Pickup behandeln?
+--> Nur ein Pickup generieren, wenn die Groesse sowieso eins ist? -> Loest Kollisionsproblem nicht.
+
OFFEN:
o Add custom pickup 'resources'. Weird template stuff -> Problems setting 'size' and other properties? setNumber of Resources.
o Explosion parts
o custom HUD
+o asteroidField.lua anpassen, mit 'Mineraliendichten-Parameter'.
HANDBUCH:
o im Level-File includes/pickups.oxi importieren.
@@ -67,10 +72,16 @@
o Dynamische Definition -> putStuff-Methode, Werte noch nicht durchgesickert.
o Error-Nachricht: Einfach Argumente leer lassen.
o Pickups: setMaxSpawned funktioniert nicht -> Bastelloesung: Auf 2 statt eins setzen, erstes wird wohl direkt zerstoert.
+o setHealth: Wird mit Max verwurstelt, war 0.
+o Position nicht gesetzt -> alles im Ursprung, Kollision -> fliegt davon.
+o nimmt zuviel Schaden. -> wird mit maxHealth verwurstelt -> einfach auch setzen.
o Groessenabhaengige Collison shape: Umweg ueber zweiten Konstruktor.
o Absturz beim Asteroidengenerieren: Health war auf 0 gesetzt! Wurde nur bei der xml-Variante definiert.
+NOTIZEN:
+o SUPER entspricht ueberladen, andere Argumente der Methode.
+
*/
@@ -148,14 +159,15 @@
// Default Values
this->generateSmaller = true;
//this->setHealth(50);
+ this->context = c;
this->size = size; // customSize
- this->health_ = 5*size;// capped at 200 in pawn or smth?
- //this->setHealth(health_); // Confusing, delete one of these
- this->context = c;
+ this->health_ = 15*size;// capped at 200 in pawn or smth?
+ this->maxHealth_ = this->health_;
+ this->setPosition(position);
//this->roll = rand()*5; //etwas Drehung. richtige Variable
- // Fliegt davon, irgendwieso. Dies scheint auch nicht zu nuetzen.
- this->setVelocity(0, 0, 0);
+ // // Fliegt davon, irgendwieso. Dies scheint auch nicht zu nuetzen.
+ // this->setVelocity(Vector3(0,0,0));
@@ -212,10 +224,10 @@
void AsteroidMinable::registerVariables()
{
- registerVariable(this->bAlive_, VariableDirection::ToClient);
- registerVariable(this->bVulnerable_, VariableDirection::ToClient);
- registerVariable(this->health_, VariableDirection::ToClient);
- registerVariable(this->maxHealth_, VariableDirection::ToClient);
+ // registerVariable(this->bAlive_, VariableDirection::ToClient);
+ // registerVariable(this->bVulnerable_, VariableDirection::ToClient);
+ // registerVariable(this->health_, VariableDirection::ToClient);
+ // registerVariable(this->maxHealth_, VariableDirection::ToClient);
registerVariable(this->size, VariableDirection::ToClient);
registerVariable(this->generateSmaller, VariableDirection::ToClient);
@@ -233,11 +245,15 @@
void AsteroidMinable::tick(float dt)
{
- // SUPER(Pawn, tick, dt);
if(!(this->initialised)){this->putStuff();}
if(this->health_ <=0){this->death();}
+ // if(this->initialised){
+ // // this->setVelocity(Vector3(0,0,0)); // Funktioniert, scheint aber unsinnig.
+ // orxout() << "Flying at speed: " << this->getVelocity() << endl;
+ // }
+
}
void AsteroidMinable::setSize(float s){
@@ -323,7 +339,7 @@
// Spawn smaller Children
int massRem = this->size-1; //some mass is lost
int num = round((massRem-1)*(double)rand() / (double)RAND_MAX)+1; // random number of children, at least one // Tweak towards bigger junks?
- num = 1; // zum Testen mal nur einen generieren.
+ // num = 1; // zum Testen mal nur einen generieren.
massRem = massRem-num;
int extra = 0;
@@ -351,7 +367,8 @@
//Spawn this child Game crashes!
//AsteroidMinable* child = new AsteroidMinable(this->context);
- AsteroidMinable* child = new AsteroidMinable(this->context, extra+1, this->getPosition() + Vector3(num*5, 0, 0));
+ int newMass = extra+1;
+ AsteroidMinable* child = new AsteroidMinable(this->context, newMass, this->getPosition() + Vector3(fisch*newMass*2.5, 0, 0));
// if(!(child == nullptr)){//Errorgebastel
// Position zu spaet gesetzt? Tick nicht atomar -> falsche Groesse evtl?
@@ -416,8 +433,8 @@
// Wird staending aufgerufen -> Rechenleistung?
if(orxonox_cast<AsteroidMinable*>(originator) || orxonox_cast<Pickup*>(originator)){return;}
+ orxout() << "Schaden. HP: " << this->health_ << " Dmg: " << damage << " hDmg: " << healthdamage << " sDmg: " << shielddamage << endl;
-
this->damage(damage, healthdamage, shielddamage, originator, cs);
More information about the Orxonox-commit
mailing list