mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-25 15:35:23 +00:00
Merge remote-tracking branch 'jordan-ayers/topic/dialogue-set'
This commit is contained in:
commit
c02c72e134
@ -5,6 +5,7 @@
|
||||
#include <cstdlib>
|
||||
#include <algorithm>
|
||||
#include <iterator>
|
||||
#include <list>
|
||||
|
||||
#include <components/esm/loaddial.hpp>
|
||||
#include <components/esm/loadinfo.hpp>
|
||||
@ -78,7 +79,7 @@ namespace MWDialogue
|
||||
|
||||
void DialogueManager::addTopic (const std::string& topic)
|
||||
{
|
||||
mKnownTopics[Misc::StringUtils::lowerCase(topic)] = true;
|
||||
mKnownTopics.insert( Misc::StringUtils::lowerCase(topic) );
|
||||
}
|
||||
|
||||
void DialogueManager::parseText (const std::string& text)
|
||||
@ -102,8 +103,8 @@ namespace MWDialogue
|
||||
if (tok->isImplicitKeyword() && mTranslationDataStorage.hasTranslation())
|
||||
continue;
|
||||
|
||||
if (std::find(mActorKnownTopics.begin(), mActorKnownTopics.end(), topicId) != mActorKnownTopics.end())
|
||||
mKnownTopics[topicId] = true;
|
||||
if (mActorKnownTopics.count( topicId ))
|
||||
mKnownTopics.insert( topicId );
|
||||
}
|
||||
|
||||
updateTopics();
|
||||
@ -341,10 +342,10 @@ namespace MWDialogue
|
||||
if (filter.responseAvailable (*iter))
|
||||
{
|
||||
std::string lower = Misc::StringUtils::lowerCase(iter->mId);
|
||||
mActorKnownTopics.push_back (lower);
|
||||
mActorKnownTopics.insert (lower);
|
||||
|
||||
//does the player know the topic?
|
||||
if (mKnownTopics.find (lower) != mKnownTopics.end())
|
||||
if (mKnownTopics.count(lower))
|
||||
{
|
||||
keywordList.push_back (iter->mId);
|
||||
}
|
||||
@ -635,10 +636,11 @@ namespace MWDialogue
|
||||
{
|
||||
ESM::DialogueState state;
|
||||
|
||||
for (std::map<std::string, bool>::const_iterator iter (mKnownTopics.begin());
|
||||
for (std::set<std::string>::const_iterator iter (mKnownTopics.begin());
|
||||
iter!=mKnownTopics.end(); ++iter)
|
||||
if (iter->second)
|
||||
state.mKnownTopics.push_back (iter->first);
|
||||
{
|
||||
state.mKnownTopics.push_back (*iter);
|
||||
}
|
||||
|
||||
state.mChangedFactionReaction = mChangedFactionReaction;
|
||||
|
||||
@ -659,7 +661,7 @@ namespace MWDialogue
|
||||
for (std::vector<std::string>::const_iterator iter (state.mKnownTopics.begin());
|
||||
iter!=state.mKnownTopics.end(); ++iter)
|
||||
if (store.get<ESM::Dialogue>().search (*iter))
|
||||
mKnownTopics.insert (std::make_pair (*iter, true));
|
||||
mKnownTopics.insert (*iter);
|
||||
|
||||
mChangedFactionReaction = state.mChangedFactionReaction;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include "../mwbase/dialoguemanager.hpp"
|
||||
|
||||
#include <map>
|
||||
#include <list>
|
||||
#include <set>
|
||||
|
||||
#include <components/compiler/streamerrorhandler.hpp>
|
||||
#include <components/translation/translation.hpp>
|
||||
@ -23,13 +23,13 @@ namespace MWDialogue
|
||||
class DialogueManager : public MWBase::DialogueManager
|
||||
{
|
||||
std::map<std::string, ESM::Dialogue> mDialogueMap;
|
||||
std::map<std::string, bool> mKnownTopics;// Those are the topics the player knows.
|
||||
std::set<std::string> mKnownTopics;// Those are the topics the player knows.
|
||||
|
||||
// Modified faction reactions. <Faction1, <Faction2, Difference> >
|
||||
typedef std::map<std::string, std::map<std::string, int> > ModFactionReactionMap;
|
||||
ModFactionReactionMap mChangedFactionReaction;
|
||||
|
||||
std::list<std::string> mActorKnownTopics;
|
||||
std::set<std::string> mActorKnownTopics;
|
||||
|
||||
Translation::Storage& mTranslationDataStorage;
|
||||
MWScript::CompilerContext mCompilerContext;
|
||||
|
Loading…
x
Reference in New Issue
Block a user