diff options
author | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2007-08-14 12:48:59 +0000 |
---|---|---|
committer | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2007-08-14 12:48:59 +0000 |
commit | 1a68e441ec6d7d529b5c64bfafac56ae45d3f2fb (patch) | |
tree | 4289eb20d77c7975fef9f64898b8cdd4d3318193 /src/net | |
parent | f048a4dd4add4a710bb15f77eaedad93f625b0c4 (diff) | |
download | mana-1a68e441ec6d7d529b5c64bfafac56ae45d3f2fb.tar.gz mana-1a68e441ec6d7d529b5c64bfafac56ae45d3f2fb.tar.bz2 mana-1a68e441ec6d7d529b5c64bfafac56ae45d3f2fb.tar.xz mana-1a68e441ec6d7d529b5c64bfafac56ae45d3f2fb.zip |
Removed obsolete code. Added support for money received while trading.
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/protocol.h | 2 | ||||
-rw-r--r-- | src/net/tradehandler.cpp | 132 |
2 files changed, 7 insertions, 127 deletions
diff --git a/src/net/protocol.h b/src/net/protocol.h index 1dde518e..3e67e647 100644 --- a/src/net/protocol.h +++ b/src/net/protocol.h @@ -117,6 +117,8 @@ enum { GPMSG_TRADE_ACCEPT = 0x02C7, // - PGMSG_TRADE_ADD_ITEM = 0x02C8, // B slot, B amount GPMSG_TRADE_ADD_ITEM = 0x02C9, // W item id, B amount + PGMSG_TRADE_SET_MONEY = 0x02CA, // L amount + GPMSG_TRADE_SET_MONEY = 0x02CB, // L amount PGMSG_USE_ITEM = 0x0300, // B slot GPMSG_USE_RESPONSE = 0x0301, // B error GPMSG_BEINGS_DAMAGE = 0x0310, // { W being id, W amount }* diff --git a/src/net/tradehandler.cpp b/src/net/tradehandler.cpp index edf1dff7..52553e94 100644 --- a/src/net/tradehandler.cpp +++ b/src/net/tradehandler.cpp @@ -64,6 +64,7 @@ TradeHandler::TradeHandler() GPMSG_TRADE_COMPLETE, GPMSG_TRADE_ACCEPT, GPMSG_TRADE_ADD_ITEM, + GPMSG_TRADE_SET_MONEY, 0 }; handledMessages = _messages; @@ -73,133 +74,6 @@ void TradeHandler::handleMessage(MessageIn &msg) { switch (msg.getId()) { -#if 0 - case SMSG_TRADE_REQUEST: - // If a trade window or request window is already open, send a - // trade cancel to any other trade request. - // - // Note that it would be nice if the server would prevent this - // situation, and that the requesting player would get a - // special message about the player being occupied. - if (!player_node->tradeRequestOk()) - { - player_node->tradeReply(false); - break; - } - - player_node->setTrading(true); - tradePartnerName = msg.readString(24); - ConfirmDialog *dlg; - dlg = new ConfirmDialog("Request for trade", - tradePartnerName + - " wants to trade with you, do you accept?"); - dlg->addActionListener(&listener); - break; - - case SMSG_TRADE_RESPONSE: - switch (msg.readByte()) - { - case 0: // Too far away - chatWindow->chatLog("Trading isn't possible. " - "Trade partner is too far away.", - BY_SERVER); - break; - case 1: // Character doesn't exist - chatWindow->chatLog("Trading isn't possible. " - "Character doesn't exist.", - BY_SERVER); - break; - case 2: // Invite request check failed... - chatWindow->chatLog("Trade cancelled due to an " - "unknown reason.", BY_SERVER); - break; - case 3: // Trade accepted - tradeWindow->reset(); - tradeWindow->setCaption( - "Trade: You and " + tradePartnerName); - tradeWindow->setVisible(true); - break; - case 4: // Trade cancelled - chatWindow->chatLog("Trade cancelled.", BY_SERVER); - tradeWindow->setVisible(false); - player_node->setTrading(false); - break; - default: // Shouldn't happen as well, but to be sure - chatWindow->chatLog("Unhandled trade cancel packet", - BY_SERVER); - break; - } - break; - - case SMSG_TRADE_ITEM_ADD: - { - Sint32 amount = msg.readLong(); - Sint16 type = msg.readShort(); - msg.readByte(); // identified flag - msg.readByte(); // attribute - msg.readByte(); // refine - - // TODO: handle also identified, etc - if (type == 0) { - tradeWindow->addMoney(amount); - } else { - tradeWindow->addItem(type, false, amount, false); - } - } - break; - - case SMSG_TRADE_ITEM_ADD_RESPONSE: - // Trade: New Item add response (was 0x00ea, now 01b1) - { - Item *item = player_node->getInvItem(msg.readShort()); - Sint16 quantity = msg.readShort(); - - switch (msg.readByte()) - { - case 0: - // Successfully added item - if (item->isEquipment() && item->isEquipped()) - { - player_node->unequipItem(item); - } - tradeWindow->addItem(item->getId(), true, quantity, - item->isEquipment()); - item->increaseQuantity(-quantity); - break; - case 1: - // Add item failed - player overweighted - chatWindow->chatLog("Failed adding item. Trade " - "partner is over weighted.", - BY_SERVER); - break; - default: - chatWindow->chatLog("Failed adding item for " - "unknown reason.", BY_SERVER); - break; - } - } - break; - - case SMSG_TRADE_OK: - // 0 means ok from myself, 1 means ok from other; - tradeWindow->receivedOk(msg.readByte() == 0); - break; - - case SMSG_TRADE_CANCEL: - chatWindow->chatLog("Trade canceled.", BY_SERVER); - tradeWindow->setVisible(false); - tradeWindow->reset(); - player_node->setTrading(false); - break; - - case SMSG_TRADE_COMPLETE: - chatWindow->chatLog("Trade completed.", BY_SERVER); - tradeWindow->setVisible(false); - tradeWindow->reset(); - player_node->setTrading(false); - break; -#endif - case GPMSG_TRADE_REQUEST: { Being *being = beingManager->findBeing(msg.readShort()); @@ -223,6 +97,10 @@ void TradeHandler::handleMessage(MessageIn &msg) tradeWindow->addItem(type, false, amount); } break; + case GPMSG_TRADE_SET_MONEY: + tradeWindow->setMoney(msg.readLong()); + break; + case GPMSG_TRADE_START: tradeWindow->reset(); tradeWindow->setCaption("Trading with " + tradePartnerName); |