Example #1
0
void Powerup::step()
{
    frame++;
    lifeTimer++;
    if(lifeTimer >= LIFE_TIME)
    {
        die = true;
    }

    x += dx;
    y += dy;
    collideLevel();
}
Example #2
0
void Particle::step()
{
    if(lifeTimer > 0)
    {
        lifeTimer--;
        if(lifeTimer <= 0)
        {
            die = true;
        }
    }

    dy += gravity;
    x += dx;
    y += dy;
    if(particleType != PARTICLE_BLUE)
    {
        collideLevel();
    }
    if(landedDown || landedRight || landedLeft)
    {
        dx = 0;
        dy = 0;
    }
}
Example #3
0
void Lunger::step()
{
    Player* player = level.getPlayer();

    if(!haveDirection)
    {

        movingRight = (player->x + player->w/2) > (x + w/2);
        haveDirection = true;
    }
    if(landedDown)
    {
        float xDist = player->x + player->w/2 - (x + w/2);
        float yDist = player->y + player->h/2 - (y + h/2);
        bool facingPlayer = movingRight == ((player->x + player->w/2) > (x + w/2));
        if(player->landedDown &&
           facingPlayer &&
           fabs(yDist) < Tile::TILE_SIZE &&
           fabs(xDist) < 3 * Tile::TILE_SIZE)
        {
            tryLunge();
        }
    }
    if(!lunging)
    {
        if(movingRight)
        {
            dx += ACCEL_RATE;
            if(dx > MOVE_SPEED)
            {
                dx = MOVE_SPEED;
            }
        }
        else
        {
            dx -= ACCEL_RATE;
            if(dx < -MOVE_SPEED)
            {
                dx = -MOVE_SPEED;
            }
        }
    }
    else
    {
        dx *= 0.95;
        if(fabs(dx) < 0.1)
        {
            lunging = false;
        }
    }


    dy += GRAVITY;
    x += dx;
    y += dy;
    collideLevel();

    if(landedLeft || landedRight)
    {
        tryJump();
        haveDirection = false;
    }
    currSprite->setFlipped(!movingRight);
    currSprite->step();
}