mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-25 02:57: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.role = 0;
|
||||||
member.pPlayer = pRecipient;
|
member.pPlayer = pRecipient;
|
||||||
m_members.emplace( recipientId, member );
|
m_members.emplace( recipientId, member );
|
||||||
reload();
|
|
||||||
}
|
}
|
||||||
else
|
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 Entity {
|
||||||
namespace Group {
|
namespace Group {
|
||||||
|
|
||||||
|
class Group;
|
||||||
|
using GroupPtr = boost::shared_ptr< Group >;
|
||||||
|
|
||||||
struct GroupMember
|
struct GroupMember
|
||||||
{
|
{
|
||||||
uint64_t inviterId;
|
uint64_t inviterId;
|
||||||
|
@ -24,7 +27,7 @@ enum class GroupType : uint8_t
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
Party,
|
Party,
|
||||||
Friends,
|
FriendList,
|
||||||
FreeCompany,
|
FreeCompany,
|
||||||
Linkshell,
|
Linkshell,
|
||||||
|
|
||||||
|
@ -44,19 +47,7 @@ private:
|
||||||
time_point m_createTime{ std::chrono::steady_clock::now() };
|
time_point m_createTime{ std::chrono::steady_clock::now() };
|
||||||
std::map< uint64_t, GroupMember > m_members;
|
std::map< uint64_t, GroupMember > m_members;
|
||||||
std::map< uint64_t, uint64_t > m_invites; // <recipient, sender>
|
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 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 );
|
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 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 );
|
virtual void sendPacketToMembers( Core::Network::Packets::GamePacketPtr pPacket, bool invitesToo = false );
|
||||||
|
|
||||||
void reload();
|
virtual void load();
|
||||||
bool canReload() const;
|
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