12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include "Rolle.h"
- #include "Spieler.h"
- RolleEffect::RolleEffect( ResourceRegistry *zResources, Spieler *zSpieler, Richtung r )
- : Effect( zSpieler, 2.f + ( 2.f / 100.f ) * zSpieler->getAbklingZeitVerringerung() )
- {
- this->r = r;
- annimation = 0;
- if( r == LINKS )
- annimation = zResources->getResource( R_ROLLE_LINKS, zSpieler->getFarbe() );
- if( r == RECHTS )
- annimation = zResources->getResource( R_ROLLE_RECHTS, zSpieler->getFarbe() );
- if( r == OBEN )
- annimation = zResources->getResource( R_ROLLE_OBEN, zSpieler->getFarbe() );
- if( r == UNTEN )
- annimation = zResources->getResource( R_ROLLE_UNTEN, zSpieler->getFarbe() );
- effectImage = zResources->zResource( R_ROLLE, 0 )->getImage( 0 );
- }
- RolleEffect::~RolleEffect()
- {
- if( annimation )
- annimation->release();
- }
- bool RolleEffect::istSpielerBeweglich( Richtung r ) const
- {
- return false;
- }
- bool RolleEffect::istSpielerVerwundbar( Richtung r ) const
- {
- return r == MITTE;
- }
- void RolleEffect::move( Richtung ri, double time )
- {
- if( r != ri )
- return;
- switch( r )
- {
- case OBEN:
- zSpieler->setY( zSpieler->getY() - ( 75 + zSpieler->getLaufTempo() ) * (float)time );
- break;
- case RECHTS:
- zSpieler->setX( zSpieler->getX() + ( 75 + zSpieler->getLaufTempo() ) * (float)time );
- break;
- case UNTEN:
- zSpieler->setY( zSpieler->getY() + ( 75 + zSpieler->getLaufTempo() ) * (float)time );
- break;
- case LINKS:
- zSpieler->setX( zSpieler->getX() - ( 75 + zSpieler->getLaufTempo() ) * (float)time );
- break;
- default:
- break;
- }
- }
- bool RolleEffect::istGegenstandErlaubt( GegenstandTyp typ ) const
- {
- return typ != STURM && typ != ENTERHAKEN;
- }
- Resource *RolleEffect::getCurrentResource()
- {
- return annimation ? dynamic_cast<Resource *>( annimation->getThis() ) : 0;
- }
|