1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-30 05:07:46 +00:00

Further changes to list type;

This commit is contained in:
Maru 2018-03-18 03:25:01 -03:00
parent 44d158e4e0
commit 9f8d4d9674
6 changed files with 28 additions and 21 deletions

View file

@ -497,7 +497,7 @@ void Core::Network::GameConnection::socialListHandler( const Packets::GamePacket
g_fw.get< Logger >()->debug( "aaa" + std::to_string( i ) ); g_fw.get< Logger >()->debug( "aaa" + std::to_string( i ) );
// todo: replace this with call for generating the entire vector // todo: replace this with call for generating the entire vector
listPacket.data().entries[i] = Core::Social::FriendList::generatePlayerEntry( member ); listPacket.data().entries[i] = playerFriendsList->generatePlayerEntry( member );
i++; i++;
} }

View file

@ -33,7 +33,7 @@ uint32_t FriendList::addMember( uint64_t contentId, FriendEntryType friendEntryT
uint32_t logMessage = 0; uint32_t logMessage = 0;
m_members.insert( contentId ); m_members.push_back( contentId );
FriendEntry friendEntry; FriendEntry friendEntry;
friendEntry.timestamp = std::time( nullptr ); friendEntry.timestamp = std::time( nullptr );
@ -41,12 +41,12 @@ uint32_t FriendList::addMember( uint64_t contentId, FriendEntryType friendEntryT
friendEntry.entryStatus = friendEntryType; friendEntry.entryStatus = friendEntryType;
friendEntry.unknown = 0; friendEntry.unknown = 0;
m_entries.insert( friendEntry ); m_entries.push_back( friendEntry );
return logMessage; return logMessage;
} }
std::set< FriendEntry >& FriendList::getEntries() std::vector< FriendEntry >& FriendList::getEntries()
{ {
return m_entries; return m_entries;
} }
@ -101,13 +101,16 @@ std::vector< PlayerEntry > FriendList::getFriendListEntries( uint16_t entryAmoun
//todo: generalize this for linkshell etc //todo: generalize this for linkshell etc
Core::Network::Packets::Server::PlayerEntry FriendList::generatePlayerEntry( uint64_t contentId ) Core::Network::Packets::Server::PlayerEntry FriendList::generatePlayerEntry( uint64_t contentId )
{ {
// We check if player is online. If so, we can pull data from existing session in memory // Correlate our contentID with the PlayerEntry map, based on index
// Otherwise, we pull from SQL. We can optimize this later, there are quite a few choices here // can probably optimize using std::set and doing something funky with pointers
auto pSession = g_fw.get< ServerZone >()->getSession( contentId ); std::vector< uint64_t >::iterator it;
auto dataIndex = m_members.find( contentId ); it = std::find( m_members.begin(), m_members.end(), contentId );
auto friendEntry = m_entries;
auto dataIndex = std::distance( m_members.begin(), it );
auto friendEntry = m_entries.at( dataIndex );
// todo: set as offline in one of the unknown values, if session does not exist // todo: set as offline in one of the unknown values, if session does not exist
Core::Network::Packets::Server::PlayerEntry entry = {}; Core::Network::Packets::Server::PlayerEntry entry = {};
@ -123,7 +126,12 @@ Core::Network::Packets::Server::PlayerEntry FriendList::generatePlayerEntry( uin
entry.unavailable = 0; // unavailable (other world) entry.unavailable = 0; // unavailable (other world)
entry.one = 1; entry.one = 1;
if ( pSession ) // We check if player is online. If so, we can pull data from existing session in memory
// Otherwise, we pull from SQL. We can optimize this later, there are quite a few choices here
auto pSession = g_fw.get< ServerZone >()->getSession( contentId );
if( pSession )
{ {
auto pPlayer = pSession->getPlayer(); auto pPlayer = pSession->getPlayer();
//entry.contentId = pPlayer->getContentId(); //entry.contentId = pPlayer->getContentId();
@ -165,7 +173,6 @@ Core::Network::Packets::Server::PlayerEntry FriendList::generatePlayerEntry( uin
{ {
// Todo: Can we make PlayerSQL a static function and use it for this? // Todo: Can we make PlayerSQL a static function and use it for this?
auto name = res->getString( "Name" ); auto name = res->getString( "Name" );
strcpy( entry.name, name.c_str() ); strcpy( entry.name, name.c_str() );
//memcpy( entry.name, res->getString( "Name" ), strlen( pPlayer->getName().c_str() ) ); //memcpy( entry.name, res->getString( "Name" ), strlen( pPlayer->getName().c_str() ) );

View file

@ -45,7 +45,7 @@ public:
uint32_t addMember( uint64_t contentId, FriendEntryType friendEntryType ); uint32_t addMember( uint64_t contentId, FriendEntryType friendEntryType );
/*! access entry vector */ /*! access entry vector */
std::set< FriendEntry >& getEntries(); std::vector< FriendEntry >& getEntries();
protected: protected:
uint64_t m_id{ 0 }; uint64_t m_id{ 0 };

View file

@ -28,14 +28,14 @@ uint32_t Group::addMember( uint64_t contentId )
uint32_t logMessage = 0; uint32_t logMessage = 0;
m_members.insert( contentId ); m_members.push_back( contentId );
return logMessage; return logMessage;
} }
bool Group::hasMember( uint64_t contentId ) const bool Group::hasMember( uint64_t contentId ) const
{ {
return m_members.find( contentId ) != m_members.end(); return std::find( m_members.begin(), m_members.end(), contentId ) != m_members.end();
} }
Core::Network::Packets::GamePacketPtr Group::processInvite( uint64_t recipientId, uint64_t senderId ) Core::Network::Packets::GamePacketPtr Group::processInvite( uint64_t recipientId, uint64_t senderId )
@ -62,7 +62,7 @@ Core::Network::Packets::GamePacketPtr Group::processInvite( uint64_t recipientId
//m_groupInvites.erase( recipientId ); //m_groupInvites.erase( recipientId );
m_members.emplace( recipientId ); m_members.push_back( recipientId );
} }
else else
{ {
@ -167,7 +167,7 @@ void Group::sendPacketToMembers( Core::Network::Packets::GamePacketPtr pPacket,
std::set< uint64_t >& Group::getMembers() std::vector< uint64_t >& Group::getMembers()
{ {
return m_members; return m_members;
} }

View file

@ -65,7 +65,7 @@ public:
//virtual void populateGroupMembers(); //virtual void populateGroupMembers();
/*! access member vector */ /*! access member vector */
std::set< uint64_t >& getMembers(); std::vector< uint64_t >& getMembers();
/*! get container limit */ /*! get container limit */
uint32_t getCapacity() const; uint32_t getCapacity() const;

View file

@ -137,7 +137,7 @@ uint64_t Core::Social::SocialMgr< Core::Social::FriendList >::loadFriendsList( u
// todo: fix this garbage check // todo: fix this garbage check
if( list.at( 0 ) != 0 ) if( list.at( 0 ) != 0 )
{ {
friendsList.getMembers().insert( list.begin(), list.end() ); friendsList.getMembers() = list;
} }
} }
@ -148,9 +148,9 @@ uint64_t Core::Social::SocialMgr< Core::Social::FriendList >::loadFriendsList( u
if( inviteData.size() ) if( inviteData.size() )
{ {
std::vector< Social::FriendEntry > list( friends.size() / 8 ); std::vector< Social::FriendEntry > invList( friends.size() / 8 );
friendsList.getEntries().insert( list.begin(), list.end() ); friendsList.getEntries() = invList;
} }
auto friendListPtr = boost::make_shared< Social::FriendList >( friendsList ); auto friendListPtr = boost::make_shared< Social::FriendList >( friendsList );