AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
TradeData Class Reference

#include "TradeData.h"

Public Member Functions

 TradeData (Player *player, Player *trader)
 
PlayerGetTrader () const
 
TradeDataGetTraderData () const
 
ItemGetItem (TradeSlots slot) const
 
bool HasItem (ObjectGuid itemGuid) const
 
TradeSlots GetTradeSlotForItem (ObjectGuid itemGuid) const
 
void SetItem (TradeSlots slot, Item *item)
 
uint32 GetSpell () const
 
void SetSpell (uint32 spell_id, Item *castItem=nullptr)
 
ItemGetSpellCastItem () const
 
bool HasSpellCastItem () const
 
uint32 GetMoney () const
 
void SetMoney (uint32 money)
 
bool IsAccepted () const
 
void SetAccepted (bool state, bool forTrader=false)
 
bool IsInAcceptProcess () const
 
void SetInAcceptProcess (bool state)
 

Private Member Functions

void Update (bool for_trader=true)
 

Private Attributes

Player_player
 
Player_trader
 
bool _accepted
 
bool m_acceptProccess
 
uint32 _money
 
uint32 m_spell
 
ObjectGuid m_spellCastItem
 
ObjectGuid m_items [TRADE_SLOT_COUNT]
 

Detailed Description

Constructor & Destructor Documentation

◆ TradeData()

TradeData::TradeData ( Player player,
Player trader 
)
inline
38 :
39 _player(player), _trader(trader), _accepted(false), m_acceptProccess(false), _money(0), m_spell(0) { }
bool m_acceptProccess
Definition TradeData.h:72
uint32 m_spell
Definition TradeData.h:76
Player * _player
Definition TradeData.h:68
bool _accepted
Definition TradeData.h:71
uint32 _money
Definition TradeData.h:74
Player * _trader
Definition TradeData.h:69

Member Function Documentation

◆ GetItem()

Item * TradeData::GetItem ( TradeSlots  slot) const
27{
28 return m_items[slot] ? _player->GetItemByGuid(m_items[slot]) : nullptr;
29}
Item * GetItemByGuid(ObjectGuid guid) const
Definition PlayerStorage.cpp:409
ObjectGuid m_items[TRADE_SLOT_COUNT]
Definition TradeData.h:79

References _player, Player::GetItemByGuid(), and m_items.

Referenced by WorldSession::HandleAcceptTradeOpcode(), WorldSession::SendUpdateTrade(), and setAcceptTradeMode().

◆ GetMoney()

uint32 TradeData::GetMoney ( ) const
inline

◆ GetSpell()

uint32 TradeData::GetSpell ( ) const
inline

◆ GetSpellCastItem()

Item * TradeData::GetSpellCastItem ( ) const
50{
52}
ObjectGuid m_spellCastItem
Definition TradeData.h:77

References _player, Player::GetItemByGuid(), and m_spellCastItem.

Referenced by WorldSession::HandleAcceptTradeOpcode().

◆ GetTrader()

◆ GetTraderData()

TradeData * TradeData::GetTraderData ( ) const
22{
23 return _trader->GetTradeData();
24}
TradeData * GetTradeData() const
Definition Player.h:1393

References _trader, and Player::GetTradeData().

Referenced by WorldSession::SendUpdateTrade(), SetItem(), SetMoney(), and SetSpell().

◆ GetTradeSlotForItem()

TradeSlots TradeData::GetTradeSlotForItem ( ObjectGuid  itemGuid) const
41{
42 for (uint8 i = 0; i < TRADE_SLOT_COUNT; ++i)
43 if (m_items[i] == itemGuid)
44 return TradeSlots(i);
45
46 return TRADE_SLOT_INVALID;
47}
std::uint8_t uint8
Definition Define.h:109
TradeSlots
Definition TradeData.h:28
@ TRADE_SLOT_COUNT
Definition TradeData.h:29
@ TRADE_SLOT_INVALID
Definition TradeData.h:32

References m_items, TRADE_SLOT_COUNT, and TRADE_SLOT_INVALID.

◆ HasItem()

bool TradeData::HasItem ( ObjectGuid  itemGuid) const
32{
33 for (uint8 i = 0; i < TRADE_SLOT_COUNT; ++i)
34 if (m_items[i] == itemGuid)
35 return true;
36
37 return false;
38}

References m_items, and TRADE_SLOT_COUNT.

Referenced by WorldSession::HandleSetTradeItemOpcode().

◆ HasSpellCastItem()

bool TradeData::HasSpellCastItem ( ) const
inline

◆ IsAccepted()

bool TradeData::IsAccepted ( ) const
inline
58{ return _accepted; }

Referenced by WorldSession::HandleAcceptTradeOpcode().

◆ IsInAcceptProcess()

bool TradeData::IsInAcceptProcess ( ) const
inline
61{ return m_acceptProccess; }

◆ SetAccepted()

void TradeData::SetAccepted ( bool  state,
bool  forTrader = false 
)
124{
125 _accepted = state;
126
127 if (!state)
128 {
129 TradeStatusInfo info;
131 if (forTrader)
133 else
135 }
136}
@ TRADE_STATUS_BACK_TO_TRADE
Definition SharedDefines.h:3815
WorldSession * GetSession() const
Definition Player.h:2019
void SendTradeStatus(TradeStatusInfo const &info)
Definition TradeHandler.cpp:33
Definition Player.h:1060
TradeStatus Status
Definition Player.h:1063

