📄 worldguildmanager.cpp
字号:
#include "StdAfx.h"
#include "WorldGuildmanager.h"
#include "WorldGuild.h"
#include "WorldGuildMember.h"
#include "WorldGuild.h"
#include "User.h"
#include <PacketStruct_WZ.h>
#include <PacketSTruct_CW.h>
WorldGuildManager g_WorldGuildManager;
WorldGuildManager::WorldGuildManager(void)
{
m_GuildHash.Initialize(MAX_GUILD_POOL_NUM);
}
WorldGuildManager::~WorldGuildManager(void)
{
Release();
}
VOID WorldGuildManager::Release()
{
for( GUILD_HASH_ITR it = m_GuildHash.begin() ; it != m_GuildHash.end() ; ++it )
{
(*it)->Destroy();
WorldGuild::FREE( (*it) );
}
}
RC::eGUILD_RESULT WorldGuildManager::SelectGuildInfo( User * pUser, PACKET_FOR_GUILD & OUT rGuildInfo )
{
GUILDGUID GuildGuid = pUser->GetGuildGuid();
if( 0 == GuildGuid )
return RC::RC_GUILD_CANNOT_SELECT_GUILD_STATE;
WorldGuild * pGuild = FindGuild( GuildGuid );
if( !pGuild ) return RC::RC_GUILD_CANNOT_SELECT_GUILD_STATE;
pGuild->SelectInfo( rGuildInfo );
return RC::RC_GUILD_SUCCESS;
}
// 1. 辨靛秦魂阑 脚没茄 捞啊 辨靛付胶磐具 茄促
// 2. 泅犁 辨靛郴俊 辨靛盔捞 辨靛付胶磐 1疙挥捞绢具 茄促
// 3. 傍己傈俊辑 铰府窍咯 荐己阑窍绊 乐瘤 臼篮 辨靛咯具 茄促.
RC::eGUILD_RESULT WorldGuildManager::DestroyGuild( User * pUser )
{
GUILDGUID GuildGuid = pUser->GetGuildGuid();
if( 0 == GuildGuid )
return RC::RC_GUILD_CANNOT_DESTROY_STATE;
WorldGuild * pGuild = FindGuild( GuildGuid );
if( !pGuild ) return RC::RC_GUILD_INVALID_STATE;
if( pGuild->GetMasterCharGuid() != pUser->GetCharGuid() )
return RC::RC_GUILD_CANNOT_DESTROY_NOT_MASTER_STATE;
if( 1 != pGuild->GetMemberNum() )
return RC::RC_GUILD_CANNOT_DESTROY_EXIST_MEMBER_STATE;
/*
MSG_GZ_GUILD_DESTROY_GUILD_SYN msg;
msg.m_GuildGuid = GuildGuid;
msg.m_MasterCharGuid = pUser->GetCharGuid();
pUser->SendToGuildServer( &msg, sizeof(msg) );
*/
return RC::RC_GUILD_SUCCESS;
}
VOID WorldGuildManager::OnAddGuild( const BASE_GUILD_INFO & IN rInfo, const GUILD_MEMBER_INFO * pMemberInfo, BYTE MemberCount )
{
ASSERT( !FindGuild(rInfo.m_GuildGuid) );
WorldGuild * pGuild = WorldGuild::ALLOC();
pGuild->Create( rInfo, pMemberInfo, MemberCount );
AddGuild( pGuild, pGuild->GetGuildGuid() );
}
VOID WorldGuildManager::OnDestroyGuild( GUILDGUID GuildGuid )
{
WorldGuild * pGuild = FindGuild( GuildGuid );
ASSERT( pGuild );
RemoveGuild( pGuild->GetGuildGuid() );
pGuild->Destroy();
WorldGuild::FREE( pGuild );
}
VOID WorldGuildManager::OnWithdrawGuild( GUILDGUID GuildGuid, CHARGUID CharGuid )
{
WorldGuild * pGuild = FindGuild( GuildGuid );
ASSERT( pGuild );
pGuild->Withdraw(CharGuid);
}
VOID WorldGuildManager::OnJoinGuild( GUILDGUID GuildGuid, const GUILD_MEMBER_INFO & IN rMemberInfo )
{
WorldGuild * pGuild = FindGuild( GuildGuid );
ASSERT( pGuild );
pGuild->Join(rMemberInfo);
}
VOID WorldGuildManager::OnLoginGulid( User* pUser, GUILDGUID GuildGuid )
{
// 辨靛 茫绊
WorldGuild* pGuild = FindGuild( GuildGuid );
if( !pGuild ) return;
// 辨靛 糕滚变 窍衬?
WorldGuildMember *pMember = pGuild->FindMember( pUser->GetCharGuid() );
if( !pMember ) return;
// 柯扼牢 糕滚肺 殿废!
pGuild->AddOnlineMember( pUser, pUser->GetCharGuid() );
// 舅妨霖促
MSG_CW_GUILD_LOGIN_CHAR_BRD sendMsg;
memset( sendMsg.m_tszCharName, 0, sizeof(TCHAR) * MAX_CHARNAME_LENGTH );
_tcsncpy( sendMsg.m_tszCharName, pUser->GetCharName().c_str(), MAX_CHARNAME_LENGTH - 1 );
pGuild->SendAll( (BYTE*)&sendMsg, sizeof(sendMsg) );
}
VOID WorldGuildManager::OnLogoutGuild( User* pUser, GUILDGUID GuildGuid )
{
// 辨靛 茫绊
WorldGuild* pGuild = FindGuild( GuildGuid );
if( !pGuild ) return;
// 辨靛 糕滚变 窍衬?
WorldGuildMember *pMember = pGuild->FindMember( pUser->GetCharGuid() );
if( !pMember ) return;
// 柯扼牢 糕滚俊辑 昏力!
pGuild->RemoveOnlineMember( pUser->GetCharGuid() );
// 舅妨霖促
MSG_CW_GUILD_LOGIN_CHAR_BRD sendMsg;
memset( sendMsg.m_tszCharName, 0, sizeof(TCHAR) * MAX_CHARNAME_LENGTH );
_tcsncpy( sendMsg.m_tszCharName, pUser->GetCharName().c_str(), MAX_CHARNAME_LENGTH - 1 );
pGuild->SendAll( (BYTE*)&sendMsg, sizeof(sendMsg) );
}
VOID WorldGuildManager::DisplayerGuildInfo()
{
DWORD dwNum = 0;
for( GUILD_HASH_ITR it = m_GuildHash.begin() ; it != m_GuildHash.end() ; ++it )
{
dwNum += (*it)->GetMemberNum();
}
DISPMSG( "Guild : %u, GuildMember : %u\n", m_GuildHash.GetDataNum(), dwNum );
}
VOID WorldGuildManager::SendGuildMessage( BYTE* pMsg, WORD wSize )
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -