From e487a9ae24cdf44055d6b366bf4c5e18d09f6097 Mon Sep 17 00:00:00 2001 From: Tahir Akhlaq Date: Mon, 10 Sep 2018 15:01:13 +0100 Subject: [PATCH] moved examine handling out of client trigger switch and into its own function --- .../Network/Handlers/ClientTriggerHandler.cpp | 69 +++++++++++-------- 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp index 4537c6b2..c4bdeeeb 100644 --- a/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp @@ -42,6 +42,43 @@ using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; using namespace Core::Network::ActorControl; +void examineHandler( Core::Entity::Player& player, uint32_t targetId ) +{ + using namespace Core; + + auto packet = makeZonePacket< FFXIVIpcExamine >( targetId, player.getId() ); + auto pSession = g_fw.get< Core::ServerZone >()->getSession( targetId ); + if( pSession ) + { + auto pPlayer = pSession->getPlayer(); + if( pPlayer ) + { + // todo: this packet needs mapping out + strcpy( packet->data().name, pPlayer->getName().c_str() ); + packet->data().classJob = static_cast< uint8_t >( pPlayer->getClass() ); + packet->data().level = pPlayer->getLevel(); + packet->data().unkFlag1 = 4; + packet->data().unkFlag2 = 1; + packet->data().titleId = pPlayer->getTitle(); + //packet->data().grandCompany = 1; + //packet->data().grandCompanyRank = 2; + memcpy( packet->data().look, pPlayer->getLookArray(), sizeof( packet->data().look ) ); + for( auto i = 0; i < Common::GearSetSlot::SoulCrystal + 1; ++i) + { + auto pItem = pPlayer->getItemAt( Common::InventoryType::GearSet0, i ); + if( pItem ) + { + auto& entry = packet->data().entries[i]; + entry.catalogId = pItem->getId(); + //entry.appearanceCatalogId = pItem->getGlamourId() + // todo: glamour/materia etc. + } + } + } + } + player.queuePacket( packet ); +} + void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { @@ -123,36 +160,8 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR case ClientTriggerType::Examine: { uint32_t targetId = param11; - auto packet = makeZonePacket< FFXIVIpcExamine >( targetId, player.getId() ); - auto pSession = g_fw.get< Core::ServerZone >()->getSession( targetId ); - if( pSession ) - { - auto pPlayer = pSession->getPlayer(); - if( pPlayer ) - { - // todo: this packet needs mapping out - strcpy( packet->data().name, pPlayer->getName().c_str() ); - packet->data().classJob = static_cast< uint8_t >( pPlayer->getClass() ); - packet->data().level = pPlayer->getLevel(); - packet->data().unkFlag1 = 4; - packet->data().unkFlag2 = 1; - //packet->data().grandCompany = 1; - //packet->data().grandCompanyRank = 2; - memcpy( packet->data().look, pPlayer->getLookArray(), sizeof( packet->data().look ) ); - for( auto i = 0; i < Common::GearSetSlot::SoulCrystal + 1; ++i) - { - auto pItem = pPlayer->getItemAt( Common::InventoryType::GearSet0, i ); - if( pItem ) - { - auto& entry = packet->data().entries[i]; - entry.catalogId = pItem->getId(); - //entry.appearanceCatalogId = pItem->getGlamourId() - // todo: glamour/materia etc. - } - } - } - } - player.queuePacket( packet ); + examineHandler( player, targetId ); + break; } case ClientTriggerType::MarkPlayer: // Mark player {