diff options
author | Andrei Karas <akaras@inbox.ru> | 2017-02-09 00:05:38 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2017-02-09 00:05:38 +0300 |
commit | b28730a1ecf54cd50b09e5e93dfb454fc46c2300 (patch) | |
tree | 4fd9c679b026eea8c05c308a04187852b5199200 /src/gui/windows/questswindow.cpp | |
parent | 86cb4a51351b8217ede6672703a1b39b91ddb572 (diff) | |
download | plus-b28730a1ecf54cd50b09e5e93dfb454fc46c2300.tar.gz plus-b28730a1ecf54cd50b09e5e93dfb454fc46c2300.tar.bz2 plus-b28730a1ecf54cd50b09e5e93dfb454fc46c2300.tar.xz plus-b28730a1ecf54cd50b09e5e93dfb454fc46c2300.zip |
Open quest in quests window if quest link was clicked.
Diffstat (limited to 'src/gui/windows/questswindow.cpp')
-rw-r--r-- | src/gui/windows/questswindow.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/gui/windows/questswindow.cpp b/src/gui/windows/questswindow.cpp index ab204d1f8..5ffb2fc2f 100644 --- a/src/gui/windows/questswindow.cpp +++ b/src/gui/windows/questswindow.cpp @@ -142,6 +142,7 @@ QuestsWindow::~QuestsWindow() delete2(mItemLinkHandler); mQuestLinks.clear(); + mQuestReverseLinks.clear(); if (mCompleteIcon) { mCompleteIcon->decRef(); @@ -183,6 +184,7 @@ void QuestsWindow::rebuild(const bool playSound) { mQuestsModel->clear(); mQuestLinks.clear(); + mQuestReverseLinks.clear(); StringVect &names = mQuestsModel->getNames(); std::vector<Image*> &images = mQuestsModel->getImages(); std::vector<QuestItem*> complete; @@ -234,6 +236,7 @@ void QuestsWindow::rebuild(const bool playSound) } quest->completeFlag = 1; mQuestLinks.push_back(quest); + mQuestReverseLinks[quest->var] = k; names.push_back(quest->name); if (mCompleteIcon) { @@ -257,6 +260,7 @@ void QuestsWindow::rebuild(const bool playSound) } quest->completeFlag = 0; mQuestLinks.push_back(quest); + mQuestReverseLinks[quest->var] = k; names.push_back(quest->name); if (mIncompleteIcon) { @@ -460,3 +464,18 @@ void QuestsWindow::addEffect(Being *const being) being->addSpecialEffect(effect->effectId); } } + +void QuestsWindow::selectQuest(const int varId) +{ + std::map<int, int>::const_iterator it = mQuestReverseLinks.find(varId); + if (it == mQuestReverseLinks.end()) + return; + if (mVisible == Visible_false) + setVisible(Visible_true); + const int listPos = (*it).second; + if (listPos < 0) + return; + showQuest(mQuestLinks[listPos]); + mQuestsListBox->setSelected(listPos); + requestMoveToTop(); +} |