Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/frontend/StarQuestInterface.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-04-05 23:09:57 +1100
committerKae <80987908+Novaenia@users.noreply.github.com>2024-04-05 23:09:57 +1100
commit4458d2e85ed7f9e373af290dbe8063a52d2824b5 (patch)
treefd0421c8150d7dce945a0ce9ec3d3c3585af883c /source/frontend/StarQuestInterface.cpp
parentda8e6d1aa843bb9ae712cc6f7ea7cd03d43862da (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.cpp26
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();
}
}