summaryrefslogtreecommitdiff
path: root/src/gui/trade.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-05-12 01:09:56 +0300
committerAndrei Karas <akaras@inbox.ru>2011-05-12 01:09:56 +0300
commit8edbf5c3879850bb8546a1cb96ba713ef35c1d41 (patch)
treee65efd1cf38a831b333816b8b3c0efb03044f467 /src/gui/trade.cpp
parent5969220af9a8d9ff1958cf64cbbaa9bbf911e8d2 (diff)
downloadplus-8edbf5c3879850bb8546a1cb96ba713ef35c1d41.tar.gz
plus-8edbf5c3879850bb8546a1cb96ba713ef35c1d41.tar.bz2
plus-8edbf5c3879850bb8546a1cb96ba713ef35c1d41.tar.xz
plus-8edbf5c3879850bb8546a1cb96ba713ef35c1d41.zip
Renaming login, sell, trade (cpp, h) files to correct names.
Diffstat (limited to 'src/gui/trade.cpp')
-rw-r--r--src/gui/trade.cpp422
1 files changed, 0 insertions, 422 deletions
diff --git a/src/gui/trade.cpp b/src/gui/trade.cpp
deleted file mode 100644
index 38aaecb83..000000000
--- a/src/gui/trade.cpp
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2004-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/trade.h"
-
-#include "inventory.h"
-#include "item.h"
-#include "localplayer.h"
-#include "playerinfo.h"
-#include "units.h"
-
-#include "gui/inventorywindow.h"
-#include "gui/itemamountwindow.h"
-#include "gui/setup.h"
-#include "gui/theme.h"
-
-#include "gui/widgets/button.h"
-#include "gui/widgets/chattab.h"
-#include "gui/widgets/itemcontainer.h"
-#include "gui/widgets/label.h"
-#include "gui/widgets/scrollarea.h"
-#include "gui/widgets/textfield.h"
-#include "gui/widgets/layout.h"
-
-#include "net/inventoryhandler.h"
-#include "net/net.h"
-#include "net/tradehandler.h"
-
-#include "utils/gettext.h"
-#include "utils/stringutils.h"
-
-#include <guichan/font.hpp>
-
-#include <sstream>
-
-#define CAPTION_PROPOSE _("Propose trade")
-#define CAPTION_CONFIRMED _("Confirmed. Waiting...")
-#define CAPTION_ACCEPT _("Agree trade")
-#define CAPTION_ACCEPTED _("Agreed. Waiting...")
-
-TradeWindow::TradeWindow():
- Window(_("Trade: You")),
- mMyInventory(new Inventory(Inventory::TRADE)),
- mPartnerInventory(new Inventory(Inventory::TRADE)),
- mStatus(PROPOSING),
- mAutoAddItem(0),
- mAutoAddToNick(""),
- mGotMoney(0),
- mAutoMoney(0)
-{
- logger->log1("TradeWindow::TradeWindow nick");
-
- setWindowName("Trade");
- setResizable(true);
- setCloseButton(true);
- setDefaultSize(386, 180, ImageRect::CENTER);
- setMinWidth(386);
- setMinHeight(180);
-
- if (setupWindow)
- setupWindow->registerWindowForReset(this);
-
- std::string longestName = getFont()->getWidth(_("OK")) >
- getFont()->getWidth(_("Trade")) ?
- _("OK") : _("Trade");
-
- mAddButton = new Button(_("Add"), "add", this);
- mOkButton = new Button("", "", this); // Will be filled in later
-
- int width = std::max(mOkButton->getFont()->getWidth(CAPTION_PROPOSE),
- mOkButton->getFont()->getWidth(CAPTION_CONFIRMED));
- width = std::max(width, mOkButton->getFont()->getWidth(CAPTION_ACCEPT));
- width = std::max(width, mOkButton->getFont()->getWidth(CAPTION_ACCEPTED));
-
- mOkButton->setWidth(8 + width);
-
- mMyItemContainer = new ItemContainer(mMyInventory.get());
- mMyItemContainer->addSelectionListener(this);
-
- ScrollArea *myScroll = new ScrollArea(mMyItemContainer);
- myScroll->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER);
-
- mPartnerItemContainer = new ItemContainer(mPartnerInventory.get());
- mPartnerItemContainer->addSelectionListener(this);
-
- ScrollArea *partnerScroll = new ScrollArea(mPartnerItemContainer);
- partnerScroll->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER);
-
- mMoneyLabel = new Label(strprintf(_("You get %s"), ""));
- gcn::Label *mMoneyLabel2 = new Label(_("You give:"));
-
- mMoneyField = new TextField;
- mMoneyField->setWidth(40);
- mMoneyChangeButton = new Button(_("Change"), "money", this);
-
- place(1, 0, mMoneyLabel);
- place(0, 1, myScroll).setPadding(3);
- place(1, 1, partnerScroll).setPadding(3);
- ContainerPlacer place;
- place = getPlacer(0, 0);
- place(0, 0, mMoneyLabel2);
- place(1, 0, mMoneyField, 2);
- place(3, 0, mMoneyChangeButton).setHAlign(LayoutCell::LEFT);
- place = getPlacer(0, 2);
- place(0, 0, mAddButton);
- place(1, 0, mOkButton);
- Layout &layout = getLayout();
- layout.extend(0, 2, 2, 1);
- layout.setRowHeight(1, Layout::AUTO_SET);
- layout.setRowHeight(2, 0);
- layout.setColWidth(0, Layout::AUTO_SET);
- layout.setColWidth(1, Layout::AUTO_SET);
-
- loadWindowState();
-
- reset();
-}
-
-TradeWindow::~TradeWindow()
-{
-}
-
-void TradeWindow::setMoney(int amount)
-{
- if (amount < mGotMoney)
- mMoneyLabel->setForegroundColor(Theme::getThemeColor(Theme::WARNING));
- mMoneyLabel->setForegroundColor(Theme::getThemeColor(Theme::TEXT));
-
- mGotMoney = amount;
- mMoneyLabel->setCaption(strprintf(_("You get %s"),
- Units::formatCurrency(amount).c_str()));
- mMoneyLabel->adjustSize();
-}
-
-void TradeWindow::addItem(int id, bool own, int quantity,
- int refine, unsigned char color)
-{
- if (own)
- mMyInventory->addItem(id, quantity, refine, color);
- else
- mPartnerInventory->addItem(id, quantity, refine, color);
-}
-
-void TradeWindow::addItem2(int id, bool own, int quantity,
- int refine, unsigned char color, bool equipment)
-{
- if (own)
- mMyInventory->addItem(id, quantity, refine, color, equipment);
- else
- mPartnerInventory->addItem(id, quantity, refine, color, equipment);
-}
-
-void TradeWindow::changeQuantity(int index, bool own, int quantity)
-{
- if (own)
- {
- if (mMyInventory->getItem(index))
- mMyInventory->getItem(index)->setQuantity(quantity);
- }
- else
- {
- if (mPartnerInventory->getItem(index))
- mPartnerInventory->getItem(index)->setQuantity(quantity);
- }
-}
-
-void TradeWindow::increaseQuantity(int index, bool own, int quantity)
-{
- if (own)
- {
- if (mMyInventory->getItem(index))
- mMyInventory->getItem(index)->increaseQuantity(quantity);
- }
- else
- {
- if (mPartnerInventory->getItem(index))
- mPartnerInventory->getItem(index)->increaseQuantity(quantity);
- }
-}
-
-void TradeWindow::reset()
-{
- mMyInventory->clear();
- mPartnerInventory->clear();
- mOkOther = false;
- mOkMe = false;
- setMoney(0);
- mMoneyField->setEnabled(true);
- mMoneyField->setText("");
- mMoneyLabel->setForegroundColor(Theme::getThemeColor(Theme::TEXT));
- mAddButton->setEnabled(true);
- mMoneyChangeButton->setEnabled(true);
- mGotMoney = 0;
- setStatus(PREPARING);
-}
-
-void TradeWindow::receivedOk(bool own)
-{
- if (own)
- mOkMe = true;
- else
- mOkOther = true;
-
- if (mOkMe && mOkOther)
- {
- //mOkMe = false;
- //mOkOther = false;
- setStatus(ACCEPTING);
- }
-}
-
-void TradeWindow::tradeItem(Item *item, int quantity)
-{
- Net::getTradeHandler()->addItem(item, quantity);
-}
-
-void TradeWindow::valueChanged(const gcn::SelectionEvent &event)
-{
- if (!mMyItemContainer || !mPartnerItemContainer)
- return;
-
- /* If an item is selected in one container, make sure no item is selected
- * in the other container.
- */
- if (event.getSource() == mMyItemContainer &&
- mMyItemContainer->getSelectedItem())
- {
- mPartnerItemContainer->selectNone();
- }
- else if (mPartnerItemContainer->getSelectedItem())
- {
- mMyItemContainer->selectNone();
- }
-}
-
-void TradeWindow::setStatus(Status s)
-{
- if (s == mStatus)
- return;
- mStatus = s;
-
- switch (s)
- {
- case PREPARING:
- mOkButton->setCaption(CAPTION_PROPOSE);
- mOkButton->setActionEventId("ok");
- break;
- case PROPOSING:
- mOkButton->setCaption(CAPTION_CONFIRMED);
- mOkButton->setActionEventId("");
- break;
- case ACCEPTING:
- mOkButton->setCaption(CAPTION_ACCEPT);
- mOkButton->setActionEventId("trade");
- break;
- case ACCEPTED:
- mOkButton->setCaption(CAPTION_ACCEPTED);
- mOkButton->setActionEventId("");
- break;
- default:
- break;
- }
-
- mOkButton->setEnabled((s != PROPOSING && s != ACCEPTED));
-}
-
-void TradeWindow::action(const gcn::ActionEvent &event)
-{
- if (!inventoryWindow)
- return;
-
- Item *item = inventoryWindow->getSelectedItem();
-
- if (event.getId() == "add")
- {
- if (mStatus != PREPARING)
- return;
-
- if (!inventoryWindow->isVisible())
- {
- inventoryWindow->setVisible(true);
- return;
- }
-
- if (!item)
- return;
-
- if (mMyInventory->getFreeSlot() == -1)
- return;
-
- if (mMyInventory->contains(item))
- {
- if (localChatTab)
- {
- localChatTab->chatLog(_("Failed adding item. You can not "
- "overlap one kind of item on the window."), BY_SERVER);
- }
- return;
- }
-
- // Choose amount of items to trade
- ItemAmountWindow::showWindow(ItemAmountWindow::TradeAdd, this, item);
-
- setStatus(PREPARING);
- }
- else if (event.getId() == "cancel")
- {
- setVisible(false);
- reset();
- PlayerInfo::setTrading(false);
-
- Net::getTradeHandler()->cancel();
- }
- else if (event.getId() == "ok")
- {
- mMoneyField->setEnabled(false);
- mAddButton->setEnabled(false);
- mMoneyChangeButton->setEnabled(false);
- receivedOk(true);
- setStatus(PROPOSING);
- Net::getTradeHandler()->confirm();
- }
- else if (event.getId() == "trade")
- {
- receivedOk(true);
- setStatus(ACCEPTED);
- Net::getTradeHandler()->finish();
- }
- else if (event.getId() == "money")
- {
- if (mStatus != PREPARING)
- return;
-
- int v = atoi(mMoneyField->getText().c_str());
- int curMoney = PlayerInfo::getAttribute(MONEY);
- if (v > curMoney)
- {
- if (localChatTab)
- {
- localChatTab->chatLog(_("You don't have enough money."),
- BY_SERVER);
- }
- v = curMoney;
- }
- Net::getTradeHandler()->setMoney(v);
- mMoneyField->setText(strprintf("%d", v));
- }
-}
-
-void TradeWindow::close()
-{
- Net::getTradeHandler()->cancel();
- clear();
-}
-
-void TradeWindow::clear()
-{
- mAutoAddItem = 0;
- mAutoAddToNick = "";
- mAutoMoney = 0;
- mAutoAddAmount = 0;
- mGotMoney = 0;
- mMoneyLabel->setForegroundColor(Theme::getThemeColor(Theme::TEXT));
-}
-
-void TradeWindow::addAutoItem(std::string nick, Item* item, int amount)
-{
- mAutoAddToNick = nick;
- mAutoAddItem = item;
- mAutoAddAmount = amount;
-}
-
-void TradeWindow::addAutoMoney(std::string nick, int money)
-{
- mAutoAddToNick = nick;
- mAutoMoney = money;
-}
-
-void TradeWindow::initTrade(std::string nick)
-{
- if (!player_node)
- return;
-
- if (!mAutoAddToNick.empty() && mAutoAddToNick == nick)
- {
- if (mAutoAddItem && mAutoAddItem->getQuantity())
- {
- Inventory *inv = PlayerInfo::getInventory();
- if (inv)
- {
- Item *item = inv->findItem(mAutoAddItem->getId());
- if (item)
- tradeItem(item, mAutoAddItem->getQuantity());
- }
- }
- if (mAutoMoney)
- {
- Net::getTradeHandler()->setMoney(mAutoMoney);
- mMoneyField->setText(strprintf("%d", mAutoMoney));
- }
- }
- clear();
-}