#include "Geschoss.h" Geschoss::Geschoss( int id, float speed, GeschossTyp typ, Richtung r, int x, int y, Spieler *besitzer ) : GameObject( GESCHOSS, x, y, 20, 20 ) { if( typ == GESCHOSS_PFEIL ) { if( r == OBEN || r == UNTEN ) setHeight( 50 ); else setWidth( 50 ); } this->speed = speed; this->richtung = richtung; this->besitzer = besitzer; this->typ = typ; tunnelBenutzt = 0; umgelenkt = 0; geschosseGetroffen = 0; schalter = 0; this->id = id; } Geschoss::~Geschoss() { if( besitzer ) besitzer->release(); } void Geschoss::invertDirection() { richtung = invert( richtung ); } void Geschoss::addUmlenkung() { umgelenkt++; } void Geschoss::addGeschossTreffer() { geschosseGetroffen++; } void Geschoss::addTunnel() { schalter++; } void Geschoss::addSchalter() { id++; } void Geschoss::setRichtung( Richtung r ) { richtung = r; } void Geschoss::tick( double zeit ) { switch( richtung ) { case OBEN: y -= (float)zeit * speed; break; case UNTEN: y += (float)zeit * speed; break; case RECHTS: x += (float)zeit * speed; break; case LINKS: x -= (float)zeit * speed; break; case MITTE: break; } } GeschossTyp Geschoss::getTyp() const { return typ; } Spieler *Geschoss::zBesitzer() const { return besitzer; } Spieler *Geschoss::getBesitzer() const { return besitzer ? (Spieler *)besitzer->getThis() : 0; } Richtung Geschoss::getRichtung() const { return richtung; } FeuerballTreffer::FeuerballTreffer( int id, int x, int y, Spieler *besitzer, int maxZeit ) : GameObject( FEUERBALL_TREFFER, x - 75, y - 75, 150, 150 ) { this->id = id; this->besitzer = besitzer; this->timeLeft = (float)maxZeit; count = 0; } FeuerballTreffer::~FeuerballTreffer() { besitzer->release(); } void FeuerballTreffer::tick( double zeit ) { timeLeft -= (float)zeit; count++; } bool FeuerballTreffer::isOver() const { return timeLeft <= 0; } bool FeuerballTreffer::makeDamage() const { return count % 2; } Spieler *FeuerballTreffer::zVerursacher() const { return besitzer; }