1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-24 18:47:45 +00:00

stub some group manager stuff

This commit is contained in:
Tahir Akhlaq 2017-11-21 17:01:05 +00:00
parent 439c4cadf6
commit 434b483ef5
4 changed files with 118 additions and 20 deletions

View file

@ -48,7 +48,6 @@ Core::Network::Packets::GamePacketPtr Core::Entity::Group::Group::addMember( Pla
member.role = 0;
member.pPlayer = pRecipient;
m_members.emplace( recipientId, member );
reload();
}
else
{
@ -72,12 +71,37 @@ void Core::Entity::Group::Group::sendPacketToMembers( Core::Network::Packets::Ga
}
}
void Core::Entity::Group::Group::reload()
bool Core::Entity::Group::Group::isParty() const
{
m_reloadGroup = true;
return m_type == GroupType::Party;
}
bool Core::Entity::Group::Group::canReload() const
bool Core::Entity::Group::Group::isFriendList() const
{
return m_reloadGroup;
return m_type == GroupType::FriendList;
}
bool Core::Entity::Group::Group::isFreeCompany() const
{
return m_type == GroupType::FreeCompany;
}
bool Core::Entity::Group::Group::isLinkshell() const
{
return m_type == GroupType::Linkshell;
}
bool Core::Entity::Group::Group::isFreeCompanyPetition() const
{
return m_type == GroupType::FreeCompanyPetition;
}
bool Core::Entity::Group::Group::isBlacklist() const
{
return m_type == GroupType::Blacklist;
}
bool Core::Entity::Group::Group::isContentGroup() const
{
return m_type == GroupType::ContentGroup;
}

View file

@ -13,6 +13,9 @@ namespace Core {
namespace Entity {
namespace Group {
class Group;
using GroupPtr = boost::shared_ptr< Group >;
struct GroupMember
{
uint64_t inviterId;
@ -24,7 +27,7 @@ enum class GroupType : uint8_t
{
None,
Party,
Friends,
FriendList,
FreeCompany,
Linkshell,
@ -44,19 +47,7 @@ private:
time_point m_createTime{ std::chrono::steady_clock::now() };
std::map< uint64_t, GroupMember > m_members;
std::map< uint64_t, uint64_t > m_invites; // <recipient, sender>
bool m_reloadGroup;
void addMember( uint64_t senderId = 0, uint64_t recipientId = 0 );
void inviteMember( uint64_t senderId, uint64_t recipientId = 0 );
void removeMember( uint64_t id = 0 );
public:
Group( uint64_t id, uint64_t ownerId, uint32_t maxCapacity, time_point createTime ) :
m_id( id ), m_ownerId( m_ownerId ), m_maxCapacity( maxCapacity ), m_createTime( createTime ){};
~Group(){};
virtual void load() = 0;
virtual void update() = 0;
virtual void disband() = 0;
virtual Core::Network::Packets::GamePacketPtr addMember( PlayerPtr pSender, PlayerPtr pRecipient, uint64_t senderId = 0, uint64_t recipientId = 0 );
virtual Core::Network::Packets::GamePacketPtr inviteMember( PlayerPtr pSender, PlayerPtr pRecipient, uint64_t senderId = 0, uint64_t recipientId = 0 );
@ -64,8 +55,21 @@ public:
virtual Core::Network::Packets::GamePacketPtr kickMember( PlayerPtr pSender, PlayerPtr pRecipient, uint64_t senderId = 0, uint64_t recipientId = 0 );
virtual void sendPacketToMembers( Core::Network::Packets::GamePacketPtr pPacket, bool invitesToo = false );
void reload();
bool canReload() const;
virtual void load();
virtual void update();
virtual void disband();
public:
Group( uint64_t id, uint64_t ownerId, uint32_t maxCapacity, time_point createTime ) :
m_id( id ), m_ownerId( m_ownerId ), m_maxCapacity( maxCapacity ), m_createTime( createTime ){};
~Group(){};
bool isParty() const;
bool isFriendList() const;
bool isFreeCompany() const;
bool isLinkshell() const;
bool isFreeCompanyPetition() const;
bool isBlacklist() const;
bool isContentGroup() const;
};
}

View file

@ -0,0 +1,22 @@
#include "../Group.h"
#include "GroupMgr.h"
Core::Entity::Group::GroupPtr Core::Entity::Group::GroupMgr::findGroupByInviteIdForPlayer( uint64_t playerId ) const
{
auto it = m_invites.find( playerId );
if( it != m_invites.end() )
{
return findGroupById( it->second );
}
return nullptr;
}
Core::Entity::Group::GroupPtr Core::Entity::Group::GroupMgr::findGroupById( uint64_t groupId ) const
{
auto it = m_groups.find( groupId );
if( it != m_groups.end() )
{
return it->second;
}
return nullptr;
}

View file

@ -0,0 +1,48 @@
#ifndef _GROUPMGR_H
#define _GROUPMGR_H
#include <map>
#include <cstdint>
#include <boost/enable_shared_from_this.hpp>
#include <Server_Zone/Forwards.h>
#include <Server_Zone/Actor/Group/Group.h>
namespace Core {
namespace Entity {
namespace Group {
class GroupMgr : public boost::enable_shared_from_this< GroupMgr >
{
private:
GroupType m_type{ GroupType::None };
uint64_t m_groupCount{ 0 };
uint32_t m_maxEntries{ 0xFFFFFFFF };
std::map< uint64_t, GroupPtr > m_groups;
std::map< uint64_t, uint64_t > m_invites; // < recipient, groupid >
virtual GroupPtr createGroup( PlayerPtr pOwner ) = 0;
/*
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();
//*/
public:
GroupMgr( GroupType type, uint32_t maxEntries ) :
m_type( type ), m_maxEntries( maxEntries ){};
~GroupMgr(){};
GroupPtr findGroupByInviteIdForPlayer( uint64_t playerId ) const;
GroupPtr findGroupById( uint64_t groupId ) const;
};
}
}
};
#endif /* ! _GROUPMGR_H */