Example #1
0
void Map::update(const sf::Time& elapsed_time)
{
  _player.update(elapsed_time);

  // Update player position
  if( _player.hasSpeed() )
  {
    // Calculate destination
    float x_move = _player.getHorizontalSpeed() * elapsed_time.asMilliseconds();
    float x_destination = _player.getPosition().x + x_move;
    float y_destination = _player.getPosition().y;

    // Check movement doesn't reach limits
    if( x_destination < _map_left_limit )
    {
      x_destination = _map_left_limit;
      _player.resetMovement(); // player's reach limit, reset movement inertia
    }
    else if( x_destination + _player.getWidth() > _map_right_limit )
    {
      x_destination = _map_right_limit - _player.getWidth();
      _player.resetMovement(); // player's reach limit, reset movement inertia
    }

    // Update player and view positions
    _player.setPosition( {x_destination, y_destination} );
    _view.setCenter( _player.getCenter() );

    // Check view's limits not reached
    const sf::Vector2f& view_center = _view.getCenter();
    if( view_center.x < _view_left_limit )
      _view.setCenter( _view_left_limit, view_center.y );
    else if( view_center.x > _view_right_limit )
      _view.setCenter( _view_right_limit, view_center.y );
  }

  keyboardActions();
}
void ParticleSystem::update(float timeElapsed) {
   setTimeElapsed(timeElapsed);
   keyboardActions();
   updateParticles();
   addParticlesToSystem();
}