summaryrefslogtreecommitdiff
path: root/src/net/eathena/buyingstorehandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/eathena/buyingstorehandler.cpp')
-rw-r--r--src/net/eathena/buyingstorehandler.cpp192
1 files changed, 11 insertions, 181 deletions
diff --git a/src/net/eathena/buyingstorehandler.cpp b/src/net/eathena/buyingstorehandler.cpp
index 4fcad8637..9b990fe7e 100644
--- a/src/net/eathena/buyingstorehandler.cpp
+++ b/src/net/eathena/buyingstorehandler.cpp
@@ -40,6 +40,7 @@
#include "net/ea/eaprotocol.h"
+#include "net/eathena/buyingstorerecv.h"
#include "net/eathena/messageout.h"
#include "net/eathena/protocol.h"
@@ -76,43 +77,43 @@ void BuyingStoreHandler::handleMessage(Net::MessageIn &msg)
switch (msg.getId())
{
case SMSG_BUYINGSTORE_OPEN:
- processBuyingStoreOpen(msg);
+ BuyingStoreRecv::processBuyingStoreOpen(msg);
break;
case SMSG_BUYINGSTORE_CREATE_FAILED:
- processBuyingStoreCreateFailed(msg);
+ BuyingStoreRecv::processBuyingStoreCreateFailed(msg);
break;
case SMSG_BUYINGSTORE_OWN_ITEMS:
- processBuyingStoreOwnItems(msg);
+ BuyingStoreRecv::processBuyingStoreOwnItems(msg);
break;
case SMSG_BUYINGSTORE_SHOW_BOARD:
- processBuyingStoreShowBoard(msg);
+ BuyingStoreRecv::processBuyingStoreShowBoard(msg);
break;
case SMSG_BUYINGSTORE_HIDE_BOARD:
- processBuyingStoreHideBoard(msg);
+ BuyingStoreRecv::processBuyingStoreHideBoard(msg);
break;
case SMSG_BUYINGSTORE_ITEMS_LIST:
- processBuyingStoreItemsList(msg);
+ BuyingStoreRecv::processBuyingStoreItemsList(msg);
break;
case SMSG_BUYINGSTORE_SELL_FAILED:
- processBuyingStoreSellFailed(msg);
+ BuyingStoreRecv::processBuyingStoreSellFailed(msg);
break;
case SMSG_BUYINGSTORE_REPORT:
- processBuyingStoreReport(msg);
+ BuyingStoreRecv::processBuyingStoreReport(msg);
break;
case SMSG_BUYINGSTORE_DELETE_ITEM:
- processBuyingStoreDeleteItem(msg);
+ BuyingStoreRecv::processBuyingStoreDeleteItem(msg);
break;
case SMSG_BUYINGSTORE_SELLER_SELL_FAILED:
- processBuyingStoreSellerSellFailed(msg);
+ BuyingStoreRecv::processBuyingStoreSellerSellFailed(msg);
break;
default:
@@ -120,177 +121,6 @@ void BuyingStoreHandler::handleMessage(Net::MessageIn &msg)
}
}
-void BuyingStoreHandler::processBuyingStoreOpen(Net::MessageIn &msg)
-{
- BuyingStoreSlotsListener::distributeEvent(msg.readUInt8("slots"));
-}
-
-void BuyingStoreHandler::processBuyingStoreCreateFailed(Net::MessageIn &msg)
-{
- const int16_t result = msg.readInt16("result");
- const int weight = msg.readInt32("weight");
- switch (result)
- {
- case 1:
- default:
- NotifyManager::notify(NotifyTypes::BUYING_STORE_CREATE_FAILED);
- break;
- case 2:
- NotifyManager::notify(
- NotifyTypes::BUYING_STORE_CREATE_FAILED_WEIGHT,
- weight);
- break;
- case 8:
- NotifyManager::notify(NotifyTypes::BUYING_STORE_CREATE_EMPTY);
- break;
- }
-}
-
-void BuyingStoreHandler::processBuyingStoreOwnItems(Net::MessageIn &msg)
-{
- const int count = (msg.readInt16("len") - 12) / 9;
- msg.readBeingId("account id");
- msg.readInt32("money limit");
- for (int f = 0; f < count; f ++)
- {
- msg.readInt32("price");
- msg.readInt16("amount");
- msg.readUInt8("item type");
- msg.readInt16("item id");
- }
- PlayerInfo::enableVending(true);
- BuyingStoreModeListener::distributeEvent(true);
-}
-
-void BuyingStoreHandler::processBuyingStoreShowBoard(Net::MessageIn &msg)
-{
- const BeingId id = msg.readBeingId("owner id");
- const std::string shopName = msg.readString(80, "shop name");
- Being *const dstBeing = actorManager->findBeing(id);
- if (dstBeing)
- dstBeing->setBuyBoard(shopName);
-}
-
-void BuyingStoreHandler::processBuyingStoreHideBoard(Net::MessageIn &msg)
-{
- const BeingId id = msg.readBeingId("owner id");
- Being *const dstBeing = actorManager->findBeing(id);
- if (dstBeing)
- dstBeing->setBuyBoard(std::string());
- if (dstBeing == localPlayer)
- {
- PlayerInfo::enableVending(false);
- BuyingStoreModeListener::distributeEvent(false);
- }
-}
-
-void BuyingStoreHandler::processBuyingStoreItemsList(Net::MessageIn &msg)
-{
- const int count = (msg.readInt16("len") - 16) / 9;
- const BeingId id = msg.readBeingId("account id");
- const int storeId = msg.readInt32("store id");
- // +++ in future need use it too
- msg.readInt32("money limit");
-
- Being *const dstBeing = actorManager->findBeing(id);
- if (!dstBeing)
- return;
-
- SellDialog *const dialog = CREATEWIDGETR(BuyingStoreSellDialog,
- dstBeing->getId(),
- storeId);
- dialog->setMoney(PlayerInfo::getAttribute(Attributes::MONEY));
- Inventory *const inv = PlayerInfo::getInventory();
- for (int f = 0; f < count; f ++)
- {
- const int price = msg.readInt32("price");
- const int amount = msg.readInt16("amount");
- const int itemType = msg.readUInt8("item type");
- const int itemId = msg.readInt16("item id");
-
- if (!inv)
- continue;
- const Item *const item = inv->findItem(itemId, ItemColor_one);
- if (!item)
- continue;
- // +++ need add colors support
- dialog->addItem(itemId, itemType, ItemColor_one, amount, price);
- }
-}
-
-void BuyingStoreHandler::processBuyingStoreSellFailed(Net::MessageIn &msg)
-{
- const int16_t result = msg.readInt16("result");
- switch (result)
- {
- case 3:
- NotifyManager::notify(
- NotifyTypes::BUYING_STORE_SELL_FAILED_MONEY_LIMIT);
- break;
- case 4:
- NotifyManager::notify(NotifyTypes::BUYING_STORE_SELL_FAILED_EMPTY);
- break;
- default:
- NotifyManager::notify(NotifyTypes::BUYING_STORE_SELL_FAILED);
- break;
- }
-}
-
-void BuyingStoreHandler::processBuyingStoreSellerSellFailed(Net::MessageIn
- &msg)
-{
- const int16_t result = msg.readInt16("result");
- msg.readInt16("item id");
- switch (result)
- {
- case 5:
- NotifyManager::notify(
- NotifyTypes::BUYING_STORE_SELLER_SELL_FAILED_DEAL);
- break;
- case 6:
- NotifyManager::notify(
- NotifyTypes::BUYING_STORE_SELLER_SELL_FAILED_AMOUNT);
- break;
- case 7:
- NotifyManager::notify(
- NotifyTypes::BUYING_STORE_SELLER_SELL_FAILED_BALANCE);
- break;
- default:
- NotifyManager::notify(
- NotifyTypes::BUYING_STORE_SELLER_SELL_FAILED);
- break;
- }
-}
-
-void BuyingStoreHandler::processBuyingStoreReport(Net::MessageIn &msg)
-{
- UNIMPLIMENTEDPACKET;
- msg.readInt16("item id");
- msg.readInt16("amount");
- msg.readInt32("money limit");
-}
-
-void BuyingStoreHandler::processBuyingStoreDeleteItem(Net::MessageIn &msg)
-{
- Inventory *const inventory = localPlayer
- ? PlayerInfo::getInventory() : nullptr;
-
- const int index = msg.readInt16("index") - INVENTORY_OFFSET;
- const int amount = msg.readInt16("amount");
- msg.readInt32("price");
-
- if (inventory)
- {
- if (Item *const item = inventory->getItem(index))
- {
- item->increaseQuantity(-amount);
- if (item->getQuantity() == 0)
- inventory->removeItemAt(index);
- ArrowsListener::distributeEvent();
- }
- }
-}
-
void BuyingStoreHandler::create(const std::string &name,
const int maxMoney,
const bool flag,