1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-04 02:41:19 +00:00
OpenMW/apps/openmw/mwdialogue/topic.hpp
2022-12-27 19:15:56 +01:00

60 lines
1.3 KiB
C++

#ifndef GAME_MWDIALOG_TOPIC_H
#define GAME_MWDIALOG_TOPIC_H
#include <string>
#include <string_view>
#include <vector>
#include "journalentry.hpp"
namespace ESM
{
struct JournalEntry;
}
namespace MWDialogue
{
/// \brief Collection of seen responses for a topic
class Topic
{
public:
typedef std::vector<Entry> TEntryContainer;
typedef TEntryContainer::const_iterator TEntryIter;
protected:
ESM::RefId mTopic;
std::string mName;
TEntryContainer mEntries;
public:
Topic();
Topic(const ESM::RefId& topic);
virtual ~Topic();
virtual bool addEntry(const JournalEntry& entry);
///< Add entry
///
/// \note Redundant entries are ignored.
void insertEntry(const ESM::JournalEntry& entry);
///< Add entry without checking for redundant entries or modifying the state of the
/// topic otherwise
const ESM::RefId& getTopic() const;
virtual std::string_view getName() const;
void removeLastAddedResponse(std::string_view actorName);
TEntryIter begin() const;
///< Iterator pointing to the begin of the journal for this topic.
TEntryIter end() const;
///< Iterator pointing past the end of the journal for this topic.
};
}
#endif