TrinityCore
TradePackets.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "TradePackets.h"
19
21{
23}
24
26{
27 _worldPacket >> TradeSlot;
28}
29
31{
32 _worldPacket >> Guid;
33}
34
36{
37 _worldPacket >> Type >> Quantity;
38}
39
41{
42 _worldPacket >> Coinage;
43}
44
46{
47 _worldPacket >> TradeSlot >> PackSlot >> ItemSlotInPack;
48}
49
51{
52 _worldPacket.WriteBit(PartnerIsSameBnetAccount);
53 _worldPacket.WriteBits(Status, 5);
54 switch (Status)
55 {
57 _worldPacket.WriteBit(FailureForYou);
58 _worldPacket << int32(BagResult);
59 _worldPacket << int32(ItemID);
60 break;
62 _worldPacket << uint32(ID);
63 break;
65 _worldPacket << Partner;
66 _worldPacket << PartnerAccount;
67 break;
70 _worldPacket << uint8(TradeSlot);
71 break;
74 _worldPacket << int32(CurrencyType);
75 _worldPacket << int32(CurrencyQuantity);
76 break;
77 default:
78 _worldPacket.FlushBits();
79 break;
80 }
81
82 return &_worldPacket;
83}
84
86{
87 buffer << int32(unwrappedTradeItem.EnchantID);
88 buffer << int32(unwrappedTradeItem.OnUseEnchantmentID);
89 buffer << unwrappedTradeItem.Creator;
90 buffer << int32(unwrappedTradeItem.Charges);
91 buffer << uint32(unwrappedTradeItem.MaxDurability);
92 buffer << uint32(unwrappedTradeItem.Durability);
93 buffer.WriteBits(unwrappedTradeItem.Gems.size(), 2);
94 buffer.WriteBit(unwrappedTradeItem.Lock);
95 buffer.FlushBits();
96
97 for (WorldPackets::Item::ItemGemData const& gem : unwrappedTradeItem.Gems)
98 buffer << gem;
99
100 return buffer;
101}
102
104{
105 buffer << uint8(tradeItem.Slot);
106 buffer << uint32(tradeItem.StackCount);
107 buffer << tradeItem.GiftCreator;
108 buffer << tradeItem.Item;
109 buffer.WriteBit(tradeItem.Unwrapped.has_value());
110 buffer.FlushBits();
111 if (tradeItem.Unwrapped)
112 buffer << *tradeItem.Unwrapped;
113
114 return buffer;
115}
116
118{
119 _worldPacket << uint8(WhichPlayer);
120 _worldPacket << uint32(ID);
121 _worldPacket << uint32(ClientStateIndex);
122 _worldPacket << uint32(CurrentStateIndex);
123 _worldPacket << uint64(Gold);
124 _worldPacket << int32(CurrencyType);
125 _worldPacket << int32(CurrencyQuantity);
126 _worldPacket << int32(ProposedEnchantment);
127 _worldPacket << uint32(Items.size());
128
129 for (TradeItem const& item : Items)
130 _worldPacket << item;
131
132 return &_worldPacket;
133}
uint8_t uint8
Definition: Define.h:144
int32_t int32
Definition: Define.h:138
uint64_t uint64
Definition: Define.h:141
uint32_t uint32
Definition: Define.h:142
@ TRADE_STATUS_FAILED
@ TRADE_STATUS_NOT_ON_TAPLIST
@ TRADE_STATUS_NOT_ENOUGH_CURRENCY
@ TRADE_STATUS_PROPOSED
@ TRADE_STATUS_INITIATED
@ TRADE_STATUS_CURRENCY_NOT_TRADABLE
@ TRADE_STATUS_WRONG_REALM
bool WriteBit(bool bit)
Definition: ByteBuffer.h:175
void WriteBits(std::size_t value, int32 bits)
Definition: ByteBuffer.h:203
void FlushBits()
Definition: ByteBuffer.h:155
WorldPacket _worldPacket
Definition: Packet.h:43
WorldPacket const * Write() override
WorldPacket const * Write() override
ByteBuffer & operator<<(ByteBuffer &data, Movement::MonsterSplineFilterKey const &monsterSplineFilterKey)
Optional< UnwrappedTradeItem > Unwrapped
Definition: TradePackets.h:172
std::vector< Item::ItemGemData > Gems
Definition: TradePackets.h:163