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