Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 21, 2017, 4:51:31 PM (7 years ago)
Author:
remartin
Message:

Kleinere Probleme gelöst (HP, Position richtig setzen). Noch die Eigenkollision des Pickups verhindern und die Grundfunktionalität steht.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/AsteroidMining_HS17/src/modules/asteroidmining/AsteroidMinable.cc

    r11586 r11587  
    4444
    4545KNACKPUNKTE:
    46 o Maximale Hitpunkte = 200?
    47 o komische Startgeschwindigkeit der initialisierten Asteroiden. Fliegen davon.
     46o Der neu erscheinende Asteroid versucht, das Pickup aufzusammeln.
     47--> Mathematisch genuegend Abstand?
     48--> Kollisions-Ausnahme richtig, mit Hit-Methode oder so, auch bei Pickup anpassen?
     49--> Den Fall im eigenen Pickup behandeln?
     50--> Nur ein Pickup generieren, wenn die Groesse sowieso eins ist? -> Loest Kollisionsproblem nicht.
     51
    4852
    4953OFFEN:
     
    5155o Explosion parts
    5256o custom HUD
     57o asteroidField.lua anpassen, mit 'Mineraliendichten-Parameter'.
    5358
    5459HANDBUCH:
     
    6873o Error-Nachricht: Einfach Argumente leer lassen.
    6974o Pickups: setMaxSpawned funktioniert nicht -> Bastelloesung: Auf 2 statt eins setzen, erstes wird wohl direkt zerstoert.
     75o setHealth: Wird mit Max verwurstelt, war 0.
     76o Position nicht gesetzt -> alles im Ursprung, Kollision -> fliegt davon.
     77o nimmt zuviel Schaden. -> wird mit maxHealth verwurstelt -> einfach auch setzen.
    7078
    7179o Groessenabhaengige Collison shape: Umweg ueber zweiten Konstruktor.
    7280o Absturz beim Asteroidengenerieren: Health war auf 0 gesetzt! Wurde nur bei der xml-Variante definiert.
     81
     82NOTIZEN:
     83o SUPER entspricht ueberladen, andere Argumente der Methode.
    7384
    7485*/
     
    149160        this->generateSmaller = true;
    150161        //this->setHealth(50);
     162        this->context = c;
    151163        this->size = size; // customSize
    152         this->health_ = 5*size;// capped at 200 in pawn or smth?
    153         //this->setHealth(health_); // Confusing, delete one of these
    154         this->context = c;
     164        this->health_ = 15*size;// capped at 200 in pawn or smth?
     165        this->maxHealth_ = this->health_;
     166        this->setPosition(position);
    155167        //this->roll = rand()*5; //etwas Drehung. richtige Variable
    156168
    157         // Fliegt davon, irgendwieso. Dies scheint auch nicht zu nuetzen.
    158         this->setVelocity(0, 0, 0);
     169        // // Fliegt davon, irgendwieso. Dies scheint auch nicht zu nuetzen.
     170        // this->setVelocity(Vector3(0,0,0));
    159171
    160172
     
    213225    void AsteroidMinable::registerVariables()
    214226    {
    215         registerVariable(this->bAlive_,            VariableDirection::ToClient);
    216         registerVariable(this->bVulnerable_,       VariableDirection::ToClient);
    217         registerVariable(this->health_,            VariableDirection::ToClient);
    218         registerVariable(this->maxHealth_,         VariableDirection::ToClient);
     227        // registerVariable(this->bAlive_,            VariableDirection::ToClient);
     228        // registerVariable(this->bVulnerable_,       VariableDirection::ToClient);
     229        // registerVariable(this->health_,            VariableDirection::ToClient);
     230        // registerVariable(this->maxHealth_,         VariableDirection::ToClient);
    219231
    220232        registerVariable(this->size, VariableDirection::ToClient);
     
    234246    void AsteroidMinable::tick(float dt)
    235247    {
    236         // SUPER(Pawn, tick, dt);
    237248        if(!(this->initialised)){this->putStuff();}
    238249
    239250        if(this->health_ <=0){this->death();}
     251
     252        // if(this->initialised){
     253        //     // this->setVelocity(Vector3(0,0,0));  // Funktioniert, scheint aber unsinnig.
     254        //     orxout() << "Flying at speed: " << this->getVelocity() << endl;
     255        // }
    240256
    241257    }
     
    324340    int massRem = this->size-1; //some mass is lost
    325341    int num = round((massRem-1)*(double)rand() / (double)RAND_MAX)+1; // random number of children, at least one // Tweak towards bigger junks?
    326     num = 1; // zum Testen mal nur einen generieren.
     342    // num = 1; // zum Testen mal nur einen generieren.
    327343   
    328344    massRem = massRem-num;   
     
    352368        //Spawn this child  Game crashes!
    353369        //AsteroidMinable* child = new AsteroidMinable(this->context);
    354         AsteroidMinable* child = new AsteroidMinable(this->context, extra+1, this->getPosition() + Vector3(num*5, 0, 0));
     370        int newMass = extra+1;
     371        AsteroidMinable* child = new AsteroidMinable(this->context, newMass, this->getPosition() + Vector3(fisch*newMass*2.5, 0, 0));
    355372        // if(!(child == nullptr)){//Errorgebastel
    356373
     
    417434        if(orxonox_cast<AsteroidMinable*>(originator) || orxonox_cast<Pickup*>(originator)){return;}
    418435
    419 
     436        orxout() << "Schaden. HP: " << this->health_ << " Dmg: " << damage << " hDmg: " << healthdamage << " sDmg: " << shielddamage << endl;
    420437
    421438        this->damage(damage, healthdamage, shielddamage, originator, cs);
Note: See TracChangeset for help on using the changeset viewer.