📄 worldguild.cpp
字号:
#include "StdAfx.h"
#include ".\WorldGuild.h"
#include ".\WorldGuildMember.h"
#include <Struct.h>
// SendAll()锭巩
#include "User.h"
#include "UserManager.h"
__IMPL_GUILDPOOL(WorldGuild)
WorldGuild::WorldGuild(void)
{
m_MemberHash.Initialize(_MAX_GUILDMEMBER_NUM);
m_OnlineMemberHash.Initialize(_MAX_GUILDMEMBER_NUM);
}
WorldGuild::~WorldGuild(void)
{
Destroy();
}
VOID WorldGuild::GetMemberPacketInfo( BYTE &byCount, PACKET_FOR_GUILD_MEMBER *pMember )
{
byCount = 0;
for( GUILDMEMBER_HASH_ITR it = m_MemberHash.begin(); it != m_MemberHash.end(); ++it )
{
(*it)->GetPacketInfo( pMember[byCount] );
byCount++;
}
}
VOID WorldGuild::SendAll( BYTE* pSendMsg, WORD wSize )
{
User* pUser;
for( GUILDONLINEMEMBER_HASH_ITR it = m_OnlineMemberHash.begin() ; it != m_OnlineMemberHash.end() ; ++it )
{
pUser = (*it);
if( pUser )
{
pUser->Send( pSendMsg, wSize );
}
}
}
VOID WorldGuild::Destroy()
{
for( GUILDMEMBER_HASH_ITR it = m_MemberHash.begin() ; it != m_MemberHash.end() ; ++it )
{
(*it)->Release();
WorldGuildMember::FREE((*it));
}
m_MemberHash.RemoveAll();
// for( GUILDONLINEMEMBER_HASH_ITR itOnline = m_OnlineMemberHash.begin() ; itOnline != m_OnlineMemberHash.end() ; ++itOnline )
// {
// (*itOnline)->Release();
// }
m_OnlineMemberHash.RemoveAll();
}
VOID WorldGuild::SelectInfo( PACKET_FOR_GUILD & OUT rGuildInfo )
{
memset( rGuildInfo.m_tszGuildName, 0, sizeof(TCHAR) * MAX_GUILDNAME_LENGTH );
_tcsncpy( rGuildInfo.m_tszGuildName, m_Info.m_tszGuildName, MAX_GUILDNAME_LENGTH - 1 );
rGuildInfo.m_GuildGrade = m_Info.m_GuildGrade;
//m_MarkBinary[MAX_GUILDMARKSTREAM_SIZE];
rGuildInfo.m_MasterCharGuid = m_Info.m_MasterCharGuid;
memcpy( rGuildInfo.m_tszMasterCharName, m_Info.m_tszMasterCharName, MAX_CHARNAME_LENGTH*sizeof(TCHAR) );
rGuildInfo.m_GuildPoint = m_Info.m_GuildPoint;
rGuildInfo.m_UserPoint = m_Info.m_UserPoint;
rGuildInfo.m_RestrictedRight = m_Info.m_RestrictedRight;
rGuildInfo.m_GuildMoney = m_Info.m_GuildMoney;
rGuildInfo.m_GuildMemberNum = GetMemberNum();
}
VOID WorldGuild::Create( const BASE_GUILD_INFO & IN rInfo, const GUILD_MEMBER_INFO * pMemberInfo, BYTE MemberCount )
{
memcpy( &m_Info, &rInfo, sizeof(BASE_GUILD_INFO) );
for( int i = 0 ; i < MemberCount ; ++i )
{
ASSERT( !FindMember( pMemberInfo[i].m_CharGuid ) );
WorldGuildMember * pMember = WorldGuildMember::ALLOC();
pMember->Init(pMemberInfo[i]);
AddMember( pMember, pMember->GetCharGuid() );
}
}
VOID WorldGuild::Withdraw( CHARGUID CharGuid )
{
WorldGuildMember * pMember = FindMember(CharGuid);
ASSERT(pMember);
RemoveMember( CharGuid );
WorldGuildMember::FREE(pMember);
}
VOID WorldGuild::Join( const GUILD_MEMBER_INFO & IN rMemberInfo )
{
WorldGuildMember * pMember = WorldGuildMember::ALLOC();
pMember->Init(rMemberInfo);
AddMember( pMember, pMember->GetCharGuid() );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -