#pragma once #include "StarInteractionTypes.hpp" #include "StarEntity.hpp" #include "StarQuestDescriptor.hpp" namespace Star { STAR_CLASS(InteractiveEntity); class InteractiveEntity : public virtual Entity { public: // Interaction always takes place on the *server*, whether the interactive // entity is master or slave there. virtual InteractAction interact(InteractRequest const& request) = 0; // Defaults to metaBoundBox virtual RectF interactiveBoundBox() const; // Defaults to true virtual bool isInteractive() const; // Defaults to empty virtual List offeredQuests() const; virtual StringSet turnInQuests() const; // Defaults to position() virtual Vec2F questIndicatorPosition() const; }; }