From 49c65c85737176a995da4ed720f2f432ef74fa06 Mon Sep 17 00:00:00 2001 From: Mordred Date: Thu, 17 Aug 2017 16:17:25 +0200 Subject: [PATCH] Split off InventoryHandler from PacketHandlers --- src/servers/Server_Zone/InventoryHandler.cpp | 118 +++++++++++++++++++ src/servers/Server_Zone/PacketHandlers.cpp | 63 ---------- 2 files changed, 118 insertions(+), 63 deletions(-) create mode 100644 src/servers/Server_Zone/InventoryHandler.cpp diff --git a/src/servers/Server_Zone/InventoryHandler.cpp b/src/servers/Server_Zone/InventoryHandler.cpp new file mode 100644 index 00000000..95c3e13e --- /dev/null +++ b/src/servers/Server_Zone/InventoryHandler.cpp @@ -0,0 +1,118 @@ +#include +#include +#include +#include +#include +#include +#include + +#include + + +#include "GameConnection.h" + +#include "Session.h" +#include "Zone.h" +#include "ZonePosition.h" +#include "ServerZone.h" +#include "ZoneMgr.h" + +#include "InitUIPacket.h" +#include "PingPacket.h" +#include "MoveActorPacket.h" +#include "ChatPacket.h" +#include "ServerNoticePacket.h" +#include "ActorControlPacket142.h" +#include "ActorControlPacket143.h" +#include "ActorControlPacket144.h" +#include "EventStartPacket.h" +#include "EventFinishPacket.h" +#include "PlayerStateFlagsPacket.h" + + +#include "GameCommandHandler.h" + +#include "Player.h" +#include "Inventory.h" + +#include "Forwards.h" + +#include "EventHelper.h" + +#include "Action.h" +#include "ActionTeleport.h" + +extern Core::Logger g_log; +extern Core::Db::Database g_database; +extern Core::ServerZone g_serverZone; +extern Core::ZoneMgr g_zoneMgr; +extern Core::Data::ExdData g_exdData; +extern Core::GameCommandHandler g_gameCommandMgr; + +using namespace Core::Common; +using namespace Core::Network::Packets; +using namespace Core::Network::Packets::Server; + + +void Core::Network::GameConnection::inventoryModifyHandler( Core::Network::Packets::GamePacketPtr pInPacket, + Core::Entity::PlayerPtr pPlayer ) +{ + uint32_t seq = pInPacket->getValAt< uint32_t >( 0x20 ); + uint8_t action = pInPacket->getValAt< uint8_t >( 0x24 ); + uint8_t fromSlot = pInPacket->getValAt< uint8_t >( 0x30 ); + uint8_t toSlot = pInPacket->getValAt< uint8_t >( 0x44 ); + uint16_t fromContainer = pInPacket->getValAt< uint16_t >( 0x2C ); + uint16_t toContainer = pInPacket->getValAt< uint16_t >( 0x40 ); + + GamePacketNew< FFXIVIpcInventoryActionAck > ackPacket( pPlayer->getId() ); + ackPacket.data().sequence = seq; + ackPacket.data().type = 7; + pPlayer->queuePacket( ackPacket ); + + + g_log.debug( pInPacket->toString() ); + g_log.debug( "InventoryAction: " + std::to_string( action ) ); + + // TODO: other inventory operations need to be implemented + switch( action ) + { + + case 0x07: // discard item action + { + pPlayer->getInvetory()->discardItem( fromContainer, fromSlot ); + } + break; + + case 0x08: // move item action + { + pPlayer->getInvetory()->moveItem( fromContainer, fromSlot, toContainer, toSlot ); + } + break; + + case 0x09: // swap item action + { + pPlayer->getInvetory()->swapItem( fromContainer, fromSlot, toContainer, toSlot ); + } + break; + + case 0x0C: // merge stack action + { + + } + break; + + case 0x0A: // split stack action + { + + } + break; + + default: + + break; + } + + pPlayer->setSyncFlag( PlayerSyncFlags::Status ); + +} + diff --git a/src/servers/Server_Zone/PacketHandlers.cpp b/src/servers/Server_Zone/PacketHandlers.cpp index 2bc660fc..6cd32e3c 100644 --- a/src/servers/Server_Zone/PacketHandlers.cpp +++ b/src/servers/Server_Zone/PacketHandlers.cpp @@ -336,7 +336,6 @@ void Core::Network::GameConnection::zoneLineHandler( Core::Network::Packets::Gam } - void Core::Network::GameConnection::discoveryHandler( Core::Network::Packets::GamePacketPtr pInPacket, Core::Entity::PlayerPtr pPlayer ) { @@ -365,68 +364,6 @@ void Core::Network::GameConnection::discoveryHandler( Core::Network::Packets::Ga } -void Core::Network::GameConnection::inventoryModifyHandler( Core::Network::Packets::GamePacketPtr pInPacket, - Core::Entity::PlayerPtr pPlayer ) -{ - uint32_t seq = pInPacket->getValAt< uint32_t >( 0x20 ); - uint8_t action = pInPacket->getValAt< uint8_t >( 0x24 ); - uint8_t fromSlot = pInPacket->getValAt< uint8_t >( 0x30 ); - uint8_t toSlot = pInPacket->getValAt< uint8_t >( 0x44 ); - uint16_t fromContainer = pInPacket->getValAt< uint16_t >( 0x2C ); - uint16_t toContainer = pInPacket->getValAt< uint16_t >( 0x40 ); - - GamePacketNew< FFXIVIpcInventoryActionAck > ackPacket( pPlayer->getId() ); - ackPacket.data().sequence = seq; - ackPacket.data().type = 7; - pPlayer->queuePacket( ackPacket ); - - - g_log.debug( pInPacket->toString() ); - g_log.debug( "InventoryAction: " + std::to_string( action ) ); - - // TODO: other inventory operations need to be implemented - switch( action ) - { - - case 0x07: // discard item action - { - pPlayer->getInvetory()->discardItem( fromContainer, fromSlot ); - } - break; - - case 0x08: // move item action - { - pPlayer->getInvetory()->moveItem( fromContainer, fromSlot, toContainer, toSlot ); - } - break; - - case 0x09: // swap item action - { - pPlayer->getInvetory()->swapItem( fromContainer, fromSlot, toContainer, toSlot ); - } - break; - - case 0x0C: // merge stack action - { - - } - break; - - case 0x0A: // split stack action - { - - } - break; - - default: - - break; - } - - pPlayer->setSyncFlag( PlayerSyncFlags::Status ); - -} - void Core::Network::GameConnection::actionHandler( Core::Network::Packets::GamePacketPtr pInPacket, Core::Entity::PlayerPtr pPlayer )