Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
AuthHandler.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 "
Config.h
"
7
#include "
Opcodes.h
"
8
#include "
WorldPacket.h
"
9
#include "
WorldSession.h
"
10
11
#define PLAYABLE_RACES_COUNT 15
12
#define PLAYABLE_CLASSES_COUNT 11
13
14
uint8
raceExpansion
[
PLAYABLE_RACES_COUNT
][2] =
15
{
16
{
RACE_TAUREN
,
EXPANSION_CLASSIC
},
17
{
RACE_UNDEAD_PLAYER
,
EXPANSION_CLASSIC
},
18
{
RACE_ORC
,
EXPANSION_CLASSIC
},
19
{
RACE_GNOME
,
EXPANSION_CLASSIC
},
20
{
RACE_GOBLIN
,
EXPANSION_CATACLYSM
},
21
{
RACE_HUMAN
,
EXPANSION_CLASSIC
},
22
{
RACE_TROLL
,
EXPANSION_CLASSIC
},
23
{
RACE_PANDAREN_NEUTRAL
,
EXPANSION_MISTS_OF_PANDARIA
},
24
{
RACE_DRAENEI
,
EXPANSION_THE_BURNING_CRUSADE
},
25
{
RACE_WORGEN
,
EXPANSION_CATACLYSM
},
26
{
RACE_BLOODELF
,
EXPANSION_THE_BURNING_CRUSADE
},
27
{
RACE_NIGHTELF
,
EXPANSION_CLASSIC
},
28
{
RACE_DWARF
,
EXPANSION_CLASSIC
},
29
{
RACE_PANDAREN_ALLIANCE
,
EXPANSION_MISTS_OF_PANDARIA
},
30
{
RACE_PANDAREN_HORDE
,
EXPANSION_MISTS_OF_PANDARIA
},
31
};
32
33
uint8
classExpansion
[
PLAYABLE_CLASSES_COUNT
][2] =
34
{
35
{
CLASS_MONK
,
EXPANSION_MISTS_OF_PANDARIA
},
36
{
CLASS_WARRIOR
,
EXPANSION_CLASSIC
},
37
{
CLASS_PALADIN
,
EXPANSION_CLASSIC
},
38
{
CLASS_HUNTER
,
EXPANSION_CLASSIC
},
39
{
CLASS_ROGUE
,
EXPANSION_CLASSIC
},
40
{
CLASS_PRIEST
,
EXPANSION_CLASSIC
},
41
{
CLASS_SHAMAN
,
EXPANSION_CLASSIC
},
42
{
CLASS_MAGE
,
EXPANSION_CLASSIC
},
43
{
CLASS_WARLOCK
,
EXPANSION_CLASSIC
},
44
{
CLASS_DRUID
,
EXPANSION_CLASSIC
},
45
{
CLASS_DEATH_KNIGHT
,
EXPANSION_WRATH_OF_THE_LICH_KING
},
46
};
47
48
void
WorldSession::SendAuthResponse
(
ResponseCodes
code,
bool
queued,
uint32
queuePos)
49
{
50
SF_LOG_DEBUG
(
"network"
,
"SMSG_AUTH_RESPONSE"
);
51
WorldPacket
packet(
SMSG_AUTH_RESPONSE
, 113);
52
53
packet.
WriteBit
(code ==
ResponseCodes::AUTH_OK
);
54
55
if
(code ==
ResponseCodes::AUTH_OK
)
56
{
57
packet.
WriteBits
(
realmNameStore
.size(), 21);
// Send current realmId
58
59
for
(std::map<uint32, std::string>::const_iterator itr =
realmNameStore
.begin(); itr !=
realmNameStore
.end(); ++itr)
60
{
61
packet.
WriteBits
(itr->second.size(), 8);
62
std::string normalized = itr->second;
63
normalized.erase(std::remove_if(normalized.begin(), normalized.end(), ::isspace), normalized.end());
64
packet.
WriteBits
(normalized.size(), 8);
65
packet.
WriteBit
(itr->first ==
GetVirtualRealmID
());
// Home realm
66
}
67
68
packet.
WriteBits
(
PLAYABLE_CLASSES_COUNT
, 23);
69
packet.
WriteBits
(0, 21);
70
packet.
WriteBit
(0);
71
packet.
WriteBit
(0);
72
packet.
WriteBit
(0);
73
packet.
WriteBit
(0);
74
packet.
WriteBits
(
PLAYABLE_RACES_COUNT
, 23);
75
packet.
WriteBit
(0);
76
}
77
78
packet.
WriteBit
(queued);
79
80
if
(queued)
81
packet.
WriteBit
(1);
82
83
packet.
FlushBits
();
84
85
if
(queued)
86
packet <<
uint32
(queuePos);
87
88
if
(code ==
ResponseCodes::AUTH_OK
)
89
{
90
for
(std::map<uint32, std::string>::const_iterator itr =
realmNameStore
.begin(); itr !=
realmNameStore
.end(); ++itr)
91
{
92
packet <<
uint32
(itr->first);
93
packet.
WriteString
(itr->second);
94
std::string normalized = itr->second;
95
normalized.erase(std::remove_if(normalized.begin(), normalized.end(), ::isspace), normalized.end());
96
packet.
WriteString
(normalized);
97
}
98
99
for
(
int
i = 0; i <
PLAYABLE_RACES_COUNT
; i++)
100
{
101
packet <<
uint8
(
raceExpansion
[i][1]);
102
packet <<
uint8
(
raceExpansion
[i][0]);
103
}
104
105
for
(
int
i = 0; i <
PLAYABLE_CLASSES_COUNT
; i++)
106
{
107
packet <<
uint8
(
classExpansion
[i][1]);
108
packet <<
uint8
(
classExpansion
[i][0]);
109
}
110
111
packet <<
uint32
(0);
112
packet <<
uint8
(
Expansion
());
// Active Expansion
113
packet <<
uint32
(0);
114
packet <<
uint32
(0);
// "Your playtime expires in %u minutes." Gossip Code Box Warning, 1 = 1min
115
packet <<
uint8
(
Expansion
());
// Server Expansion
116
packet <<
uint32
(0);
117
packet <<
uint32
(0);
118
packet <<
uint32
(0);
119
}
120
121
packet <<
uint8
(code);
122
123
SendPacket
(&packet);
124
}
125
126
void
WorldSession::SendClientCacheVersion
(
uint32
version)
127
{
128
WorldPacket
data(
SMSG_CLIENTCACHE_VERSION
, 4);
129
data <<
uint32
(version);
130
SendPacket
(&data);
131
}
132
133
void
WorldSession::SendFeatureSystemStatusGlueScreen
()
134
{
135
WorldPacket
data(
SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN
);
136
data.
WriteBit
(
true
);
// show ingame shop icon
137
data.
WriteBit
(
false
);
// ingame shop parental control
138
data.
WriteBit
(
true
);
// ingame shop status
139
data.
FlushBits
();
140
141
SendPacket
(&data);
142
}
PLAYABLE_CLASSES_COUNT
#define PLAYABLE_CLASSES_COUNT
Definition
AuthHandler.cpp:12
classExpansion
uint8 classExpansion[PLAYABLE_CLASSES_COUNT][2]
Definition
AuthHandler.cpp:33
PLAYABLE_RACES_COUNT
#define PLAYABLE_RACES_COUNT
Definition
AuthHandler.cpp:11
raceExpansion
uint8 raceExpansion[PLAYABLE_RACES_COUNT][2]
Definition
AuthHandler.cpp:14
Config.h
uint8
std::uint8_t uint8
Definition
Define.h:79
uint32
std::uint32_t uint32
Definition
Define.h:77
SF_LOG_DEBUG
#define SF_LOG_DEBUG(filterType__,...)
Definition
Log.h:134
Opcodes.h
ResponseCodes
ResponseCodes
Definition
SharedDefines.h:3864
ResponseCodes::AUTH_OK
@ AUTH_OK
Definition
SharedDefines.h:3879
CLASS_HUNTER
@ CLASS_HUNTER
Definition
SharedDefines.h:142
CLASS_DRUID
@ CLASS_DRUID
Definition
SharedDefines.h:150
CLASS_SHAMAN
@ CLASS_SHAMAN
Definition
SharedDefines.h:146
CLASS_MONK
@ CLASS_MONK
Definition
SharedDefines.h:149
CLASS_PRIEST
@ CLASS_PRIEST
Definition
SharedDefines.h:144
CLASS_WARRIOR
@ CLASS_WARRIOR
Definition
SharedDefines.h:140
CLASS_WARLOCK
@ CLASS_WARLOCK
Definition
SharedDefines.h:148
CLASS_MAGE
@ CLASS_MAGE
Definition
SharedDefines.h:147
CLASS_DEATH_KNIGHT
@ CLASS_DEATH_KNIGHT
Definition
SharedDefines.h:145
CLASS_PALADIN
@ CLASS_PALADIN
Definition
SharedDefines.h:141
CLASS_ROGUE
@ CLASS_ROGUE
Definition
SharedDefines.h:143
RACE_TROLL
@ RACE_TROLL
Definition
SharedDefines.h:95
RACE_UNDEAD_PLAYER
@ RACE_UNDEAD_PLAYER
Definition
SharedDefines.h:92
RACE_PANDAREN_NEUTRAL
@ RACE_PANDAREN_NEUTRAL
Definition
SharedDefines.h:111
RACE_ORC
@ RACE_ORC
Definition
SharedDefines.h:89
RACE_DRAENEI
@ RACE_DRAENEI
Definition
SharedDefines.h:98
RACE_NIGHTELF
@ RACE_NIGHTELF
Definition
SharedDefines.h:91
RACE_BLOODELF
@ RACE_BLOODELF
Definition
SharedDefines.h:97
RACE_DWARF
@ RACE_DWARF
Definition
SharedDefines.h:90
RACE_GNOME
@ RACE_GNOME
Definition
SharedDefines.h:94
RACE_GOBLIN
@ RACE_GOBLIN
Definition
SharedDefines.h:96
RACE_HUMAN
@ RACE_HUMAN
Definition
SharedDefines.h:88
RACE_WORGEN
@ RACE_WORGEN
Definition
SharedDefines.h:109
RACE_PANDAREN_ALLIANCE
@ RACE_PANDAREN_ALLIANCE
Definition
SharedDefines.h:112
RACE_PANDAREN_HORDE
@ RACE_PANDAREN_HORDE
Definition
SharedDefines.h:113
RACE_TAUREN
@ RACE_TAUREN
Definition
SharedDefines.h:93
EXPANSION_CLASSIC
@ EXPANSION_CLASSIC
Definition
SharedDefines.h:68
EXPANSION_THE_BURNING_CRUSADE
@ EXPANSION_THE_BURNING_CRUSADE
Definition
SharedDefines.h:69
EXPANSION_MISTS_OF_PANDARIA
@ EXPANSION_MISTS_OF_PANDARIA
Definition
SharedDefines.h:72
EXPANSION_CATACLYSM
@ EXPANSION_CATACLYSM
Definition
SharedDefines.h:71
EXPANSION_WRATH_OF_THE_LICH_KING
@ EXPANSION_WRATH_OF_THE_LICH_KING
Definition
SharedDefines.h:70
WorldPacket.h
WorldSession.h
ByteBuffer::WriteBit
bool WriteBit(uint32 bit)
Definition
ByteBuffer.h:164
ByteBuffer::WriteString
void WriteString(std::string const &str)
Definition
ByteBuffer.h:578
ByteBuffer::WriteBits
void WriteBits(T value, size_t bits)
Definition
ByteBuffer.h:192
ByteBuffer::FlushBits
void FlushBits()
Definition
ByteBuffer.h:154
WorldPacket
Definition
WorldPacket.h:16
WorldSession::Expansion
uint8 Expansion() const
Definition
WorldSession.h:303
WorldSession::SendClientCacheVersion
void SendClientCacheVersion(uint32 version)
Definition
AuthHandler.cpp:126
WorldSession::GetVirtualRealmID
uint32 GetVirtualRealmID() const
Definition
WorldSession.h:291
WorldSession::SendPacket
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
Definition
WorldSession.cpp:196
WorldSession::SendAuthResponse
void SendAuthResponse(ResponseCodes code, bool queued, uint32 queuePos=0)
Definition
AuthHandler.cpp:48
WorldSession::SendFeatureSystemStatusGlueScreen
void SendFeatureSystemStatusGlueScreen()
Definition
AuthHandler.cpp:133
SMSG_CLIENTCACHE_VERSION
@ SMSG_CLIENTCACHE_VERSION
Definition
Opcodes.h:617
SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN
@ SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN
Definition
Opcodes.h:655
SMSG_AUTH_RESPONSE
@ SMSG_AUTH_RESPONSE
Definition
Opcodes.h:534
realmNameStore
RealmNameMap realmNameStore
Definition
Main.cpp:72
src
server
game
Handlers
AuthHandler.cpp
Generated on
for Project SkyFire Core by
1.17.0