mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-31 07:06:45 +00:00
Merge branch 'grayscale_dialogue' into 'master'
Fix dialogue issues Closes #6419 and #7047 See merge request OpenMW/openmw!2478
This commit is contained in:
commit
bc1e0d3522
3 changed files with 17 additions and 15 deletions
|
@ -53,14 +53,14 @@ namespace MWBase
|
||||||
|
|
||||||
virtual bool startDialogue(const MWWorld::Ptr& actor, ResponseCallback* callback) = 0;
|
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 addTopic(std::string_view topic) = 0;
|
||||||
|
|
||||||
virtual void addChoice(std::string_view text, int choice) = 0;
|
virtual void addChoice(std::string_view text, int choice) = 0;
|
||||||
virtual const std::vector<std::pair<std::string, int>>& getChoices() = 0;
|
virtual const std::vector<std::pair<std::string, int>>& getChoices() const = 0;
|
||||||
|
|
||||||
virtual bool isGoodbye() = 0;
|
virtual bool isGoodbye() const = 0;
|
||||||
|
|
||||||
virtual void goodbye() = 0;
|
virtual void goodbye() = 0;
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ namespace MWBase
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual std::list<std::string> getAvailableTopics() = 0;
|
virtual std::list<std::string> 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;
|
virtual bool checkServiceRefused(ResponseCallback* callback, ServiceType service = ServiceType::Any) = 0;
|
||||||
|
|
||||||
|
|
|
@ -260,7 +260,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;
|
const MWDialogue::Topic* topicHistory = nullptr;
|
||||||
MWBase::Journal* journal = MWBase::Environment::get().getJournal();
|
MWBase::Journal* journal = MWBase::Environment::get().getJournal();
|
||||||
|
@ -293,8 +293,7 @@ namespace MWDialogue
|
||||||
|
|
||||||
const ESM::Dialogue& dialogue = *dialogues.find(topic);
|
const ESM::Dialogue& dialogue = *dialogues.find(topic);
|
||||||
|
|
||||||
const ESM::DialInfo* info = mChoice == -1 && mActorKnownTopics.count(topic) ? mActorKnownTopics[topic].mInfo
|
const ESM::DialInfo* info = filter.search(dialogue, true);
|
||||||
: filter.search(dialogue, true);
|
|
||||||
|
|
||||||
if (info)
|
if (info)
|
||||||
{
|
{
|
||||||
|
@ -425,9 +424,12 @@ namespace MWDialogue
|
||||||
return keywordList;
|
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)
|
void DialogueManager::keywordSelected(const std::string& keyword, ResponseCallback* callback)
|
||||||
|
@ -526,12 +528,12 @@ namespace MWDialogue
|
||||||
mChoices.emplace_back(text, choice);
|
mChoices.emplace_back(text, choice);
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<std::pair<std::string, int>>& DialogueManager::getChoices()
|
const std::vector<std::pair<std::string, int>>& DialogueManager::getChoices() const
|
||||||
{
|
{
|
||||||
return mChoices;
|
return mChoices;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DialogueManager::isGoodbye()
|
bool DialogueManager::isGoodbye() const
|
||||||
{
|
{
|
||||||
return mGoodbye;
|
return mGoodbye;
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,16 +82,16 @@ namespace MWDialogue
|
||||||
bool startDialogue(const MWWorld::Ptr& actor, ResponseCallback* callback) override;
|
bool startDialogue(const MWWorld::Ptr& actor, ResponseCallback* callback) override;
|
||||||
|
|
||||||
std::list<std::string> getAvailableTopics() override;
|
std::list<std::string> 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 addTopic(std::string_view topic) override;
|
||||||
|
|
||||||
void addChoice(std::string_view text, int choice) override;
|
void addChoice(std::string_view text, int choice) override;
|
||||||
const std::vector<std::pair<std::string, int>>& getChoices() override;
|
const std::vector<std::pair<std::string, int>>& getChoices() const override;
|
||||||
|
|
||||||
bool isGoodbye() override;
|
bool isGoodbye() const override;
|
||||||
|
|
||||||
void goodbye() override;
|
void goodbye() override;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue