#ifndef REMOVECONTROLLERSMODIFICATOR_H
#define REMOVECONTROLLERSMODIFICATOR_H

#include <string>
#include <memory>
#include <list>

#include "modificator.h"

class Location;
class Controller;

class RemoveControllersModificator : public Modificator
{
public:
    explicit RemoveControllersModificator();
    virtual ~RemoveControllersModificator() override;

    virtual void run() const override;

    void setDependentObjects(const std::shared_ptr<Location>& location,
                             const std::list<std::shared_ptr<Controller>>& controllers,
                             const std::string& new_message);

private:
    std::shared_ptr<Location> _location;
    std::list<std::shared_ptr<Controller>> _controllers_to_remove;
    std::string _new_location_message;
};

#endif // REMOVECONTROLLERSMODIFICATOR_H