1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-09 21:42:13 +00:00
OpenMW/apps/openmw/mwdialogue/journalimp.cpp

122 lines
2.9 KiB
C++
Raw Normal View History

2011-04-04 09:16:56 +00:00
#include "journalimp.hpp"
2011-04-04 09:16:56 +00:00
2012-10-01 15:17:04 +00:00
#include "../mwworld/esmstore.hpp"
#include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp"
#include "../mwbase/windowmanager.hpp"
2011-04-04 09:23:15 +00:00
#include "../mwgui/messagebox.hpp"
2011-04-04 09:16:56 +00:00
namespace MWDialogue
{
2011-04-26 18:08:37 +00:00
Quest& Journal::getQuest (const std::string& id)
{
TQuestContainer::iterator iter = mQuests.find (id);
if (iter==mQuests.end())
{
std::pair<TQuestContainer::iterator, bool> result =
mQuests.insert (std::make_pair (id, Quest (id)));
iter = result.first;
}
return iter->second;
}
Journal::Journal()
2011-04-04 09:16:56 +00:00
{}
2013-05-15 15:54:18 +00:00
void Journal::clear()
{
mJournal.clear();
mQuests.clear();
mTopics.clear();
}
2011-04-04 09:23:15 +00:00
void Journal::addEntry (const std::string& id, int index)
{
// bail out of we already have heard this...
2013-01-20 14:24:55 +00:00
std::string infoId = JournalEntry::idFromIndex (id, index);
for (TEntryIter i = mJournal.begin (); i != mJournal.end (); ++i)
if (i->mTopic == id && i->mInfoId == infoId)
return;
StampedJournalEntry entry = StampedJournalEntry::makeFromQuest (id, index);
2011-04-26 18:08:37 +00:00
mJournal.push_back (entry);
Quest& quest = getQuest (id);
quest.addEntry (entry); // we are doing slicing on purpose here
std::vector<std::string> empty;
2012-09-22 19:35:57 +00:00
std::string notification = "#{sJournalEntry}";
MWBase::Environment::get().getWindowManager()->messageBox (notification, empty);
2011-04-04 09:23:15 +00:00
}
void Journal::setJournalIndex (const std::string& id, int index)
{
2011-04-26 18:08:37 +00:00
Quest& quest = getQuest (id);
quest.setIndex (index);
2011-04-04 09:23:15 +00:00
}
2011-04-26 18:48:36 +00:00
void Journal::addTopic (const std::string& topicId, const std::string& infoId)
{
TTopicContainer::iterator iter = mTopics.find (topicId);
if (iter==mTopics.end())
{
std::pair<TTopicContainer::iterator, bool> result
= mTopics.insert (std::make_pair (topicId, Topic (topicId)));
iter = result.first;
}
iter->second.addEntry (JournalEntry (topicId, infoId));
2011-04-26 18:48:36 +00:00
}
2011-04-04 09:23:15 +00:00
int Journal::getJournalIndex (const std::string& id) const
{
2012-03-18 18:05:35 +00:00
TQuestContainer::const_iterator iter = mQuests.find (id);
if (iter==mQuests.end())
return 0;
return iter->second.getIndex();
2011-04-04 09:23:15 +00:00
}
Journal::TEntryIter Journal::begin() const
{
return mJournal.begin();
}
Journal::TEntryIter Journal::end() const
{
return mJournal.end();
}
2011-04-26 18:08:37 +00:00
Journal::TQuestIter Journal::questBegin() const
{
return mQuests.begin();
}
Journal::TQuestIter Journal::questEnd() const
{
return mQuests.end();
}
2011-04-26 18:48:36 +00:00
Journal::TTopicIter Journal::topicBegin() const
{
return mTopics.begin();
}
Journal::TTopicIter Journal::topicEnd() const
{
return mTopics.end();
}
2011-04-04 09:16:56 +00:00
}