#pragma once #include "QuestEvent.h" class QuestRequirementStorage; class QuestRequirement : public virtual Framework::ReferenceCounter { private: Framework::Text id; public: QuestRequirement(Framework::Text id); virtual bool processEvent( QuestEvent* zEvent, QuestRequirementStorage* zStorage) = 0; virtual Framework::JSON::JSONObject* getAsJSON() const = 0; const Framework::Text& getRequirementId() const; }; class QuestRequirementBlockBreak : public QuestRequirement { }; class QuestRequirementBlockPlace : public QuestRequirement {}; class QuestRequirementBlockInteract : public QuestRequirement {}; class QuestRequirementCraft : public QuestRequirement {}; class QuestRequirementItemInInventory : public QuestRequirement {};