From 77a52b24c88dd113a74ff55cecb63a7214193fdf Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 15 Feb 2015 15:08:47 +0300 Subject: Show buy or sell in player context menu based on enabled shop types. --- src/being/being.cpp | 10 ++++++++++ src/being/being.h | 5 +++-- src/gui/popups/popupmenu.cpp | 17 ++++++++++++----- 3 files changed, 25 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/being/being.cpp b/src/being/being.cpp index 97fad3c59..4a3e4d0cb 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -3551,3 +3551,13 @@ void Being::enableShop(const bool b) mShop = b; updateName(); } + +bool Being::isBuyShopEnabled() const +{ + return mShop && (!serverFeatures->haveVending() || !mBuyBoard.empty()); +} + +bool Being::isSellShopEnabled() const +{ + return mShop && (!serverFeatures->haveVending() || !mSellBoard.empty()); +} diff --git a/src/being/being.h b/src/being/being.h index a6b588919..12b197a23 100644 --- a/src/being/being.h +++ b/src/being/being.h @@ -761,8 +761,9 @@ class Being notfinal : public ActorSprite, void setAdvanced(const bool n) { mAdvanced = n; addToCache(); } - bool isShopEnabled() const A_WARN_UNUSED - { return mShop; } + bool isBuyShopEnabled() const A_WARN_UNUSED; + + bool isSellShopEnabled() const A_WARN_UNUSED; void enableShop(const bool b); diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp index 188c8ae9a..d596f1a50 100644 --- a/src/gui/popups/popupmenu.cpp +++ b/src/gui/popups/popupmenu.cpp @@ -2366,20 +2366,27 @@ void PopupMenu::addBuySell(const Being *const being) if (player_relations.getDefault() & PlayerRelation::TRADE) { mBrowserBox->addRow("##3---"); - if (being->isShopEnabled()) + const bool haveVending = serverFeatures->haveVending(); + if (being->isSellShopEnabled()) { // TRANSLATORS: popup menu item // TRANSLATORS: buy item mBrowserBox->addRow("/buy 'NAME'", _("Buy")); - // TRANSLATORS: popup menu item - // TRANSLATORS: sell item - mBrowserBox->addRow("/sell 'NAME'", _("Sell")); } - else + else if (!haveVending) { // TRANSLATORS: popup menu item // TRANSLATORS: buy item mBrowserBox->addRow("/buy 'NAME'", _("Buy (?)")); + } + if (being->isBuyShopEnabled()) + { + // TRANSLATORS: popup menu item + // TRANSLATORS: sell item + mBrowserBox->addRow("/sell 'NAME'", _("Sell")); + } + else if (!haveVending) + { // TRANSLATORS: popup menu item // TRANSLATORS: sell item mBrowserBox->addRow("/sell 'NAME'", _("Sell (?)")); -- cgit v1.2.3-60-g2f50