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

📄 triggerareahash.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 H
字号:
#pragma once
//=============================================================================================================================
/// TriggerAreaHash class
/**
	@author	Kim Min Wook < taiyo@webzen.com >
	@since	2004. 12. 29
	@remark
		- 飘府芭狼 康开俊 措茄 炼扒阑 俺充 盒府窍咯 贸府窍扁 困茄 努贰胶
	@note
		- 
	@history 
		- 
*/
//=============================================================================================================================

#include <SolarHashTable.h>
#include "TriggerCommon.h"

class TriggerAreaHash
{
	typedef util::SolarHashTable<DWORD>::iterator	A_ITERATOR;
public:
	TriggerAreaHash(void);
	~TriggerAreaHash(void);

	VOID			Init();

	//--------------------------------------------------------------------------------
	DWORD			FindPlayer(DWORD UserKey);
	VOID			LeaveArea(DWORD UserKey);
	VOID			EnterArea(DWORD UseRKey);
	DWORD			GetPlayerNum() { return m_AreaEnteredPlayerHash.GetDataNum();	}
	template <class ObjectOperator>
	VOID			For_Each( ObjectOperator & Opr );
	//BOOL			CheckValidPlayer();
	//--------------------------------------------------------------------------------
	__DECLARE_POOL( TriggerAreaHash )
private:
	util::SolarHashTable<DWORD>	m_AreaEnteredPlayerHash;
};



template <class ObjectOperator>
VOID TriggerAreaHash::For_Each( ObjectOperator & Opr )
{
	DWORD UserKey = 0;
	for( A_ITERATOR itr = m_AreaEnteredPlayerHash.begin() ; itr != m_AreaEnteredPlayerHash.end() ; ++itr )
	{
		UserKey = *itr;
		if( !Opr( UserKey ) )
		{
			m_AreaEnteredPlayerHash.erase(itr);
		}
		/*
		Player * pPlayer = PlayerManager::Instance()->FindPlayer(UserKey);
		if( pPlayer &&  pPlayer->GetField() )
			Opr( pPlayer );
		else
			m_AreaEnteredPlayerHash.erase(itr);
		*/
	}
}

⌨️ 快捷键说明

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