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

📄 party.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 H
字号:
#ifndef __PARTY_H__
#define __PARTY_H__

#pragma once

#include <SolarHashTable.h>

struct MSG_BASE_FORWARD;
class Player;
struct PARTY_MEMBER_INFO;


class Party
{
	friend class PartyManager;
public:
	Party();
	~Party();

	VOID					Init( DWORD dwMasterUserKey );

	BOOL					Join( Player * pPlayer );
	BOOL					Leave( DWORD dwObjKey );
	VOID					ChangeMaster( DWORD dwNewMasterUserKey );

	inline VOID				SetPartyKey( WORD wPartyKey )	{ m_wPartyKey = wPartyKey; }
	inline WORD				GetPartyKey()		{ return m_wPartyKey; }
	inline DWORD			GetMasterUserKey()	{ return m_dwMasterUserKey; }
	inline DWORD			GetMasterObjKey()	{ return m_dwMasterObjKey; }
	inline DWORD			GetMemberNum()		{ return m_pMemberHashTable->GetDataNum(); }
	inline LEVELTYPE		GetTotalLevel()		{ return m_dwTotalLevel; }

	DWORD					FindNextMaster();

	Player*					GetMemberInfo( char *pszName );
	Player*					GetMemberInfo( DWORD dwObjKey )		{ return m_pMemberHashTable->GetData( dwObjKey ); }
	VOID					GetMemberInfoAll( PARTY_MEMBER_INFO *pMemberInfoAll );

	VOID					SetDistributionType( eITEM_DISTRIBUTION_TYPE eType )	{ m_eDistributionType = eType; }
	eITEM_DISTRIBUTION_TYPE	GetDistributionType()	{ return m_eDistributionType; }

	BOOL					SendPacketAll( MSG_BASE_FORWARD * pMsg, WORD wSize );
	BOOL					SendPacketExceptMe( DWORD dwObjKey, MSG_BASE_FORWARD * pMsg, WORD wSize );
	VOID					MemberLevelUp( DWORD dwObjKey );

	template <class MemberOperator>
	VOID					ForEachMember( MemberOperator & Opr );

	inline VOID				SetTargetObjKeyOfParty( DWORD dwObjKey )	{ m_dwTargetObjKeyOfParty = dwObjKey; }
	inline DWORD			GetTargetObjKeyOfParty()					{ return m_dwTargetObjKeyOfParty; }

private:
	BOOL					CanJoin( DWORD dwObjKey );
	VOID					SetNpcHpOfField();

private:
	WORD 							m_wPartyKey;				// 颇萍虐
	DWORD							m_dwMasterUserKey;			// 颇萍厘 蜡历虐
	DWORD							m_dwMasterObjKey;			// 颇萍厘 坷宏璃飘虐
	SolarHashTable<Player *> *		m_pMemberHashTable;			// 颇萍盔 府胶飘

	LEVELTYPE						m_dwTotalLevel;				// 颇萍盔 配呕 饭骇
	eITEM_DISTRIBUTION_TYPE			m_eDistributionType;		// 酒捞袍 盒硅规侥
	DWORD							m_dwTargetObjKeyOfParty;	// 颇萍狼 鸥百 坷宏璃飘虐
};

template<class MemberOperator>
VOID Party::ForEachMember( MemberOperator & Opr )
{
	Player * pMember = NULL;
	m_pMemberHashTable->SetFirst();
	while( ( pMember = m_pMemberHashTable->GetNext() ) != NULL )
	{
		Opr( pMember );
	}
}


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -