2021-05-08 03:36:26 +02:00
|
|
|
#ifndef ACTOR_H
|
|
|
|
#define ACTOR_H
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
#include <list>
|
2021-05-16 01:44:19 +02:00
|
|
|
#include <set>
|
2021-05-08 03:36:26 +02:00
|
|
|
|
|
|
|
class Location;
|
|
|
|
class Item;
|
|
|
|
|
|
|
|
class Actor
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
explicit Actor();
|
|
|
|
virtual ~Actor() = 0;
|
|
|
|
|
|
|
|
virtual void commitAction() = 0;
|
|
|
|
virtual void moveToLocation(const std::shared_ptr<Location>& location) = 0;
|
2021-05-16 01:44:19 +02:00
|
|
|
virtual bool isLocationVisited(const std::shared_ptr<Location>& location) const = 0;
|
2021-05-08 03:36:26 +02:00
|
|
|
virtual void giveItem(const std::shared_ptr<Item>& item) = 0;
|
|
|
|
virtual void useItem(const std::shared_ptr<Item>& item) = 0;
|
2021-05-16 01:44:19 +02:00
|
|
|
virtual bool hasItem(const std::shared_ptr<Item>& item) const = 0;
|
2021-05-08 03:36:26 +02:00
|
|
|
|
|
|
|
protected:
|
|
|
|
std::shared_ptr<Location> _current_location;
|
|
|
|
std::list<std::shared_ptr<Item>> _inventory;
|
2021-05-16 01:44:19 +02:00
|
|
|
std::set<std::shared_ptr<Location>> _visited_locations;
|
2021-05-08 03:36:26 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // ACTOR_H
|