Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
PlayerTrade.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "Player.h"
7#include "Item.h"
8#include "WorldSession.h"
9
10void Player::TradeCancel(bool sendback, TradeStatus status /*= TRADE_STATUS_CANCELLED*/)
11{
12 if (m_trade)
13 {
14 Player* trader = m_trade->GetTrader();
15
16 // send yellow "Trade canceled" message to both traders
17 if (sendback)
18 GetSession()->SendCancelTrade(status);
19
20 trader->GetSession()->SendCancelTrade(status);
21
22 // cleanup
23 delete m_trade;
24 m_trade = NULL;
25 delete trader->m_trade;
26 trader->m_trade = NULL;
27 }
28}
29
31{
32 if (m_itemSoulboundTradeable.empty())
33 return;
34
35 // also checks for garbage data
36 for (ItemDurationList::iterator itr = m_itemSoulboundTradeable.begin(); itr != m_itemSoulboundTradeable.end();)
37 {
38 ASSERT(*itr);
39 if ((*itr)->GetOwnerGUID() != GetGUID())
40 {
41 m_itemSoulboundTradeable.erase(itr++);
42 continue;
43 }
44 if ((*itr)->CheckSoulboundTradeExpire())
45 {
46 m_itemSoulboundTradeable.erase(itr++);
47 continue;
48 }
49 ++itr;
50 }
51}
52
54{
55 m_itemSoulboundTradeable.push_back(item);
56}
57
60{
61 m_itemSoulboundTradeable.remove(item);
62}
#define ASSERT
Definition Errors.h:29
TradeStatus
Definition Item.h:202
uint64 GetGUID() const
Definition Object.h:119
ItemDurationList m_itemSoulboundTradeable
Definition Player.h:3423
TradeData * m_trade
Definition Player.h:3437
void TradeCancel(bool sendback, TradeStatus status=TRADE_STATUS_CANCELLED)
void UpdateSoulboundTradeItems()
void RemoveTradeableItem(Item *item)
WorldSession * GetSession() const
Definition Player.h:2417
void AddTradeableItem(Item *item)
Player(WorldSession *session)
Definition Player.cpp:507
void SendCancelTrade(TradeStatus status)