diff options
author | Jan-Fabian Humann <malastare@gmx.net> | 2005-04-06 14:46:50 +0000 |
---|---|---|
committer | Jan-Fabian Humann <malastare@gmx.net> | 2005-04-06 14:46:50 +0000 |
commit | ccf84aa701dc938e7e390339c8ca5c2c7e5a21c5 (patch) | |
tree | 53c4f5ff30a981f0f946ab66f4b3c90dc730dd28 /src/gui | |
parent | c74357ef532d9c90ec1605048b9602da78e7928c (diff) | |
download | mana-ccf84aa701dc938e7e390339c8ca5c2c7e5a21c5.tar.gz mana-ccf84aa701dc938e7e390339c8ca5c2c7e5a21c5.tar.bz2 mana-ccf84aa701dc938e7e390339c8ca5c2c7e5a21c5.tar.xz mana-ccf84aa701dc938e7e390339c8ca5c2c7e5a21c5.zip |
update for trade: now on right click
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/requesttrade.cpp | 100 | ||||
-rw-r--r-- | src/gui/requesttrade.h | 69 | ||||
-rw-r--r-- | src/gui/trade.cpp | 22 | ||||
-rw-r--r-- | src/gui/trade.h | 2 |
4 files changed, 190 insertions, 3 deletions
diff --git a/src/gui/requesttrade.cpp b/src/gui/requesttrade.cpp new file mode 100644 index 00000000..431f6922 --- /dev/null +++ b/src/gui/requesttrade.cpp @@ -0,0 +1,100 @@ +/* + * The Mana World + * Copyright 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World 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. + * + * The Mana World 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 The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id$ + */ + +#include "requesttrade.h" +#include "button.h" +#include "../game.h" +#include "../net/network.h" + +RequestTradeDialog::RequestTradeDialog(): + Window("Request for Trade") +{ + nameLabel[0] = new gcn::Label(""); + nameLabel[1] = new gcn::Label(""); + acceptButton = new Button("Accept"); + cancelButton = new Button("Cancel"); + + setContentSize(260, 75); + + nameLabel[0]->setPosition(5, 30); + nameLabel[1]->setPosition(5, 40); + cancelButton->setPosition( + 260 - 5 - cancelButton->getWidth(), + 75 - 5 - cancelButton->getHeight()); + acceptButton->setPosition( + cancelButton->getX() - 5 - acceptButton->getWidth(), + cancelButton->getY()); + + acceptButton->setEventId("accept"); + cancelButton->setEventId("cancel"); + + acceptButton->addActionListener(this); + cancelButton->addActionListener(this); + + add(nameLabel[0]); + add(nameLabel[1]); + add(acceptButton); + add(cancelButton); + + setLocationRelativeTo(getParent()); +} + +RequestTradeDialog::~RequestTradeDialog() +{ + delete acceptButton; + delete cancelButton; + for (int i = 0; i < 2; i++) { + delete nameLabel[i]; + } +} + +void RequestTradeDialog::request(const char *name) +{ + std::stringstream cap; + std::stringstream captwo; + cap << name << " wants to trade with you."; + captwo << "Do you want to accept?"; + nameLabel[0]->setCaption(cap.str()); + nameLabel[0]->adjustSize(); + nameLabel[1]->setCaption(captwo.str()); + nameLabel[1]->adjustSize(); + setVisible(true); +} + +void RequestTradeDialog::action(const std::string& eventId) +{ + if (eventId == "accept") { + // Send the selected index back to the server + WFIFOW(0) = net_w_value(0x00e6); + WFIFOB(2) = net_b_value(3); + WFIFOSET(3); + setVisible(false); + } + else if (eventId == "cancel") { + // 0xff packet means cancel + WFIFOW(0) = net_w_value(0x00e6); + WFIFOB(2) = net_b_value(4); + WFIFOSET(3); + setVisible(false); + } +} diff --git a/src/gui/requesttrade.h b/src/gui/requesttrade.h new file mode 100644 index 00000000..cb4362c4 --- /dev/null +++ b/src/gui/requesttrade.h @@ -0,0 +1,69 @@ +/* + * The Mana World + * Copyright 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World 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. + * + * The Mana World 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 The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id$ + */ + +#ifndef _TMW_REQUESTTRADE_H +#define _TMW_REQUESTTRADE_H + +#include <guichan.hpp> +#include <vector> +#include <string> +#include <sstream> +#include "window.h" + +/** + * The request trade dialog. + * + * \ingroup GUI + */ +class RequestTradeDialog : public Window, public gcn::ActionListener +{ + public: + /** + * Constructor. + * + * @see Window::Window + */ + RequestTradeDialog(); + + /** + * Destructor. + */ + ~RequestTradeDialog(); + + /** + * Changes caption and brings window to the top + */ + void request(const char *name); + + /** + * Called when receiving actions from the widgets. + */ + void action(const std::string& eventId); + + private: + gcn::Button *acceptButton; + gcn::Button *cancelButton; + gcn::Label *nameLabel[1]; +}; + +#endif diff --git a/src/gui/trade.cpp b/src/gui/trade.cpp index 43bbd79d..66394ddb 100644 --- a/src/gui/trade.cpp +++ b/src/gui/trade.cpp @@ -34,13 +34,19 @@ TradeWindow::TradeWindow(): Window("Trade: You") { setContentSize(322, 130); + addButton = new Button("Add"); + cancelButton = new Button("Cancel"); addButton->setPosition(2, 105); + cancelButton->setPosition(200, 105); addButton->setEventId("add"); + cancelButton->setEventId("cancel"); addButton->addActionListener(this); + cancelButton->addActionListener(this); add(addButton); + add(cancelButton); nameLabel = new gcn::Label("Other one"); nameLabel->setPosition(2, 45); @@ -62,6 +68,7 @@ TradeWindow::TradeWindow(): TradeWindow::~TradeWindow() { delete addButton; + delete cancelButton; delete nameLabel; } @@ -149,8 +156,15 @@ void TradeWindow::action(const std::string &eventId) if (i >= 0) { printf("successfull\n"); - addItem(i, inventoryWindow->items->getId(), true, inventoryWindow->items->getQuantity(), inventoryWindow->items->isEquipment(inventoryWindow->items->getIndex())); - inventoryWindow->changeQuantity(inventoryWindow->items->getIndex(), 0); + //addItem(i, inventoryWindow->items->getId(), true, inventoryWindow->items->getQuantity(), inventoryWindow->items->isEquipment(inventoryWindow->items->getIndex())); + + WFIFOW(0) = net_w_value(0x00e8); + WFIFOW(2) = net_w_value(inventoryWindow->items->getIndex()); + WFIFOL(4) = net_l_value(inventoryWindow->items->getQuantity()); + WFIFOSET(8); + while ((out_size > 0)) flush(); + + //inventoryWindow->changeQuantity(inventoryWindow->items->getIndex(), 0); } else { printf("not successfull\n"); @@ -158,6 +172,10 @@ void TradeWindow::action(const std::string &eventId) } + } else if (eventId == "cancel") { + WFIFOW(0) = net_w_value(0x00ed); + WFIFOSET(2); + while ((out_size > 0)) flush(); } //if(selectedItem >= 0 && selectedItem <= INVENTORY_SIZE) { diff --git a/src/gui/trade.h b/src/gui/trade.h index 3b863e64..e6b31678 100644 --- a/src/gui/trade.h +++ b/src/gui/trade.h @@ -83,7 +83,7 @@ class TradeWindow : public Window, gcn::ActionListener { private: gcn::Label *nameLabel; - gcn::Button *addButton; + gcn::Button *addButton, *cancelButton; }; #endif |