Turn CharacterCreatePacket handling into a method.

This commit is contained in:
Arthur Dene Ice 2013-04-22 23:00:44 -07:00
parent 5b3ec4fb7c
commit cc07d511a5
2 changed files with 32 additions and 25 deletions

View File

@ -646,6 +646,36 @@ bool Client::HandleCharacterCreateRequestPacket(const EQApplicationPacket *app)
return true; return true;
} }
bool Client::HandleCharacterCreatePacket(const EQApplicationPacket *app) {
if (GetAccountID() == 0)
{
clog(WORLD__CLIENT_ERR,"Account ID not set; unable to create character.");
return false;
}
else if (app->size != sizeof(CharCreate_Struct))
{
clog(WORLD__CLIENT_ERR,"Wrong size on OP_CharacterCreate. Got: %d, Expected: %d",app->size,sizeof(CharCreate_Struct));
DumpPacket(app);
// the previous behavior was essentially returning true here
// but that seems a bit odd to me.
return true;
}
CharCreate_Struct *cc = (CharCreate_Struct*)app->pBuffer;
if(OPCharCreate(char_name, cc) == false)
{
database.DeleteCharacter(char_name);
EQApplicationPacket *outapp = new EQApplicationPacket(OP_ApproveName, 1);
outapp->pBuffer[0] = 0;
QueuePacket(outapp);
safe_delete(outapp);
}
else
SendCharInfo();
return true;
}
bool Client::HandlePacket(const EQApplicationPacket *app) { bool Client::HandlePacket(const EQApplicationPacket *app) {
const WorldConfig *Config=WorldConfig::get(); const WorldConfig *Config=WorldConfig::get();
EmuOpcode opcode = app->GetOpcode(); EmuOpcode opcode = app->GetOpcode();
@ -700,31 +730,7 @@ bool Client::HandlePacket(const EQApplicationPacket *app) {
} }
case OP_CharacterCreate: //Char create case OP_CharacterCreate: //Char create
{ {
if (GetAccountID() == 0) return HandleCharacterCreatePacket(app);
{
clog(WORLD__CLIENT_ERR,"Account ID not set; unable to create character.");
ret = false;
break;
}
else if (app->size != sizeof(CharCreate_Struct))
{
clog(WORLD__CLIENT_ERR,"Wrong size on OP_CharacterCreate. Got: %d, Expected: %d",app->size,sizeof(CharCreate_Struct));
DumpPacket(app);
break;
}
CharCreate_Struct *cc = (CharCreate_Struct*)app->pBuffer;
if(OPCharCreate(char_name, cc) == false)
{
database.DeleteCharacter(char_name);
EQApplicationPacket *outapp = new EQApplicationPacket(OP_ApproveName, 1);
outapp->pBuffer[0] = 0;
QueuePacket(outapp);
safe_delete(outapp);
}
else
SendCharInfo();
break;
} }
case OP_EnterWorld: // Enter world case OP_EnterWorld: // Enter world
{ {

View File

@ -103,6 +103,7 @@ private:
bool HandleSendLoginInfoPacket(const EQApplicationPacket *app); bool HandleSendLoginInfoPacket(const EQApplicationPacket *app);
bool HandleGenerateRandomNamePacket(const EQApplicationPacket *app); bool HandleGenerateRandomNamePacket(const EQApplicationPacket *app);
bool HandleCharacterCreateRequestPacket(const EQApplicationPacket *app); bool HandleCharacterCreateRequestPacket(const EQApplicationPacket *app);
bool HandleCharacterCreatePacket(const EQApplicationPacket *app);
EQStreamInterface* const eqs; EQStreamInterface* const eqs;
}; };