2017-12-25 05:26:36 -02:00
|
|
|
#ifndef _SOCIALMGR_H
|
|
|
|
#define _SOCIALMGR_H
|
2017-11-21 17:01:05 +00:00
|
|
|
|
2018-03-09 09:50:35 -03:00
|
|
|
#include <Common.h>
|
|
|
|
|
2017-11-21 17:01:05 +00:00
|
|
|
#include <map>
|
|
|
|
#include <cstdint>
|
|
|
|
|
|
|
|
#include <boost/enable_shared_from_this.hpp>
|
2018-01-25 15:32:33 -02:00
|
|
|
#include <sapphire_zone/Forwards.h>
|
2017-12-21 03:45:56 -02:00
|
|
|
#include <Social/Group.h>
|
2017-11-21 17:01:05 +00:00
|
|
|
|
2018-03-05 22:07:41 -03:00
|
|
|
#include "Forwards.h"
|
|
|
|
|
2017-11-21 17:01:05 +00:00
|
|
|
namespace Core {
|
2017-12-07 17:28:55 -02:00
|
|
|
namespace Social {
|
2017-11-21 17:01:05 +00:00
|
|
|
|
2017-12-21 03:45:56 -02:00
|
|
|
template< class T >
|
|
|
|
class SocialMgr
|
2017-11-21 17:01:05 +00:00
|
|
|
{
|
2017-12-07 04:15:20 -02:00
|
|
|
public:
|
2018-03-05 22:07:41 -03:00
|
|
|
|
2017-12-21 03:45:56 -02:00
|
|
|
SocialMgr();
|
2018-03-09 12:09:05 -03:00
|
|
|
~SocialMgr();
|
2017-12-07 04:15:20 -02:00
|
|
|
|
2017-12-21 03:45:56 -02:00
|
|
|
T findGroupByInviteIdForPlayer( uint64_t playerId ) const;
|
|
|
|
T findGroupById( uint64_t groupId ) const;
|
2017-12-19 03:42:04 -02:00
|
|
|
/*
|
2017-12-21 03:45:56 -02:00
|
|
|
|
|
|
|
T findGroup( uint64_t groupId )
|
2017-12-19 03:42:04 -02:00
|
|
|
{
|
|
|
|
auto it = m_groups.find( groupId );
|
|
|
|
if ( it != m_groups.end() )
|
|
|
|
{
|
|
|
|
return it->second;
|
|
|
|
}
|
|
|
|
return nullptr;
|
|
|
|
}*/
|
2017-12-07 04:15:20 -02:00
|
|
|
|
2017-12-19 03:42:04 -02:00
|
|
|
bool hasInvite( uint64_t playerId ) const;
|
|
|
|
|
|
|
|
protected:
|
2017-12-21 03:45:56 -02:00
|
|
|
// 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 };
|
|
|
|
|
2018-03-09 12:09:05 -03:00
|
|
|
uint64_t m_groupCount;
|
2017-12-19 03:42:04 -02:00
|
|
|
std::map< uint64_t, uint64_t > m_invites;
|
|
|
|
|
2018-03-09 12:09:05 -03:00
|
|
|
uint64_t m_lastGroupId;
|
2017-12-19 03:42:04 -02:00
|
|
|
|
|
|
|
// < recipient, groupid >
|
2017-12-07 17:28:55 -02:00
|
|
|
//virtual GroupPtr createGroup( PlayerPtr pOwner ) = 0;
|
2017-11-21 17:01:05 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
friend virtual Core::Network::Packets::GamePacketPtr Core::Entity::Group::Group::addMember( PlayerPtr pSender, PlayerPtr pRecipient, uint64_t senderId = 0, uint64_t recipientId = 0 );
|
|
|
|
friend virtual Core::Network::Packets::GamePacketPtr Core::Entity::Group::Group::inviteMember( PlayerPtr pSender, PlayerPtr pRecipient, uint64_t senderId = 0, uint64_t recipientId = 0 );
|
|
|
|
friend virtual Core::Network::Packets::GamePacketPtr Core::Entity::Group::Group::removeMember( PlayerPtr pSender, PlayerPtr pRecipient, uint64_t senderId = 0, uint64_t recipientId = 0 );
|
|
|
|
friend virtual Core::Network::Packets::GamePacketPtr Core::Entity::Group::Group::kickMember( PlayerPtr pSender, PlayerPtr pRecipient, uint64_t senderId = 0, uint64_t recipientId = 0 );
|
|
|
|
friend virtual void sendPacketToMembers( Core::Network::Packets::GamePacketPtr pPacket, bool invitesToo = false );
|
|
|
|
|
|
|
|
friend virtual void load();
|
|
|
|
friend virtual void update();
|
|
|
|
friend virtual void disband();
|
2017-12-06 18:55:57 -02:00
|
|
|
*/
|
2017-11-21 17:01:05 +00:00
|
|
|
|
2018-03-09 12:09:05 -03:00
|
|
|
uint64_t generateGroupId();
|
|
|
|
std::map< uint64_t, T > m_groups;
|
2017-12-19 03:42:04 -02:00
|
|
|
|
|
|
|
private:
|
2018-03-09 12:09:05 -03:00
|
|
|
|
2017-12-19 03:42:04 -02:00
|
|
|
|
2017-11-21 17:01:05 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
2018-03-02 02:54:09 -03:00
|
|
|
};
|
2018-03-06 04:34:53 -03:00
|
|
|
#endif /* ! _SOCIALMGR_H */
|