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:
parent
439c4cadf6
commit
434b483ef5
4 changed files with 118 additions and 20 deletions
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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 */
|
Loading…
Add table
Reference in a new issue