diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-04-05 23:09:57 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-04-05 23:09:57 +1100 |
commit | 4458d2e85ed7f9e373af290dbe8063a52d2824b5 (patch) | |
tree | fd0421c8150d7dce945a0ce9ec3d3c3585af883c /source/frontend/StarQuestInterface.cpp | |
parent | da8e6d1aa843bb9ae712cc6f7ea7cd03d43862da (diff) |
only decline offered quests if the player explicitly pressed the decline button
Diffstat (limited to 'source/frontend/StarQuestInterface.cpp')
-rw-r--r-- | source/frontend/StarQuestInterface.cpp | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/source/frontend/StarQuestInterface.cpp b/source/frontend/StarQuestInterface.cpp index b862b31..4015004 100644 --- a/source/frontend/StarQuestInterface.cpp +++ b/source/frontend/StarQuestInterface.cpp @@ -293,7 +293,7 @@ void QuestPane::commonSetup(Json config, String bodyText, String const& portrait GuiReader reader; reader.registerCallback("close", [=](Widget*) { close(); }); - reader.registerCallback("btnDecline", [=](Widget*) { close(); }); + reader.registerCallback("btnDecline", [=](Widget*) { decline(); }); reader.registerCallback("btnAccept", [=](Widget*) { accept(); }); reader.construct(config.get("paneLayout"), this); @@ -330,6 +330,10 @@ void QuestPane::close() { dismiss(); } +void QuestPane::decline() { + close(); +} + void QuestPane::accept() { close(); } @@ -348,7 +352,7 @@ PanePtr QuestPane::createTooltip(Vec2I const& screenPosition) { } NewQuestInterface::NewQuestInterface(QuestManagerPtr const& manager, QuestPtr const& quest, PlayerPtr player) - : QuestPane(quest, std::move(player)), m_manager(manager), m_declined(false) { + : QuestPane(quest, std::move(player)), m_manager(manager), m_decision(QuestDecision::Cancelled) { auto assets = Root::singleton().assets(); List<Drawable> objectivePortrait = m_quest->portrait("Objective").value({}); @@ -364,8 +368,7 @@ NewQuestInterface::NewQuestInterface(QuestManagerPtr const& manager, QuestPtr co commonSetup(config, m_quest->text(), "QuestStarted"); - m_declined = m_quest->canBeAbandoned(); - if (!m_declined) { + if (!m_quest->canBeAbandoned()) { if (auto declineButton = fetchChild<ButtonWidget>("btnDecline")) declineButton->disable(); } @@ -392,21 +395,28 @@ NewQuestInterface::NewQuestInterface(QuestManagerPtr const& manager, QuestPtr co } void NewQuestInterface::close() { - m_declined = true; + m_decision = QuestDecision::Cancelled; + dismiss(); +} + +void NewQuestInterface::decline() { + m_decision = QuestDecision::Declined; dismiss(); } void NewQuestInterface::accept() { - m_declined = false; + m_decision = QuestDecision::Accepted; dismiss(); } void NewQuestInterface::dismissed() { QuestPane::dismissed(); - if (m_declined && m_quest->canBeAbandoned()) { + if (m_decision == QuestDecision::Declined && m_quest->canBeAbandoned()) { m_manager->getQuest(m_quest->questId())->declineOffer(); - } else { + } else if (m_decision == QuestDecision::Accepted) { m_manager->getQuest(m_quest->questId())->start(); + } else { + m_manager->getQuest(m_quest->questId())->cancelOffer(); } } |