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

📄 worldguild.cpp

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