#ifndef GAME_MMDIALOG_QUEST_H #define GAME_MWDIALOG_QUEST_H #include #include #include "journalentry.hpp" namespace MWWorld { class World; } namespace MWDialogue { /// \brief A quest in progress or a compelted quest class Quest { public: typedef std::vector TEntryContainer; typedef TEntryContainer::const_iterator TEntryIter; private: std::string mTopic; int mIndex; TEntryContainer mEntries; // info-IDs bool mFinished; public: Quest(); Quest (const std::string& topic); const std::string getName (const MWWorld::World& world) const; ///< May be an empty string int getIndex() const; void setIndex (int index, const MWWorld::World& world); ///< Calling this function with a non-existant index while throw an exception. bool isFinished() const; void addEntry (const JournalEntry& entry, const MWWorld::World& world); ///< Add entry and adjust index accordingly. /// /// \note Redundant entries are ignored, but the index is still adjusted. TEntryIter begin(); ///< Iterator pointing to the begin of the journal for this quest. TEntryIter end(); ///< Iterator pointing past the end of the journal for this quest. JournalEntry getEntry (const std::string& infoId); }; } #endif