📄 triggerareahash.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 + -