References _accepted, _player, _trader, Player::GetSession(), WorldSession::SendTradeStatus(), TradeStatusInfo::Status, and TRADE_STATUS_BACK_TO_TRADE.

Referenced by WorldSession::HandleAcceptTradeOpcode(), WorldSession::HandleUnacceptTradeOpcode(), SetItem(), SetMoney(), and SetSpell().

◆ SetInAcceptProcess()

void TradeData::SetInAcceptProcess ( bool  state)
inline
62{ m_acceptProccess = state; }

Referenced by clearAcceptTradeMode(), and setAcceptTradeMode().

◆ SetItem()

void TradeData::SetItem ( TradeSlots  slot,
Item item 
)
55{
56 ObjectGuid itemGuid = item ? item->GetGUID() : ObjectGuid::Empty;
57
58 if (m_items[slot] == itemGuid)
59 return;
60
61 m_items[slot] = itemGuid;
62
63 SetAccepted(false);
64 GetTraderData()->SetAccepted(false);
65
66 Update();
67
68 // need remove possible trader spell applied to changed item
69 if (slot == TRADE_SLOT_NONTRADED)
71
72 // need remove possible player spell applied (possible move reagent)
73 SetSpell(0);
74}
@ TRADE_SLOT_NONTRADED
Definition TradeData.h:31
Definition ObjectGuid.h:118
static ObjectGuid const Empty
Definition ObjectGuid.h:120
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
void SetSpell(uint32 spell_id, Item *castItem=nullptr)
Definition TradeData.cpp:76
void SetAccepted(bool state, bool forTrader=false)
Definition TradeData.cpp:123
TradeData * GetTraderData() const
Definition TradeData.cpp:21
void Update(bool for_trader=true)
Definition TradeData.cpp:115

References ObjectGuid::Empty, Object::GetGUID(), GetTraderData(), m_items, SetAccepted(), SetSpell(), TRADE_SLOT_NONTRADED, and Update().

Referenced by WorldSession::HandleClearTradeItemOpcode(), and WorldSession::HandleSetTradeItemOpcode().

◆ SetMoney()

void TradeData::SetMoney ( uint32  money)
94{
95 if (_money == money)
96 return;
97
98 if (!_player->HasEnoughMoney(money))
99 {
100 TradeStatusInfo info;
104 return;
105 }
106
107 _money = money;
108
109 SetAccepted(false);
110 GetTraderData()->SetAccepted(false);
111
112 Update(true);
113}
@ EQUIP_ERR_NOT_ENOUGH_MONEY
Definition Item.h:76
@ TRADE_STATUS_CLOSE_WINDOW
Definition SharedDefines.h:3820
bool HasEnoughMoney(uint32 amount) const
Definition Player.h:1625
InventoryResult Result
Definition Player.h:1065

References _money, _player, EQUIP_ERR_NOT_ENOUGH_MONEY, Player::GetSession(), GetTraderData(), Player::HasEnoughMoney(), TradeStatusInfo::Result, WorldSession::SendTradeStatus(), SetAccepted(), TradeStatusInfo::Status, TRADE_STATUS_CLOSE_WINDOW, and Update().

Referenced by WorldSession::HandleSetTradeGoldOpcode().

◆ SetSpell()

void TradeData::SetSpell ( uint32  spell_id,
Item castItem = nullptr 
)
77{
78 ObjectGuid itemGuid = castItem ? castItem->GetGUID() : ObjectGuid::Empty;
79
80 if (m_spell == spell_id && m_spellCastItem == itemGuid)
81 return;
82
83 m_spell = spell_id;
84 m_spellCastItem = itemGuid;
85
86 SetAccepted(false);
87 GetTraderData()->SetAccepted(false);
88
89 Update(true); // send spell info to item owner
90 Update(false); // send spell info to caster self
91}

References ObjectGuid::Empty, Object::GetGUID(), GetTraderData(), m_spell, m_spellCastItem, SetAccepted(), and Update().

Referenced by WorldSession::HandleAcceptTradeOpcode(), and SetItem().

◆ Update()

void TradeData::Update ( bool  for_trader = true)
private
116{
117 if (forTarget)
118 _trader->GetSession()->SendUpdateTrade(true); // player state for trader
119 else
120 _player->GetSession()->SendUpdateTrade(false); // player state for player
121}
void SendUpdateTrade(bool trader_data=true)
Definition TradeHandler.cpp:72

References _player, _trader, Player::GetSession(), and WorldSession::SendUpdateTrade().

Referenced by SetItem(), SetMoney(), and SetSpell().

Member Data Documentation

◆ _accepted

bool TradeData::_accepted
private

Referenced by SetAccepted().

◆ _money

uint32 TradeData::_money
private

Referenced by SetMoney().

◆ _player

Player* TradeData::_player
private

◆ _trader

Player* TradeData::_trader
private

Referenced by GetTraderData(), SetAccepted(), and Update().

◆ m_acceptProccess

bool TradeData::m_acceptProccess
private

◆ m_items

ObjectGuid TradeData::m_items[TRADE_SLOT_COUNT]
private

◆ m_spell

uint32 TradeData::m_spell
private

Referenced by SetSpell().

◆ m_spellCastItem

ObjectGuid TradeData::m_spellCastItem
private

Referenced by GetSpellCastItem(), and SetSpell().


The documentation for this class was generated from the following files: