forked from mirror/openmw-tes3mp
Don't reset history when ForceGreeting is used and a dialogue window was already open for the same actor (Fixes #1423)
This commit is contained in:
parent
1ed3f092c1
commit
a90245147b
3 changed files with 14 additions and 6 deletions
|
@ -140,7 +140,11 @@ namespace MWDialogue
|
||||||
mActorKnownTopics.clear();
|
mActorKnownTopics.clear();
|
||||||
|
|
||||||
MWGui::DialogueWindow* win = MWBase::Environment::get().getWindowManager()->getDialogueWindow();
|
MWGui::DialogueWindow* win = MWBase::Environment::get().getWindowManager()->getDialogueWindow();
|
||||||
win->startDialogue(actor, actor.getClass().getName (actor));
|
|
||||||
|
// If the dialogue window was already open, keep the existing history
|
||||||
|
bool resetHistory = (!MWBase::Environment::get().getWindowManager()->containsMode(MWGui::GM_Dialogue));
|
||||||
|
|
||||||
|
win->startDialogue(actor, actor.getClass().getName (actor), resetHistory);
|
||||||
|
|
||||||
//setup the list of topics known by the actor. Topics who are also on the knownTopics list will be added to the GUI
|
//setup the list of topics known by the actor. Topics who are also on the knownTopics list will be added to the GUI
|
||||||
updateTopics();
|
updateTopics();
|
||||||
|
|
|
@ -366,10 +366,11 @@ namespace MWGui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogueWindow::startDialogue(MWWorld::Ptr actor, std::string npcName)
|
void DialogueWindow::startDialogue(MWWorld::Ptr actor, std::string npcName, bool resetHistory)
|
||||||
{
|
{
|
||||||
mGoodbye = false;
|
mGoodbye = false;
|
||||||
mEnabled = true;
|
mEnabled = true;
|
||||||
|
bool sameActor = (mPtr == actor);
|
||||||
mPtr = actor;
|
mPtr = actor;
|
||||||
mTopicsList->setEnabled(true);
|
mTopicsList->setEnabled(true);
|
||||||
setTitle(npcName);
|
setTitle(npcName);
|
||||||
|
@ -378,9 +379,12 @@ namespace MWGui
|
||||||
|
|
||||||
mTopicsList->clear();
|
mTopicsList->clear();
|
||||||
|
|
||||||
for (std::vector<DialogueText*>::iterator it = mHistoryContents.begin(); it != mHistoryContents.end(); ++it)
|
if (resetHistory || !sameActor)
|
||||||
delete (*it);
|
{
|
||||||
mHistoryContents.clear();
|
for (std::vector<DialogueText*>::iterator it = mHistoryContents.begin(); it != mHistoryContents.end(); ++it)
|
||||||
|
delete (*it);
|
||||||
|
mHistoryContents.clear();
|
||||||
|
}
|
||||||
|
|
||||||
for (std::vector<Link*>::iterator it = mLinks.begin(); it != mLinks.end(); ++it)
|
for (std::vector<Link*>::iterator it = mLinks.begin(); it != mLinks.end(); ++it)
|
||||||
delete (*it);
|
delete (*it);
|
||||||
|
|
|
@ -111,7 +111,7 @@ namespace MWGui
|
||||||
|
|
||||||
void notifyLinkClicked (TypesetBook::InteractiveId link);
|
void notifyLinkClicked (TypesetBook::InteractiveId link);
|
||||||
|
|
||||||
void startDialogue(MWWorld::Ptr actor, std::string npcName);
|
void startDialogue(MWWorld::Ptr actor, std::string npcName, bool resetHistory);
|
||||||
void setKeywords(std::list<std::string> keyWord);
|
void setKeywords(std::list<std::string> keyWord);
|
||||||
|
|
||||||
void addResponse (const std::string& text, const std::string& title="");
|
void addResponse (const std::string& text, const std::string& title="");
|
||||||
|
|
Loading…
Reference in a new issue