From c8f2ee73052d85d7d760af184b922a1f4ea74a93 Mon Sep 17 00:00:00 2001 From: Maru Date: Thu, 21 Dec 2017 03:45:56 -0200 Subject: [PATCH] Half work on templating SocialManager, more refactoring --- src/servers/Server_Zone/Actor/Player.h | 4 +-- src/servers/Server_Zone/CMakeLists.txt | 6 ++-- .../DebugCommand/DebugCommandHandler.cpp | 25 ++++++++++++++++ .../Network/Handlers/PacketHandlers.cpp | 4 +-- src/servers/Server_Zone/ServerZone.cpp | 2 +- .../{Actor => }/Social/ContentGroup.cpp | 0 .../{Actor => }/Social/ContentGroup.h | 0 .../{Actor => }/Social/FreeCompany.cpp | 0 .../{Actor => }/Social/FreeCompany.h | 0 .../{Actor => }/Social/FriendList.cpp | 0 .../{Actor => }/Social/FriendList.h | 2 +- .../Server_Zone/{Actor => }/Social/Group.cpp | 0 .../Server_Zone/{Actor => }/Social/Group.h | 0 .../{Actor => }/Social/Linkshell.cpp | 0 .../{Actor => }/Social/Linkshell.h | 0 .../Social/Manager/ContentGroupMgr.cpp | 0 .../Social/Manager/ContentGroupMgr.h | 0 .../Social/Manager/FreeCompanyMgr.cpp | 0 .../Social/Manager/FreeCompanyMgr.h | 0 .../Social/Manager/FriendListMgr.cpp | 0 .../Social/Manager/FriendListMgr.h | 11 ++++--- .../Social/Manager/LinkshellMgr.cpp | 0 .../{Actor => }/Social/Manager/LinkshellMgr.h | 0 .../{Actor => }/Social/Manager/PartyMgr.cpp | 0 .../{Actor => }/Social/Manager/PartyMgr.h | 0 .../Manager/SocialMgr.cpp} | 16 +++++----- .../GroupMgr.h => Social/Manager/SocialMgr.h} | 30 +++++++++---------- .../Server_Zone/{Actor => }/Social/Party.cpp | 0 .../Server_Zone/{Actor => }/Social/Party.h | 0 29 files changed, 63 insertions(+), 37 deletions(-) rename src/servers/Server_Zone/{Actor => }/Social/ContentGroup.cpp (100%) rename src/servers/Server_Zone/{Actor => }/Social/ContentGroup.h (100%) rename src/servers/Server_Zone/{Actor => }/Social/FreeCompany.cpp (100%) rename src/servers/Server_Zone/{Actor => }/Social/FreeCompany.h (100%) rename src/servers/Server_Zone/{Actor => }/Social/FriendList.cpp (100%) rename src/servers/Server_Zone/{Actor => }/Social/FriendList.h (96%) rename src/servers/Server_Zone/{Actor => }/Social/Group.cpp (100%) rename src/servers/Server_Zone/{Actor => }/Social/Group.h (100%) rename src/servers/Server_Zone/{Actor => }/Social/Linkshell.cpp (100%) rename src/servers/Server_Zone/{Actor => }/Social/Linkshell.h (100%) rename src/servers/Server_Zone/{Actor => }/Social/Manager/ContentGroupMgr.cpp (100%) rename src/servers/Server_Zone/{Actor => }/Social/Manager/ContentGroupMgr.h (100%) rename src/servers/Server_Zone/{Actor => }/Social/Manager/FreeCompanyMgr.cpp (100%) rename src/servers/Server_Zone/{Actor => }/Social/Manager/FreeCompanyMgr.h (100%) rename src/servers/Server_Zone/{Actor => }/Social/Manager/FriendListMgr.cpp (100%) rename src/servers/Server_Zone/{Actor => }/Social/Manager/FriendListMgr.h (72%) rename src/servers/Server_Zone/{Actor => }/Social/Manager/LinkshellMgr.cpp (100%) rename src/servers/Server_Zone/{Actor => }/Social/Manager/LinkshellMgr.h (100%) rename src/servers/Server_Zone/{Actor => }/Social/Manager/PartyMgr.cpp (100%) rename src/servers/Server_Zone/{Actor => }/Social/Manager/PartyMgr.h (100%) rename src/servers/Server_Zone/{Actor/Social/Manager/GroupMgr.cpp => Social/Manager/SocialMgr.cpp} (55%) rename src/servers/Server_Zone/{Actor/Social/Manager/GroupMgr.h => Social/Manager/SocialMgr.h} (77%) rename src/servers/Server_Zone/{Actor => }/Social/Party.cpp (100%) rename src/servers/Server_Zone/{Actor => }/Social/Party.h (100%) diff --git a/src/servers/Server_Zone/Actor/Player.h b/src/servers/Server_Zone/Actor/Player.h index 1e0a26bb..507f7215 100644 --- a/src/servers/Server_Zone/Actor/Player.h +++ b/src/servers/Server_Zone/Actor/Player.h @@ -6,8 +6,8 @@ #include #include -#include -#include +#include +#include #include #include "Actor.h" diff --git a/src/servers/Server_Zone/CMakeLists.txt b/src/servers/Server_Zone/CMakeLists.txt index 796805b5..47a3c557 100644 --- a/src/servers/Server_Zone/CMakeLists.txt +++ b/src/servers/Server_Zone/CMakeLists.txt @@ -8,8 +8,6 @@ include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ) file(GLOB SERVER_PUBLIC_INCLUDE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} /*.h Actor/*.h - Actor/Social/*.h - Actor/Social/Manager/*.h Action/*.h DebugCommand/*.h Event/*.h @@ -19,6 +17,8 @@ file(GLOB SERVER_PUBLIC_INCLUDE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} Network/*.h Network/Handlers/*.h Network/PacketWrappers/*.h + Social/*.h + Social/Manager/*.h Script/*.h StatusEffect/*.h Zone/*.h) @@ -37,6 +37,8 @@ file(GLOB SERVER_SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} Network/*.c* Network/Handlers/*.c* Network/PacketWrappers/*.c* + Social/*.c* + Social/Manager/*.c* Script/*.c* StatusEffect/*.c* Zone/*.c*) diff --git a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp index 55b63d1d..3e7aa05c 100644 --- a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp @@ -1,4 +1,5 @@ #include +#include #include #include @@ -348,6 +349,30 @@ void Core::DebugCommandHandler::add( char * data, Entity::Player& player, boost: pBNpc->setCurrentZone( pZone ); pZone->pushActor( pBNpc ); + } + else if( subCommand == "sspawn" ) + { + int32_t model, name, count, distCoefficient, i; + + sscanf( params.c_str(), "%d %d %d %d", &model, &name, &count, &distCoefficient ); + + for ( i = 0; i < count; i++ ) + { + Common::FFXIVARR_POSITION3 posC = player.getPos(); + std::mt19937 gen( rand() * 1000 ); + std::uniform_int_distribution dis( distCoefficient * -1, distCoefficient ); + + posC.x += dis( gen ); + posC.z += dis( gen ); + + Entity::BattleNpcPtr pBNpc( new Entity::BattleNpc( model, name, posC ) ); + + auto pZone = player.getCurrentZone(); + pBNpc->setCurrentZone( pZone ); + pZone->pushActor( pBNpc ); + + } + } else if( subCommand == "op" ) { diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index fbe88d4e..7b5907e9 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -36,7 +36,7 @@ #include "Event/EventHelper.h" #include "Action/Action.h" #include "Action/ActionTeleport.h" -#include "Actor/Social/Manager/FriendListMgr.h" +#include "Social/Manager/FriendListMgr.h" extern Core::Logger g_log; @@ -44,7 +44,7 @@ extern Core::ServerZone g_serverZone; extern Core::ZoneMgr g_zoneMgr; extern Core::Data::ExdData g_exdData; extern Core::DebugCommandHandler g_gameCommandMgr; -extern Core::Entity::Social::FriendListMgr g_friendListMgr; +extern Core::Social::SocialMgr g_socialMgr; using namespace Core::Common; using namespace Core::Network::Packets; diff --git a/src/servers/Server_Zone/ServerZone.cpp b/src/servers/Server_Zone/ServerZone.cpp index 4de459c2..4c0b1dc6 100644 --- a/src/servers/Server_Zone/ServerZone.cpp +++ b/src/servers/Server_Zone/ServerZone.cpp @@ -220,7 +220,7 @@ void Core::ServerZone::run( int32_t argc, char* argv[] ) return; } - g_friendListMgr.init(); + g_friendListMgr = Core::Social::SocialMgr(); Network::HivePtr hive( new Network::Hive() ); Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive ); diff --git a/src/servers/Server_Zone/Actor/Social/ContentGroup.cpp b/src/servers/Server_Zone/Social/ContentGroup.cpp similarity index 100% rename from src/servers/Server_Zone/Actor/Social/ContentGroup.cpp rename to src/servers/Server_Zone/Social/ContentGroup.cpp diff --git a/src/servers/Server_Zone/Actor/Social/ContentGroup.h b/src/servers/Server_Zone/Social/ContentGroup.h similarity index 100% rename from src/servers/Server_Zone/Actor/Social/ContentGroup.h rename to src/servers/Server_Zone/Social/ContentGroup.h diff --git a/src/servers/Server_Zone/Actor/Social/FreeCompany.cpp b/src/servers/Server_Zone/Social/FreeCompany.cpp similarity index 100% rename from src/servers/Server_Zone/Actor/Social/FreeCompany.cpp rename to src/servers/Server_Zone/Social/FreeCompany.cpp diff --git a/src/servers/Server_Zone/Actor/Social/FreeCompany.h b/src/servers/Server_Zone/Social/FreeCompany.h similarity index 100% rename from src/servers/Server_Zone/Actor/Social/FreeCompany.h rename to src/servers/Server_Zone/Social/FreeCompany.h diff --git a/src/servers/Server_Zone/Actor/Social/FriendList.cpp b/src/servers/Server_Zone/Social/FriendList.cpp similarity index 100% rename from src/servers/Server_Zone/Actor/Social/FriendList.cpp rename to src/servers/Server_Zone/Social/FriendList.cpp diff --git a/src/servers/Server_Zone/Actor/Social/FriendList.h b/src/servers/Server_Zone/Social/FriendList.h similarity index 96% rename from src/servers/Server_Zone/Actor/Social/FriendList.h rename to src/servers/Server_Zone/Social/FriendList.h index 07e7c099..9b7f1bd4 100644 --- a/src/servers/Server_Zone/Actor/Social/FriendList.h +++ b/src/servers/Server_Zone/Social/FriendList.h @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/servers/Server_Zone/Actor/Social/Group.cpp b/src/servers/Server_Zone/Social/Group.cpp similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Group.cpp rename to src/servers/Server_Zone/Social/Group.cpp diff --git a/src/servers/Server_Zone/Actor/Social/Group.h b/src/servers/Server_Zone/Social/Group.h similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Group.h rename to src/servers/Server_Zone/Social/Group.h diff --git a/src/servers/Server_Zone/Actor/Social/Linkshell.cpp b/src/servers/Server_Zone/Social/Linkshell.cpp similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Linkshell.cpp rename to src/servers/Server_Zone/Social/Linkshell.cpp diff --git a/src/servers/Server_Zone/Actor/Social/Linkshell.h b/src/servers/Server_Zone/Social/Linkshell.h similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Linkshell.h rename to src/servers/Server_Zone/Social/Linkshell.h diff --git a/src/servers/Server_Zone/Actor/Social/Manager/ContentGroupMgr.cpp b/src/servers/Server_Zone/Social/Manager/ContentGroupMgr.cpp similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Manager/ContentGroupMgr.cpp rename to src/servers/Server_Zone/Social/Manager/ContentGroupMgr.cpp diff --git a/src/servers/Server_Zone/Actor/Social/Manager/ContentGroupMgr.h b/src/servers/Server_Zone/Social/Manager/ContentGroupMgr.h similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Manager/ContentGroupMgr.h rename to src/servers/Server_Zone/Social/Manager/ContentGroupMgr.h diff --git a/src/servers/Server_Zone/Actor/Social/Manager/FreeCompanyMgr.cpp b/src/servers/Server_Zone/Social/Manager/FreeCompanyMgr.cpp similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Manager/FreeCompanyMgr.cpp rename to src/servers/Server_Zone/Social/Manager/FreeCompanyMgr.cpp diff --git a/src/servers/Server_Zone/Actor/Social/Manager/FreeCompanyMgr.h b/src/servers/Server_Zone/Social/Manager/FreeCompanyMgr.h similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Manager/FreeCompanyMgr.h rename to src/servers/Server_Zone/Social/Manager/FreeCompanyMgr.h diff --git a/src/servers/Server_Zone/Actor/Social/Manager/FriendListMgr.cpp b/src/servers/Server_Zone/Social/Manager/FriendListMgr.cpp similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Manager/FriendListMgr.cpp rename to src/servers/Server_Zone/Social/Manager/FriendListMgr.cpp diff --git a/src/servers/Server_Zone/Actor/Social/Manager/FriendListMgr.h b/src/servers/Server_Zone/Social/Manager/FriendListMgr.h similarity index 72% rename from src/servers/Server_Zone/Actor/Social/Manager/FriendListMgr.h rename to src/servers/Server_Zone/Social/Manager/FriendListMgr.h index c513cfeb..df059097 100644 --- a/src/servers/Server_Zone/Actor/Social/Manager/FriendListMgr.h +++ b/src/servers/Server_Zone/Social/Manager/FriendListMgr.h @@ -6,17 +6,16 @@ #include #include -#include -#include +#include +#include -#include +#include #include namespace Core { -namespace Entity { namespace Social { -class FriendListMgr : public GroupMgr +class FriendListMgr { public: FriendListMgr(); @@ -32,7 +31,7 @@ public: private: // todo: can we handle this m_groups grouptype better..? - GroupType m_type{ GroupType::FriendList }; + //GroupType m_type{ GroupType::FriendList }; }; diff --git a/src/servers/Server_Zone/Actor/Social/Manager/LinkshellMgr.cpp b/src/servers/Server_Zone/Social/Manager/LinkshellMgr.cpp similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Manager/LinkshellMgr.cpp rename to src/servers/Server_Zone/Social/Manager/LinkshellMgr.cpp diff --git a/src/servers/Server_Zone/Actor/Social/Manager/LinkshellMgr.h b/src/servers/Server_Zone/Social/Manager/LinkshellMgr.h similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Manager/LinkshellMgr.h rename to src/servers/Server_Zone/Social/Manager/LinkshellMgr.h diff --git a/src/servers/Server_Zone/Actor/Social/Manager/PartyMgr.cpp b/src/servers/Server_Zone/Social/Manager/PartyMgr.cpp similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Manager/PartyMgr.cpp rename to src/servers/Server_Zone/Social/Manager/PartyMgr.cpp diff --git a/src/servers/Server_Zone/Actor/Social/Manager/PartyMgr.h b/src/servers/Server_Zone/Social/Manager/PartyMgr.h similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Manager/PartyMgr.h rename to src/servers/Server_Zone/Social/Manager/PartyMgr.h diff --git a/src/servers/Server_Zone/Actor/Social/Manager/GroupMgr.cpp b/src/servers/Server_Zone/Social/Manager/SocialMgr.cpp similarity index 55% rename from src/servers/Server_Zone/Actor/Social/Manager/GroupMgr.cpp rename to src/servers/Server_Zone/Social/Manager/SocialMgr.cpp index 9510ee9a..627d4daa 100644 --- a/src/servers/Server_Zone/Actor/Social/Manager/GroupMgr.cpp +++ b/src/servers/Server_Zone/Social/Manager/SocialMgr.cpp @@ -1,19 +1,19 @@ #include "../Group.h" -#include "GroupMgr.h" +#include "SocialMgr.h" -using namespace Core::Entity; -Social::GroupMgr::GroupMgr() +template< class T > +Core::Social::SocialMgr::GroupMgr() { } -Social::GroupMgr::~GroupMgr() +Core::Social::SocialMgr::~GroupMgr() { } -Social::GroupPtr Social::GroupMgr::findGroupByInviteIdForPlayer( uint64_t playerId ) const +T Core::Social::SocialMgr::findGroupByInviteIdForPlayer( uint64_t playerId ) const { auto it = m_invites.find( playerId ); if( it != m_invites.end() ) @@ -23,7 +23,7 @@ Social::GroupPtr Social::GroupMgr::findGroupByInviteIdForPlayer( uint64_t player return nullptr; } -Social::GroupPtr Social::GroupMgr::findGroupById( uint64_t groupId ) const +T Core::Social::SocialMgr::findGroupById( uint64_t groupId ) const { auto it = m_groups.find( groupId ); if( it != m_groups.end() ) @@ -33,13 +33,13 @@ Social::GroupPtr Social::GroupMgr::findGroupById( uint64_t groupId ) const return nullptr; } -uint64_t Social::GroupMgr::generateGroupId() +uint64_t Core::Social::SocialMgr::GroupMgr::generateGroupId() { m_lastGroupId++; return m_lastGroupId; } -bool Social::GroupMgr::hasInvite( uint64_t playerId ) const +bool Core::Social::SocialMgr::hasInvite( uint64_t playerId ) const { auto it = m_invites.find( playerId ); if ( it != m_invites.end() ) diff --git a/src/servers/Server_Zone/Actor/Social/Manager/GroupMgr.h b/src/servers/Server_Zone/Social/Manager/SocialMgr.h similarity index 77% rename from src/servers/Server_Zone/Actor/Social/Manager/GroupMgr.h rename to src/servers/Server_Zone/Social/Manager/SocialMgr.h index 8e7f603b..079efb44 100644 --- a/src/servers/Server_Zone/Actor/Social/Manager/GroupMgr.h +++ b/src/servers/Server_Zone/Social/Manager/SocialMgr.h @@ -6,23 +6,23 @@ #include #include -#include +#include namespace Core { -namespace Entity { namespace Social { -class GroupMgr +template< class T > +class SocialMgr { public: - GroupMgr(); - virtual ~GroupMgr(); + SocialMgr(); + virtual ~SocialMgr(); - virtual GroupPtr findGroupByInviteIdForPlayer( uint64_t playerId ) const; - virtual GroupPtr findGroupById( uint64_t groupId ) const; + T findGroupByInviteIdForPlayer( uint64_t playerId ) const; + T findGroupById( uint64_t groupId ) const; /* - template - GroupPtr findGroup( uint64_t arg ) + + T findGroup( uint64_t groupId ) { auto it = m_groups.find( groupId ); if ( it != m_groups.end() ) @@ -35,10 +35,11 @@ public: bool hasInvite( uint64_t playerId ) const; protected: - GroupType m_type{ GroupType::None }; - uint64_t m_groupCount{ 0 }; - uint32_t m_maxEntries{ 0xFFFFFFFF }; - +// those would be implemented in T, so you'd have T.m_type and T.m_maxEntries +// GroupType m_type{ GroupType::None }; +// uint32_t m_maxEntries{ 0xFFFFFFFF }; + + uint64_t m_groupCount{ 0 }; std::map< uint64_t, uint64_t > m_invites; uint64_t m_lastGroupId{ 0 }; @@ -61,11 +62,10 @@ protected: virtual uint64_t generateGroupId(); private: - std::map< uint64_t, GroupPtr > m_groups; + std::map< uint64_t, T > m_groups; }; } } -}; #endif /* ! _GROUPMGR_H */ \ No newline at end of file diff --git a/src/servers/Server_Zone/Actor/Social/Party.cpp b/src/servers/Server_Zone/Social/Party.cpp similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Party.cpp rename to src/servers/Server_Zone/Social/Party.cpp diff --git a/src/servers/Server_Zone/Actor/Social/Party.h b/src/servers/Server_Zone/Social/Party.h similarity index 100% rename from src/servers/Server_Zone/Actor/Social/Party.h rename to src/servers/Server_Zone/Social/Party.h