From fefaedf03f22481a739f57623a9a9e146894d382 Mon Sep 17 00:00:00 2001 From: Maru Date: Fri, 9 Mar 2018 09:50:35 -0300 Subject: [PATCH] Apply new framework to social model --- .../Network/Handlers/PacketHandlers.cpp | 19 +++++----- src/servers/sapphire_zone/ServerZone.cpp | 2 +- .../sapphire_zone/Social/FriendList.cpp | 9 ++--- src/servers/sapphire_zone/Social/FriendList.h | 6 ++-- src/servers/sapphire_zone/Social/Group.cpp | 35 ++++++++++--------- src/servers/sapphire_zone/Social/Group.h | 9 ++--- .../sapphire_zone/Social/Manager/SocialMgr.h | 2 ++ src/servers/sapphire_zone/mainGameServer.cpp | 6 ++++ 8 files changed, 51 insertions(+), 37 deletions(-) diff --git a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp index 36d1b261..945ee886 100644 --- a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp @@ -41,6 +41,7 @@ #include "Action/Action.h" #include "Action/ActionTeleport.h" #include "Social/Manager/SocialMgr.h" +#include "Social/FriendList.h" #include "Session.h" #include "ServerZone.h" @@ -485,7 +486,7 @@ void Core::Network::GameConnection::socialListHandler( const Packets::GamePacket uint16_t i = 0; - auto playerFriendsList = g_framework.getFriendsListMgr().findGroupById( player.getFriendsListId() ); + auto playerFriendsList = g_fw.get< Social::SocialMgr< Social::FriendList > >()->findGroupById( player.getFriendsListId() ); // todo: move this garbage else fucking where for ( auto member : playerFriendsList.getMembers() ) @@ -494,7 +495,7 @@ void Core::Network::GameConnection::socialListHandler( const Packets::GamePacket if ( i == 10 ) break; - g_framework.getLogger().debug( "aaa" + std::to_string( i ) + ": " + member.second.name ); + g_fw.get< Logger >()->debug( "aaa" + std::to_string( i ) + ": " + member.second.name ); listPacket.data().entries[i] = Core::Social::Group::generatePlayerEntry( member.second ); i++; } @@ -545,15 +546,15 @@ void Core::Network::GameConnection::socialReqResponseHandler( const Packets::Gam return; }*/ - g_framework.getLogger().debug( std::to_string( static_cast( action ) ) ); + g_fw.get< Logger >()->debug( std::to_string( static_cast( action ) ) ); - auto pSession = g_framework.getServerZone().getSession( targetId ); + auto pSession = g_fw.get< ServerZone >()->getSession( targetId ); // todo: notify both inviter/invitee with 0x00CB packet if( pSession ) { - g_framework.getLogger().debug( std::to_string(static_cast(action)) ); + g_fw.get< Logger >()->debug( std::to_string(static_cast(action)) ); } response.data().response = Common::SocialRequestResponse::Accept; memcpy( &( response.data().name ), name.c_str(), 32 ); @@ -567,7 +568,7 @@ void Core::Network::GameConnection::socialReqSendHandler( const Packets::GamePac auto category = inPacket.getValAt< Common::SocialCategory >( 0x20 ); auto name = std::string( inPacket.getStringAt( 0x21 ) ); - auto pSession = g_framework.getServerZone().getSession( name ); + auto pSession = g_fw.get< ServerZone >()->getSession( name ); // only the requester needs the response ZoneChannelPacket< FFXIVIpcSocialRequestError > response( player.getId() ); @@ -697,7 +698,7 @@ void Core::Network::GameConnection::socialReqSendHandler( const Packets::GamePac pRecipient->queuePacket( packet ); pRecipient->sendDebug( "ding ding" ); - auto recipientFriendsList = g_framework.getFriendsListMgr().findGroupById( pRecipient->getFriendsListId() ); + auto recipientFriendsList = g_fw.get< Social::SocialMgr< Social::FriendList > >()->findGroupById( pRecipient->getFriendsListId() ); auto senderResultPacket = recipientFriendsList.inviteMember( player.getAsPlayer(), pRecipient, player.getId(), pRecipient->getId() ); @@ -705,7 +706,7 @@ void Core::Network::GameConnection::socialReqSendHandler( const Packets::GamePac if ( recipientFriendsList.isFriendList() ) { - g_framework.getLogger().debug( "he HAA HAAA" ); + g_fw.get< Logger >()->debug( "he HAA HAAA" ); } response.data().messageId = typeMessage[category]; @@ -714,7 +715,7 @@ void Core::Network::GameConnection::socialReqSendHandler( const Packets::GamePac player.queuePacket( response ); // todo: handle party, friend request - g_framework.getLogger().debug("sent to " + name); + g_fw.get< Logger >()->debug( "sent to " + name ); } void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPacket, diff --git a/src/servers/sapphire_zone/ServerZone.cpp b/src/servers/sapphire_zone/ServerZone.cpp index 53bb03ab..adf350b6 100644 --- a/src/servers/sapphire_zone/ServerZone.cpp +++ b/src/servers/sapphire_zone/ServerZone.cpp @@ -183,7 +183,7 @@ void Core::ServerZone::run( int32_t argc, char* argv[] ) return; } - g_framework.getFriendsListMgr().findGroupById( 0 ); + //g_framework.getFriendsListMgr().findGroupById( 0 ); Network::HivePtr hive( new Network::Hive() ); Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive ); diff --git a/src/servers/sapphire_zone/Social/FriendList.cpp b/src/servers/sapphire_zone/Social/FriendList.cpp index f245209a..9ec3726c 100644 --- a/src/servers/sapphire_zone/Social/FriendList.cpp +++ b/src/servers/sapphire_zone/Social/FriendList.cpp @@ -1,15 +1,16 @@ #include #include -#include +#include #include -#include -#include +#include +#include #include #include #include #include -#include + +#include #include "Group.h" #include "FriendList.h" diff --git a/src/servers/sapphire_zone/Social/FriendList.h b/src/servers/sapphire_zone/Social/FriendList.h index 24eb5f47..258ea324 100644 --- a/src/servers/sapphire_zone/Social/FriendList.h +++ b/src/servers/sapphire_zone/Social/FriendList.h @@ -1,9 +1,9 @@ #ifndef _FRIENDLIST_H #define _FRIENDLIST_H -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/src/servers/sapphire_zone/Social/Group.cpp b/src/servers/sapphire_zone/Social/Group.cpp index 835b7061..06318636 100644 --- a/src/servers/sapphire_zone/Social/Group.cpp +++ b/src/servers/sapphire_zone/Social/Group.cpp @@ -1,23 +1,25 @@ #include #include -#include +#include #include -#include -#include +#include +#include #include #include #include #include -#include -#include "Group.h" +#include -extern Core::ServerZone g_serverZone; -extern Core::Logger g_log; +#include "Group.h" +#include "Framework.h" +#include "Forwards.h" + +extern Core::Framework g_fw; using namespace Core::Social; +using namespace Core::Network; -// todo: i fuckin have no fuckin clue how to use group manager classes, why not just have a map of ? // todo: invite map in g_serverZone.getGroupMgr(GroupType) and look up Core::Network::Packets::GamePacketPtr Group::addMember( Core::Entity::PlayerPtr pSender, Core::Entity::PlayerPtr pRecipient, uint64_t senderId, uint64_t recipientId ) @@ -66,11 +68,12 @@ Core::Network::Packets::GamePacketPtr Group::addMember( Core::Entity::PlayerPtr return packet; } -Core::Network::Packets::GamePacketPtr Group::inviteMember( Core::Entity::PlayerPtr pSender, Core::Entity::PlayerPtr pRecipient, uint64_t senderId, uint64_t recipientId ) +Packets::GamePacketPtr Group::inviteMember( Core::Entity::PlayerPtr pSender, Core::Entity::PlayerPtr pRecipient, uint64_t senderId, uint64_t recipientId ) { assert( pSender != nullptr || senderId != 0 ); - auto packet = GamePacketNew< Server::FFXIVIpcSocialRequestResponse, ServerZoneIpcType >( recipientId, senderId ); + + auto packet = Packets::GamePacketNew< Packets::Server::FFXIVIpcSocialRequestResponse, Packets::ServerZoneIpcType >( recipientId, senderId ); packet.data().contentId = recipientId; packet.data().category = Common::SocialCategory::Friends; @@ -93,7 +96,7 @@ Core::Network::Packets::GamePacketPtr Group::removeMember( Core::Entity::PlayerP { assert( pSender != nullptr || senderId != 0 ); - auto packet = GamePacketNew< Server::FFXIVIpcSocialRequestResponse, ServerZoneIpcType >( recipientId, senderId ); + auto packet = Packets::GamePacketNew< Packets::Server::FFXIVIpcSocialRequestResponse, Packets::ServerZoneIpcType >( recipientId, senderId ); packet.data().contentId = recipientId; packet.data().category = Common::SocialCategory::Friends; @@ -105,7 +108,7 @@ void Group::sendPacketToMembers( Core::Network::Packets::GamePacketPtr pPacket, assert( pPacket ); for( const auto& member : m_members ) { - auto pSession = g_serverZone.getSession( member.second.name ); + auto pSession = g_fw.get< ServerZone >()->getSession( member.second.name ); if( pSession ) { pSession->getPlayer()->queuePacket( pPacket ); @@ -123,7 +126,7 @@ Core::Network::Packets::Server::PlayerEntry Group::generatePlayerEntry( GroupMem // We check if player is online. If so, we can pull more data - otherwise just name // todo: set as offline in one of the unknown values, if session does not exist - auto pSession = g_serverZone.getSession( groupMember.name ); // todo: aa i don't like this. maybe just store their ID instead of contentID??? + auto pSession = g_fw.get< ServerZone >()->getSession( groupMember.name ); // todo: aa i don't like this. maybe just store their ID instead of contentID??? entry.timestamp = 1512799339; entry.status = 2; @@ -148,15 +151,15 @@ Core::Network::Packets::Server::PlayerEntry Group::generatePlayerEntry( GroupMem entry.knownLanguages = 0x0F; entry.onlineStatusMask = pPlayer->getOnlineStatusMask(); - g_log.debug( std::to_string( pPlayer->getContentId() ) ); + g_fw.get< Logger >()->debug( std::to_string( pPlayer->getContentId() ) ); } // TODO: no idea what this does - me neither //listPacket.data().entries[0].one = 1; - g_log.debug( std::to_string(groupMember.contentId) ); + g_fw.get< Logger >()->debug( std::to_string(groupMember.contentId) ); - g_log.debug( std::to_string( entry.contentId ) ); + g_fw.get< Logger >()->debug( std::to_string( entry.contentId ) ); return entry; } diff --git a/src/servers/sapphire_zone/Social/Group.h b/src/servers/sapphire_zone/Social/Group.h index 219fe3fc..2ee733c3 100644 --- a/src/servers/sapphire_zone/Social/Group.h +++ b/src/servers/sapphire_zone/Social/Group.h @@ -1,14 +1,15 @@ #ifndef _GROUP_H #define _GROUP_H -#include -#include -#include +#include +#include +#include #include #include #include #include #include +#include namespace Core { namespace Social { @@ -73,7 +74,7 @@ protected: uint64_t m_ownerId{ 0 }; uint32_t m_maxCapacity{ 250 }; uint32_t m_maxRoles{ 50 }; - time_point m_createTime{ std::chrono::steady_clock::now() }; + std::chrono::steady_clock::time_point m_createTime{ std::chrono::steady_clock::now() }; std::map< uint64_t, GroupMember > m_members; std::map< uint64_t, GroupMember > m_invites; // diff --git a/src/servers/sapphire_zone/Social/Manager/SocialMgr.h b/src/servers/sapphire_zone/Social/Manager/SocialMgr.h index 4323cd8b..f4c319ec 100644 --- a/src/servers/sapphire_zone/Social/Manager/SocialMgr.h +++ b/src/servers/sapphire_zone/Social/Manager/SocialMgr.h @@ -1,6 +1,8 @@ #ifndef _SOCIALMGR_H #define _SOCIALMGR_H +#include + #include #include diff --git a/src/servers/sapphire_zone/mainGameServer.cpp b/src/servers/sapphire_zone/mainGameServer.cpp index b083b3b4..8000b3f6 100644 --- a/src/servers/sapphire_zone/mainGameServer.cpp +++ b/src/servers/sapphire_zone/mainGameServer.cpp @@ -12,6 +12,8 @@ #include "Linkshell/LinkshellMgr.h" #include "Zone/TerritoryMgr.h" #include "DebugCommand/DebugCommandHandler.h" +#include "Social/Manager/SocialMgr.h" +#include "Social/FriendList.h" Core::Framework g_fw; @@ -29,6 +31,8 @@ bool setupFramework() auto pTeriMgr = boost::make_shared< TerritoryMgr >(); auto pDebugCom = boost::make_shared< DebugCommandHandler >(); + auto pFriendsListMgr = boost::make_shared< Social::SocialMgr< Social::FriendList > >(); + pLogger->setLogPath( "log/SapphireZone_" ); pLogger->init(); @@ -42,6 +46,8 @@ bool setupFramework() g_fw.set< TerritoryMgr >( pTeriMgr ); g_fw.set< DebugCommandHandler >( pDebugCom ); + g_fw.set< Social::SocialMgr< Social::FriendList > >( pFriendsListMgr ); + // actuall catch errors here... return true; }