#include "Rolle.h"
#include "Spieler.h"

RolleEffect::RolleEffect( Spieler *zSpieler, Richtung r )
    : Effect( zSpieler, 2.f + ( 2.f / 100.f ) * zSpieler->getAbklingZeitVerringerung() )
{
    this->r = r;
}

RolleEffect::~RolleEffect()
{}

bool RolleEffect::istSpielerBeweglich( Richtung r )
{
    return false;
}

bool RolleEffect::istSpielerVerwundbar( Richtung r )
{
    return r == MITTE;
}

void RolleEffect::move( double time )
{
    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 )
{
    return typ != STURM && typ != ENTERHAKEN;
}