Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
PlayerMail.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 "
Mail.h
"
9
#include "
WorldPacket.h
"
10
#include "
WorldSession.h
"
11
12
void
Player::RemoveMail
(
uint32
id
)
13
{
14
for
(PlayerMails::iterator itr =
m_mail
.begin(); itr !=
m_mail
.end(); ++itr)
15
{
16
if
((*itr)->messageID ==
id
)
17
{
18
//do not delete item, because Player::removeMail() is called when returning mail to sender.
19
m_mail
.erase(itr);
20
return
;
21
}
22
}
23
}
24
25
void
Player::SendMailResult
(
uint32
mailId,
MailResponseType
mailAction,
MailResponseResult
mailError,
uint32
equipError,
uint32
item_guid,
uint32
item_count)
26
{
27
WorldPacket
data(
SMSG_SEND_MAIL_RESULT
, 4 + 4 + 4 + 4 + 4 + 4);
28
data <<
uint32
(mailId);
29
data <<
uint32
(equipError);
30
data <<
uint32
(mailError);
31
data <<
uint32
(mailAction);
32
data <<
uint32
(item_guid);
33
data <<
uint32
(item_count);
34
35
GetSession
()->
SendPacket
(&data);
36
}
37
38
void
Player::SendNewMail
()
39
{
40
// deliver undelivered mail
41
WorldPacket
data(
SMSG_RECEIVED_MAIL
, 4);
42
data << float(0);
43
GetSession
()->
SendPacket
(&data);
44
}
45
46
void
Player::UpdateNextMailTimeAndUnreads
()
47
{
48
// calculate next delivery time (min. from non-delivered mails
49
// and recalculate unReadMail
50
time_t cTime = time(NULL);
51
m_nextMailDelivereTime
= 0;
52
unReadMails
= 0;
53
for
(PlayerMails::iterator itr =
m_mail
.begin(); itr !=
m_mail
.end(); ++itr)
54
{
55
if
((*itr)->deliver_time > cTime)
56
{
57
if
(!
m_nextMailDelivereTime
||
m_nextMailDelivereTime
> (*itr)->deliver_time)
58
m_nextMailDelivereTime
= (*itr)->deliver_time;
59
}
60
else
if
(((*itr)->checked &
MAIL_CHECK_MASK_READ
) == 0)
61
++
unReadMails
;
62
}
63
}
64
65
void
Player::AddNewMailDeliverTime
(time_t deliver_time)
66
{
67
if
(deliver_time <= time(NULL))
// ready now
68
{
69
++
unReadMails
;
70
SendNewMail
();
71
}
72
else
// not ready and no have ready mails
73
{
74
if
(!
m_nextMailDelivereTime
||
m_nextMailDelivereTime
> deliver_time)
75
m_nextMailDelivereTime
= deliver_time;
76
}
77
}
78
79
Mail
*
Player::GetMail
(
uint32
id
)
80
{
81
for
(PlayerMails::iterator itr =
m_mail
.begin(); itr !=
m_mail
.end(); ++itr)
82
if
((*itr)->messageID ==
id
)
83
return
(*itr);
84
85
return
NULL;
86
}
87
88
Item
*
Player::GetMItem
(
uint32
id
)
89
{
90
ItemMap::const_iterator itr =
mMitems
.find(
id
);
91
return
itr !=
mMitems
.end() ? itr->second : NULL;
92
}
93
94
void
Player::AddMItem
(
Item
* it)
95
{
96
ASSERT
(it);
97
//ASSERT deleted, because items can be added before loading
98
mMitems
[it->
GetGUIDLow
()] = it;
99
}
100
101
bool
Player::RemoveMItem
(
uint32
id
)
102
{
103
return
mMitems
.erase(
id
) ? true :
false
;
104
}
uint32
std::uint32_t uint32
Definition
Define.h:77
ASSERT
#define ASSERT
Definition
Errors.h:29
Item.h
Mail.h
MAIL_CHECK_MASK_READ
@ MAIL_CHECK_MASK_READ
Definition
Mail.h:35
Player.h
MailResponseType
MailResponseType
Definition
SharedDefines.h:4037
MailResponseResult
MailResponseResult
Definition
SharedDefines.h:4047
WorldPacket.h
WorldSession.h
Item
Definition
Item.h:202
Object::GetGUIDLow
uint32 GetGUIDLow() const
Definition
Object.h:120
Player::AddNewMailDeliverTime
void AddNewMailDeliverTime(time_t deliver_time)
Definition
PlayerMail.cpp:65
Player::mMitems
ItemMap mMitems
Definition
Player.h:2029
Player::UpdateNextMailTimeAndUnreads
void UpdateNextMailTimeAndUnreads()
Definition
PlayerMail.cpp:46
Player::AddMItem
void AddMItem(Item *it)
Definition
PlayerMail.cpp:94
Player::unReadMails
uint8 unReadMails
Definition
Player.h:2024
Player::RemoveMItem
bool RemoveMItem(uint32 id)
Definition
PlayerMail.cpp:101
Player::RemoveMail
void RemoveMail(uint32 id)
Definition
PlayerMail.cpp:12
Player::SendNewMail
void SendNewMail()
Definition
PlayerMail.cpp:38
Player::SendMailResult
void SendMailResult(uint32 mailId, MailResponseType mailAction, MailResponseResult mailError, uint32 equipError=0, uint32 item_guid=0, uint32 item_count=0)
Definition
PlayerMail.cpp:25
Player::GetSession
WorldSession * GetSession() const
Definition
Player.h:2417
Player::m_nextMailDelivereTime
time_t m_nextMailDelivereTime
Definition
Player.h:2025
Player::m_mail
PlayerMails m_mail
Definition
Player.h:3402
Player::GetMItem
Item * GetMItem(uint32 id)
Definition
PlayerMail.cpp:88
Player::GetMail
Mail * GetMail(uint32 id)
Definition
PlayerMail.cpp:79
WorldPacket
Definition
WorldPacket.h:16
WorldSession::SendPacket
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
Definition
WorldSession.cpp:196
SMSG_RECEIVED_MAIL
@ SMSG_RECEIVED_MAIL
Definition
Opcodes.h:931
SMSG_SEND_MAIL_RESULT
@ SMSG_SEND_MAIL_RESULT
Definition
Opcodes.h:946
Mail
Definition
Mail.h:156
src
server
game
Entities
Player
PlayerMail.cpp
Generated on
for Project SkyFire Core by
1.17.0