#include "Umlenkung.h" #include "Spiel.h" Umlenkung::Umlenkung( int id, int x, int y, int breite, int height, Richtung richtung, int maxAbklingzeit, bool drehend, bool aktiv ) : GameObject( UMLENKUNG, x, y, breite, height ) { this->id = id; this->richtung = richtung; this->maxAbklingzeit = maxAbklingzeit; this->drehend = drehend; this->aktiv = aktiv; benutzt = 0; abklingzeitVerbleibend = 0; } void Umlenkung::setMaxAbklingzeit( int sekunden ) { this->maxAbklingzeit = sekunden; } void Umlenkung::setAktiv( bool aktiv ) { this->aktiv = aktiv; } void Umlenkung::setDrehend( bool drehend ) { this->drehend = drehend; } void Umlenkung::setRichtung( Richtung r ) { this->richtung = r; } void Umlenkung::addBenutzt( Spiel *zSpiel ) { benutzt++; if( drehend ) { switch( richtung ) { case OBEN: richtung = RECHTS; break; case RECHTS: richtung = UNTEN; break; case UNTEN: richtung = LINKS; break; case LINKS: richtung = OBEN; break; default: break; } } abklingzeitVerbleibend = (float)maxAbklingzeit; zSpiel->setUmlenkungZuletztBenutzt( dynamic_cast( getThis() ) ); } void Umlenkung::tick( double time ) { if( abklingzeitVerbleibend > 0 ) { abklingzeitVerbleibend -= (float)time; if( abklingzeitVerbleibend < 0 ) abklingzeitVerbleibend = 0; } } bool Umlenkung::isAktive() const { return aktiv; } bool Umlenkung::hatAbklingzeit() const { return abklingzeitVerbleibend > 0; } bool Umlenkung::istDrehend() const { return drehend; } int Umlenkung::getMaxAbklingzeit() const { return maxAbklingzeit; } Richtung Umlenkung::getRichtung() const { return richtung; } int Umlenkung::getBenutzungen() const { return benutzt; } int Umlenkung::getId() const { return id; }