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(); }