⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 worldguildmanager.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 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 + -