@ -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 ;
}
}