#ifndef LOCATION_H #define LOCATION_H #include #include #include class Controller; class Location { public: struct Initializer { const std::string& message; const std::list>& interactive_controllers; }; explicit Location(Initializer &&initializer); virtual const std::string& interact(); const std::list>& controllers(); bool isVisited() const; private: std::string _interaction_message; std::list> _interactive_controllers; std::shared_ptr _current_user_location; bool _is_visited; }; #endif // LOCATION_H