diff options
-rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 21 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ItemPackets.h | 32 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 6 |
4 files changed, 63 insertions, 4 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 7f9bfd09e3d..3f7aae6f91a 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -1247,3 +1247,24 @@ void WorldSession::HandleUpgradeItem(WorldPackets::Item::UpgradeItem& upgradeIte item->SetState(ITEM_CHANGED, _player); _player->ModifyCurrency(itemUpgradeEntry->CurrencyID, -int32(itemUpgradeEntry->CurrencyCost)); } + +void WorldSession::HandleSortBags(WorldPackets::Item::SortBags& /*sortBags*/) +{ + // TODO: Implement sorting + // Placeholder to prevent completely locking out bags clientside + SendPacket(WorldPackets::Item::SortBagsResult().Write()); +} + +void WorldSession::HandleSortBankBags(WorldPackets::Item::SortBankBags& /*sortBankBags*/) +{ + // TODO: Implement sorting + // Placeholder to prevent completely locking out bags clientside + SendPacket(WorldPackets::Item::SortBagsResult().Write()); +} + +void WorldSession::HandleSortReagentBankBags(WorldPackets::Item::SortReagentBankBags& /*sortReagentBankBags*/) +{ + // TODO: Implement sorting + // Placeholder to prevent completely locking out bags clientside + SendPacket(WorldPackets::Item::SortBagsResult().Write()); +} diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h index 1589f89a251..b07b8d565e7 100644 --- a/src/server/game/Server/Packets/ItemPackets.h +++ b/src/server/game/Server/Packets/ItemPackets.h @@ -491,6 +491,38 @@ namespace WorldPackets ObjectGuid Item; }; + + class SortBags final : public ClientPacket + { + public: + SortBags(WorldPacket&& packet) : ClientPacket(CMSG_SORT_BAGS, std::move(packet)) { } + + void Read() override { } + }; + + class SortBankBags final : public ClientPacket + { + public: + SortBankBags(WorldPacket&& packet) : ClientPacket(CMSG_SORT_BANK_BAGS, std::move(packet)) { } + + void Read() override { } + }; + + class SortReagentBankBags final : public ClientPacket + { + public: + SortReagentBankBags(WorldPacket&& packet) : ClientPacket(CMSG_SORT_REAGENT_BANK_BAGS, std::move(packet)) { } + + void Read() override { } + }; + + class SortBagsResult final : public ServerPacket + { + public: + SortBagsResult() : ServerPacket(SMSG_SORT_BAGS_RESULT, 0) { } + + WorldPacket const* Write() override { return &_worldPacket; } + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 7c339a17497..d004a5fe2a3 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -781,9 +781,9 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_SIGN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSignPetition); DEFINE_HANDLER(CMSG_SILENCE_PARTY_TALKER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SOCKET_GEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSocketGems); - DEFINE_HANDLER(CMSG_SORT_BAGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_SORT_BANK_BAGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_SORT_REAGENT_BANK_BAGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_SORT_BAGS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSortBags); + DEFINE_HANDLER(CMSG_SORT_BANK_BAGS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSortBankBags); + DEFINE_HANDLER(CMSG_SORT_REAGENT_BANK_BAGS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSortReagentBankBags); DEFINE_HANDLER(CMSG_SPELL_CLICK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSpellClick); DEFINE_HANDLER(CMSG_SPIRIT_HEALER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSpiritHealerActivate); DEFINE_HANDLER(CMSG_SPLIT_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSplitItemOpcode); @@ -1703,7 +1703,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SOCKET_GEMS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SOCKET_GEMS_FAILURE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SOR_START_EXPERIENCE_INCOMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SORT_BAGS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SORT_BAGS_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECIALIZATION_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECIAL_MOUNT_ANIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPEC_INVOLUNTARILY_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index b86429098bf..beb8945ebe9 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -393,6 +393,9 @@ namespace WorldPackets class UseCritterItem; class UpgradeItem; class SocketGems; + class SortBags; + class SortBankBags; + class SortReagentBankBags; struct ItemInstance; } @@ -1556,6 +1559,9 @@ class TC_GAME_API WorldSession // Socket gem void HandleSocketGems(WorldPackets::Item::SocketGems& socketGems); + void HandleSortBags(WorldPackets::Item::SortBags& sortBags); + void HandleSortBankBags(WorldPackets::Item::SortBankBags& sortBankBags); + void HandleSortReagentBankBags(WorldPackets::Item::SortReagentBankBags& sortReagentBankBags); void HandleCancelTempEnchantmentOpcode(WorldPackets::Item::CancelTempEnchantment& cancelTempEnchantment); |