diff --git a/apps/openmw/mwbase/dialoguemanager.hpp b/apps/openmw/mwbase/dialoguemanager.hpp index 94543ed955..6228fd238e 100644 --- a/apps/openmw/mwbase/dialoguemanager.hpp +++ b/apps/openmw/mwbase/dialoguemanager.hpp @@ -54,14 +54,14 @@ namespace MWBase virtual bool startDialogue (const MWWorld::Ptr& actor, ResponseCallback* callback) = 0; - virtual bool inJournal (const std::string& topicId, const std::string& infoId) = 0; + virtual bool inJournal (const std::string& topicId, const std::string& infoId) const = 0; virtual void addTopic(std::string_view topic) = 0; virtual void addChoice(std::string_view text,int choice) = 0; - virtual const std::vector >& getChoices() = 0; + virtual const std::vector >& getChoices() const = 0; - virtual bool isGoodbye() = 0; + virtual bool isGoodbye() const = 0; virtual void goodbye() = 0; @@ -90,7 +90,7 @@ namespace MWBase }; virtual std::list getAvailableTopics() = 0; - virtual int getTopicFlag(const std::string&) = 0; + virtual int getTopicFlag(const std::string&) const = 0; virtual bool checkServiceRefused (ResponseCallback* callback, ServiceType service = ServiceType::Any) = 0; diff --git a/apps/openmw/mwdialogue/dialoguemanagerimp.cpp b/apps/openmw/mwdialogue/dialoguemanagerimp.cpp index a8ea3fdf02..6908cc5fd1 100644 --- a/apps/openmw/mwdialogue/dialoguemanagerimp.cpp +++ b/apps/openmw/mwdialogue/dialoguemanagerimp.cpp @@ -257,7 +257,7 @@ namespace MWDialogue } } - bool DialogueManager::inJournal (const std::string& topicId, const std::string& infoId) + bool DialogueManager::inJournal(const std::string& topicId, const std::string& infoId) const { const MWDialogue::Topic *topicHistory = nullptr; MWBase::Journal *journal = MWBase::Environment::get().getJournal(); @@ -290,9 +290,7 @@ namespace MWDialogue const ESM::Dialogue& dialogue = *dialogues.find (topic); - const ESM::DialInfo* info = - mChoice == -1 && mActorKnownTopics.count(topic) ? - mActorKnownTopics[topic].mInfo : filter.search(dialogue, true); + const ESM::DialInfo* info = filter.search(dialogue, true); if (info) { @@ -424,9 +422,12 @@ namespace MWDialogue return keywordList; } - int DialogueManager::getTopicFlag(const std::string& topicId) + int DialogueManager::getTopicFlag(const std::string& topicId) const { - return mActorKnownTopics[topicId].mFlags; + auto known = mActorKnownTopics.find(topicId); + if (known != mActorKnownTopics.end()) + return known->second.mFlags; + return 0; } void DialogueManager::keywordSelected (const std::string& keyword, ResponseCallback* callback) @@ -523,12 +524,12 @@ namespace MWDialogue mChoices.emplace_back(text, choice); } - const std::vector >& DialogueManager::getChoices() + const std::vector>& DialogueManager::getChoices() const { return mChoices; } - bool DialogueManager::isGoodbye() + bool DialogueManager::isGoodbye() const { return mGoodbye; } diff --git a/apps/openmw/mwdialogue/dialoguemanagerimp.hpp b/apps/openmw/mwdialogue/dialoguemanagerimp.hpp index 5d0c5279d2..df6cc4893f 100644 --- a/apps/openmw/mwdialogue/dialoguemanagerimp.hpp +++ b/apps/openmw/mwdialogue/dialoguemanagerimp.hpp @@ -83,16 +83,16 @@ namespace MWDialogue bool startDialogue (const MWWorld::Ptr& actor, ResponseCallback* callback) override; std::list getAvailableTopics() override; - int getTopicFlag(const std::string& topicId) override; + int getTopicFlag(const std::string& topicId) const override; - bool inJournal (const std::string& topicId, const std::string& infoId) override; + bool inJournal (const std::string& topicId, const std::string& infoId) const override; void addTopic(std::string_view topic) override; void addChoice(std::string_view text,int choice) override; - const std::vector >& getChoices() override; + const std::vector >& getChoices() const override; - bool isGoodbye() override; + bool isGoodbye() const override; void goodbye() override;