diff options
author | Jared Adams <jaxad0127@gmail.com> | 2009-05-06 08:22:19 -0600 |
---|---|---|
committer | Jared Adams <jaxad0127@gmail.com> | 2009-05-06 08:22:19 -0600 |
commit | 429e82f91487d48ecb5a1742ec6fb6987a2bc9bd (patch) | |
tree | d3789c7ef91680ba6a6a0eee56664ba3de690d94 /src/net/tmwserv | |
parent | 678c2316e34021bb16ac08eb48186f5570dc691b (diff) | |
download | mana-429e82f91487d48ecb5a1742ec6fb6987a2bc9bd.tar.gz mana-429e82f91487d48ecb5a1742ec6fb6987a2bc9bd.tar.bz2 mana-429e82f91487d48ecb5a1742ec6fb6987a2bc9bd.tar.xz mana-429e82f91487d48ecb5a1742ec6fb6987a2bc9bd.zip |
Remove more inventory handling support #ifdefs
This also fixes some minor bugs and centralizes some logic.
Diffstat (limited to 'src/net/tmwserv')
-rw-r--r-- | src/net/tmwserv/inventoryhandler.cpp | 32 | ||||
-rw-r--r-- | src/net/tmwserv/inventoryhandler.h | 14 |
2 files changed, 35 insertions, 11 deletions
diff --git a/src/net/tmwserv/inventoryhandler.cpp b/src/net/tmwserv/inventoryhandler.cpp index 103c1c51..75886948 100644 --- a/src/net/tmwserv/inventoryhandler.cpp +++ b/src/net/tmwserv/inventoryhandler.cpp @@ -25,6 +25,7 @@ #include "net/tmwserv/protocol.h" #include "net/tmwserv/gameserver/internal.h" +#include "net/tmwserv/gameserver/player.h" #include "net/messagein.h" #include "net/messageout.h" @@ -87,28 +88,28 @@ void InventoryHandler::handleMessage(MessageIn &msg) } } -void InventoryHandler::equipItem(Item *item) +void InventoryHandler::equipItem(const Item *item) { MessageOut msg(PGMSG_EQUIP); msg.writeInt8(item->getInvIndex()); Net::GameServer::connection->send(msg); } -void InventoryHandler::unequipItem(Item *item) +void InventoryHandler::unequipItem(const Item *item) { MessageOut msg(PGMSG_UNEQUIP); msg.writeInt8(item->getInvIndex()); Net::GameServer::connection->send(msg); } -void InventoryHandler::useItem(Item *item) +void InventoryHandler::useItem(const Item *item) { MessageOut msg(PGMSG_USE_ITEM); msg.writeInt8(item->getInvIndex()); Net::GameServer::connection->send(msg); } -void InventoryHandler::dropItem(Item *item, int amount) +void InventoryHandler::dropItem(const Item *item, int amount) { MessageOut msg(PGMSG_DROP); msg.writeInt8(item->getInvIndex()); @@ -116,9 +117,28 @@ void InventoryHandler::dropItem(Item *item, int amount) Net::GameServer::connection->send(msg); } -void InventoryHandler::splitItem(Item *item, int amount) +bool InventoryHandler::canSplit(const Item *item) { - // TODO + return item && !item->isEquipment() && item->getQuantity() > 1; +} + +void InventoryHandler::splitItem(const Item *item, int amount) +{ + int newIndex = player_node->getInventory()->getFreeSlot(); + if (newIndex > Inventory::NO_SLOT_INDEX) + { + Net::GameServer::Player::moveItem( + item->getInvIndex(), newIndex, amount); + } +} + +void InventoryHandler::moveItem(int oldIndex, int newIndex) +{ + if (oldIndex == newIndex) + return; + + // TODO fix me! + Net::GameServer::Player::moveItem(oldIndex, newIndex, -1); } void InventoryHandler::openStorage() diff --git a/src/net/tmwserv/inventoryhandler.h b/src/net/tmwserv/inventoryhandler.h index c70b10c0..9ae37c10 100644 --- a/src/net/tmwserv/inventoryhandler.h +++ b/src/net/tmwserv/inventoryhandler.h @@ -34,15 +34,19 @@ class InventoryHandler : public MessageHandler, Net::InventoryHandler void handleMessage(MessageIn &msg); - void equipItem(Item *item); + void equipItem(const Item *item); - void unequipItem(Item *item); + void unequipItem(const Item *item); - void useItem(Item *item); + void useItem(const Item *item); - void dropItem(Item *item, int amount); + void dropItem(const Item *item, int amount); - void splitItem(Item *item, int amount); + bool canSplit(const Item *item); + + void splitItem(const Item *item, int amount); + + void moveItem(int oldIndex, int newIndex); void openStorage(); |