aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-04-29 00:06:02 +0200
committerShauren <shauren.trinity@gmail.com>2024-04-29 00:06:02 +0200
commitcc9241784491198581a19f3f5502a42d048ea063 (patch)
tree323d98827c0d81464cd767207e8d523448599351 /src/server/game/Server
parent9dcc6c020763e5a79e9d73b364a73b00d63ce734 (diff)
Core/Items: Implemented packets setting up inventory cleanup parameters
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp29
-rw-r--r--src/server/game/Server/Packets/ItemPackets.h55
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp10
-rw-r--r--src/server/game/Server/WorldSession.h10
4 files changed, 99 insertions, 5 deletions
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp
index ff26b92fd15..b4bb558bac6 100644
--- a/src/server/game/Server/Packets/ItemPackets.cpp
+++ b/src/server/game/Server/Packets/ItemPackets.cpp
@@ -373,3 +373,32 @@ void WorldPackets::Item::RemoveNewItem::Read()
{
_worldPacket >> ItemGuid;
}
+
+void WorldPackets::Item::ChangeBagSlotFlag::Read()
+{
+ _worldPacket >> BagIndex;
+ FlagToChange = _worldPacket.read<BagSlotFlags, uint32>();
+ On = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Item::ChangeBankBagSlotFlag::Read()
+{
+ _worldPacket >> BagIndex;
+ FlagToChange = _worldPacket.read<BagSlotFlags, uint32>();
+ On = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Item::SetBackpackAutosortDisabled::Read()
+{
+ Disable = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Item::SetBackpackSellJunkDisabled::Read()
+{
+ Disable = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Item::SetBankAutosortDisabled::Read()
+{
+ Disable = _worldPacket.ReadBit();
+}
diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h
index b57417a5936..f0359be4575 100644
--- a/src/server/game/Server/Packets/ItemPackets.h
+++ b/src/server/game/Server/Packets/ItemPackets.h
@@ -28,6 +28,7 @@
#include <array>
struct VoidStorageItem;
+enum class BagSlotFlags : uint32;
namespace WorldPackets
{
@@ -536,6 +537,60 @@ namespace WorldPackets
WorldPacket const* Write() override { return &_worldPacket; }
};
+
+ class ChangeBagSlotFlag final : public ClientPacket
+ {
+ public:
+ explicit ChangeBagSlotFlag(WorldPacket&& packet) : ClientPacket(CMSG_CHANGE_BAG_SLOT_FLAG, std::move(packet)) { }
+
+ void Read() override;
+
+ uint32 BagIndex = 0;
+ BagSlotFlags FlagToChange = { };
+ bool On = false;
+ };
+
+ class ChangeBankBagSlotFlag final : public ClientPacket
+ {
+ public:
+ explicit ChangeBankBagSlotFlag(WorldPacket&& packet) : ClientPacket(CMSG_CHANGE_BANK_BAG_SLOT_FLAG, std::move(packet)) { }
+
+ void Read() override;
+
+ uint32 BagIndex = 0;
+ BagSlotFlags FlagToChange = { };
+ bool On = false;
+ };
+
+ class SetBackpackAutosortDisabled final : public ClientPacket
+ {
+ public:
+ explicit SetBackpackAutosortDisabled(WorldPacket&& packet) : ClientPacket(CMSG_SET_BACKPACK_AUTOSORT_DISABLED, std::move(packet)) { }
+
+ void Read() override;
+
+ bool Disable = false;
+ };
+
+ class SetBackpackSellJunkDisabled final : public ClientPacket
+ {
+ public:
+ explicit SetBackpackSellJunkDisabled(WorldPacket&& packet) : ClientPacket(CMSG_SET_BACKPACK_SELL_JUNK_DISABLED, std::move(packet)) { }
+
+ void Read() override;
+
+ bool Disable = false;
+ };
+
+ class SetBankAutosortDisabled final : public ClientPacket
+ {
+ public:
+ explicit SetBankAutosortDisabled(WorldPacket&& packet) : ClientPacket(CMSG_SET_BANK_AUTOSORT_DISABLED, std::move(packet)) { }
+
+ void Read() override;
+
+ bool Disable = false;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 3a7141cb45a..e25b2ef6d74 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -274,8 +274,8 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CAST_SPELL, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleCastSpellOpcode);
DEFINE_HANDLER(CMSG_CHALLENGE_MODE_REQUEST_LEADERS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_CHANGE_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_CHANGE_BANK_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_CHANGE_BAG_SLOT_FLAG, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleChangeBagSlotFlag);
+ DEFINE_HANDLER(CMSG_CHANGE_BANK_BAG_SLOT_FLAG, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleChangeBankBagSlotFlag);
DEFINE_HANDLER(CMSG_CHANGE_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHANGE_REALM_TICKET, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlenetChangeRealmTicket);
DEFINE_HANDLER(CMSG_CHANGE_SUB_GROUP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSubGroupOpcode);
@@ -869,9 +869,9 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_ACTIVE_MOVER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActiveMoverOpcode);
DEFINE_HANDLER(CMSG_SET_ADVANCED_COMBAT_LOGGING, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetAdvancedCombatLogging);
DEFINE_HANDLER(CMSG_SET_ASSISTANT_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetAssistantLeaderOpcode);
- DEFINE_HANDLER(CMSG_SET_BACKPACK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_SET_BACKPACK_SELL_JUNK_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_SET_BANK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_SET_BACKPACK_AUTOSORT_DISABLED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetBackpackAutosortDisabled);
+ DEFINE_HANDLER(CMSG_SET_BACKPACK_SELL_JUNK_DISABLED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetBackpackSellJunkDisabled);
+ DEFINE_HANDLER(CMSG_SET_BANK_AUTOSORT_DISABLED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetBankAutosortDisabled);
DEFINE_HANDLER(CMSG_SET_CONTACT_NOTES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetContactNotesOpcode);
DEFINE_HANDLER(CMSG_SET_CURRENCY_FLAGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_DIFFICULTY_ID, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 7b3c8567382..fe569b4a7b2 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -451,6 +451,11 @@ namespace WorldPackets
class SortReagentBankBags;
struct ItemInstance;
class RemoveNewItem;
+ class ChangeBagSlotFlag;
+ class ChangeBankBagSlotFlag;
+ class SetBackpackAutosortDisabled;
+ class SetBackpackSellJunkDisabled;
+ class SetBankAutosortDisabled;
}
namespace LFG
@@ -1499,6 +1504,11 @@ class TC_GAME_API WorldSession
void HandleBuybackItem(WorldPackets::Item::BuyBackItem& packet);
void HandleWrapItem(WorldPackets::Item::WrapItem& packet);
void HandleUseCritterItem(WorldPackets::Item::UseCritterItem& packet);
+ void HandleChangeBagSlotFlag(WorldPackets::Item::ChangeBagSlotFlag const& changeBagSlotFlag);
+ void HandleChangeBankBagSlotFlag(WorldPackets::Item::ChangeBankBagSlotFlag const& changeBankBagSlotFlag);
+ void HandleSetBackpackAutosortDisabled(WorldPackets::Item::SetBackpackAutosortDisabled const& setBackpackAutosortDisabled);
+ void HandleSetBackpackSellJunkDisabled(WorldPackets::Item::SetBackpackSellJunkDisabled const& setBackpackSellJunkDisabled);
+ void HandleSetBankAutosortDisabled(WorldPackets::Item::SetBankAutosortDisabled const& setBankAutosortDisabled);
void HandleAttackSwingOpcode(WorldPackets::Combat::AttackSwing& packet);
void HandleAttackStopOpcode(WorldPackets::Combat::AttackStop& packet);