Core/World: Move some packet code out of World.cpp

--HG--
branch : trunk
This commit is contained in:
silinoron
2010-09-26 12:23:29 -07:00
parent 64378832c8
commit ededb13915
3 changed files with 54 additions and 24 deletions

View File

@@ -0,0 +1,46 @@
/*
* Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "Opcodes.h"
#include "WorldSession.h"
#include "WorldPacket.h"
void WorldSession::SendAuthResponse(uint8 code, bool shortForm, uint32 queuePos)
{
WorldPacket packet(SMSG_AUTH_RESPONSE, 1 + 4 + 1 + 4 + 1 + (shortForm ? 0 : (4 + 1)));
packet << uint8(code);
packet << uint32(0); // BillingTimeRemaining
packet << uint8(0); // BillingPlanFlags
packet << uint32(0); // BillingTimeRested
packet << uint8(Expansion()); // 0 - normal, 1 - TBC, 2 - WOTLK, must be set in database manually for each account
if (!shortForm)
{
packet << uint32(queuePos); // Queue position
packet << uint8(0); // Unk 3.3.0
}
SendPacket(&packet);
}
void WorldSession::SendClientCacheVersion(uint32 version)
{
WorldPacket data(SMSG_CLIENTCACHE_VERSION, 4);
data << uint32(version);
SendPacket(&data);
}

View File

@@ -160,6 +160,9 @@ class WorldSession
void SendSetPhaseShift(uint32 phaseShift);
void SendQueryTimeResponse();
void SendAuthResponse(uint8 code, bool shortForm, uint32 queuePos = 0);
void SendClientCacheVersion(uint32 version);
AccountTypes GetSecurity() const { return _security; }
uint32 GetAccountId() const { return _accountId; }
Player* GetPlayer() const { return _player; }

View File

@@ -218,7 +218,7 @@ void World::AddSession(WorldSession* s)
}
void
World::AddSession_ (WorldSession* s)
World::AddSession_(WorldSession* s)
{
ASSERT (s);
@@ -270,19 +270,11 @@ World::AddSession_ (WorldSession* s)
return;
}
WorldPacket packet(SMSG_AUTH_RESPONSE, 1 + 4 + 1 + 4 + 1);
packet << uint8(AUTH_OK);
packet << uint32(0); // BillingTimeRemaining
packet << uint8(0); // BillingPlanFlags
packet << uint32(0); // BillingTimeRested
packet << uint8(s->Expansion()); // 0 - normal, 1 - TBC, 2 - WOTLK, must be set in database manually for each account
s->SendPacket(&packet);
s->SendAuthResponse(AUTH_OK, true);
s->SendAddonsInfo();
WorldPacket pkt(SMSG_CLIENTCACHE_VERSION, 4);
pkt << uint32(sWorld.getIntConfig(CONFIG_CLIENTCACHE_VERSION));
s->SendPacket(&pkt);
s->SendClientCacheVersion(sWorld.getIntConfig(CONFIG_CLIENTCACHE_VERSION));
s->SendTutorialsData();
@@ -337,15 +329,7 @@ void World::AddQueuedPlayer(WorldSession* sess)
m_QueuedPlayer.push_back(sess);
// The 1st SMSG_AUTH_RESPONSE needs to contain other info too.
WorldPacket packet(SMSG_AUTH_RESPONSE, 1+4+1+4+1+4+1);
packet << uint8(AUTH_WAIT_QUEUE);
packet << uint32(0); // BillingTimeRemaining
packet << uint8(0); // BillingPlanFlags
packet << uint32(0); // BillingTimeRested
packet << uint8(sess->Expansion()); // 0 - normal, 1 - TBC, 2 - WOTLK, must be set in database manually for each account
packet << uint32(GetQueuePos(sess)); // Queue position
packet << uint8(0); // Unk 3.3.0
sess->SendPacket(&packet);
sess->SendAuthResponse(AUTH_WAIT_QUEUE, false, GetQueuePos(sess));
}
bool World::RemoveQueuedPlayer(WorldSession* sess)
@@ -387,10 +371,7 @@ bool World::RemoveQueuedPlayer(WorldSession* sess)
pop_sess->SendAuthWaitQue(0);
pop_sess->SendAddonsInfo();
WorldPacket pkt(SMSG_CLIENTCACHE_VERSION, 4);
pkt << uint32(sWorld.getIntConfig(CONFIG_CLIENTCACHE_VERSION));
pop_sess->SendPacket(&pkt);
pop_sess->SendClientCacheVersion(sWorld.getIntConfig(CONFIG_CLIENTCACHE_VERSION));
pop_sess->SendAccountDataTimes(GLOBAL_CACHE_MASK);
pop_sess->SendTutorialsData();